Я пытаюсь создать счет на покупку:
PurchseInvoice_Service pis = new PurchseInvoice_Service();
PurchseInvoice pi = new PurchseInvoice();
pis.Create(ref pi);
pi.Buy_from_Vendor_No = "40000";
pi.Currency_Code = "EUR";
pi.Location_Code = "GREEN";
pis.Update(ref pi);
pi.PurchLines = new Purch_Invoice_Line[1];
pi.PurchLines[0] = new Purch_Invoice_Line();
pi.PurchLines[0].Type = PurchaseInvoice.Type.Item;
pi.PurchLines[0].No = "LS-150";
pi.PurchLines[0].Quantity = 1;
pi.PurchLines[0].Unit_of_Measure_Code = "PCS";
pi.PurchLines[0].Line_Amount = 1;
pis.Update(ref pi);
И я получаю SoapException
с сообщением в последней строке:
Стандартный текстовый код «LS-150» не существует.
Я сильно запутался, этот код товара используется в заказе на покупку, и я вижу его в списке товаров. Так почему я не могу использовать его здесь? Это должно работать, на мой взгляд. Я даже могу получить доступ к этому текстовому идентификатору из объекта 'PostOrder
':
Console.WriteLine( po.PurchLines[1].No );
Output is : LS-150
Я использую Dynamics NAV 2009 R2
с приложением DEMO
для компании "CRONUS International Ltd.
" - может в этом моя проблема?
КСТАТИ. Что за история с этими постоянными тайм-аутами SQL Server? Почему я могу создать PurchaseInvoice
, которые не могут быть удалены из-за отсутствия и не могут быть обновлены из-за неправильного формата, но я могу их хорошо читать? Разве веб-сервисы не должны быть «безопасным способом доступа к приложению»?
РЕШЕНИЕ:
Решение состояло в том, чтобы добавить одну строку обновления:
....
pi.PurchLines[0] = new Purch_Invoice_Line();
pis.Update(ref pi);
pi.PurchLines[0].Type = PurchaseInvoice.Type.Item;
....
Благодаря @uncommonsense.