Индекс веб-службы MS DynamicsNAV вне границ

Привет! У меня проблемы с веб-службой Microsoft Dynamics NAV 2009 R2!

Существует заданный веб-метод с именем OrderGoodsInsert, для которого необходимы параметры lLanguageId [int], lRec [Text 250] [100]

lRec должен быть строковым массивом со значениями, такими как эти

  1. "Тип документа"
  2. "Документ №."
  3. "Строка №" - (пусто при создании)
  4. "Вставить пользователя"
  5. "Изменить пользователя"
  6. "Тип" [0 - „, 1 - Основной счет, 2 - Предмет, 3 - Ресурс, 4 - Фиксированный актив, 5 - Заряд (Предмет)]
  7. "Нет." - код изделия
  8. Количество

Используя код на C#, я пытаюсь вызвать метод, который добавляется в качестве ссылки на веб-сервис в мой проект. Код:

string[] arr = new string[8];
arr[0] = "1";
arr[1] = currentDocNo;
arr[3] = "SU04";
arr[5] = "2";
arr[6] = item.Code;
arr[7] = item.Amount;
arr[2] = "";
arr[4] = "";

navWS.OrderGoodsInsert(1062, arr);

Но когда я получаю

A first chance exception of type 'System.Net.WebException' 
occurred in System.dll
A first chance exception of type 'System.Web.Services.Protocols.SoapException'
occurred in System.Web.Services.dll

Ошибка в том что index out of bounds

Я делаю что-то неправильно?

2 ответа

Решение

Проблема заключалась в том, что разработчик WS внес изменения и не отправил новую документацию. Еще одна строка была необходима в массиве, который представлял полку, на которой находится элемент.

Ваш OrderGoodsInsert метод выглядит в определении SOAP следующим образом

<sequence>
  <element minOccurs="1" maxOccurs="1" name="lLanguageId" type="int"/>
  <element minOccurs="1" maxOccurs="unbounded" name="lRec" type="string"/>
</sequence>

Так что он ожидает string для переменной lRec и не string[],

Попробуйте преобразовать массив в одну строку с разделителем.

navWS.OrderGoodsInsert(1062, string.Join(";", arr));

Но я не уверен, какой из них является правильным разделителем для NAV WebServices.

Другие вопросы по тегам