Индекс веб-службы MS DynamicsNAV вне границ
Привет! У меня проблемы с веб-службой Microsoft Dynamics NAV 2009 R2!
Существует заданный веб-метод с именем OrderGoodsInsert, для которого необходимы параметры lLanguageId [int], lRec [Text 250] [100]
lRec должен быть строковым массивом со значениями, такими как эти
- "Тип документа"
- "Документ №."
- "Строка №" - (пусто при создании)
- "Вставить пользователя"
- "Изменить пользователя"
- "Тип" [0 - „, 1 - Основной счет, 2 - Предмет, 3 - Ресурс, 4 - Фиксированный актив, 5 - Заряд (Предмет)]
- "Нет." - код изделия
- Количество
Используя код на 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.