C# Dynamics nav 2009 RE:SoapException:标准项目代码';foo';不存在

C# Dynamics nav 2009 RE:SoapException:标准项目代码';foo';不存在,c#,web-services,visual-studio,dynamics-nav,soapexception,C#,Web Services,Visual Studio,Dynamics Nav,Soapexception,我正在尝试创建采购发票: 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.PurchL

我正在尝试创建采购发票:

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
”对象访问此文本ID:

Console.WriteLine( po.PurchLines[1].No );

Output is : LS-150
我将
Dynamics NAV 2009 R2
DEMO
应用程序一起用于“
CRONUS International Ltd.
”公司-也许这就是我的问题所在

顺便问一下,SQL Server持续超时的原因是什么?为什么我可以创建
PurchaseInvoice
,由于不存在而无法删除,由于格式错误而无法更新,但我可以很好地阅读它们?web服务不应该是“访问应用程序的安全方式”吗

解决方案:

解决方案是添加一个更新行:

....           
pi.PurchLines[0] = new Purch_Invoice_Line();
pis.Update(ref pi);
pi.PurchLines[0].Type = PurchaseInvoice.Type.Item;
....

感谢@uncommonsense.

确保将采购行的类型字段也设置为选项值“Item”。默认选项值“”(空白)表示采购行是文本行,在这种情况下,“No.”字段可用于查找标准文本(从NAV的角度来看,这是您上面的代码正在执行的操作,因此会显示错误消息)。

谢谢,我添加了一行(我忘记从代码中复制)。你说的是哪种期权价值?我很想改变它,但我不确定你指的是什么。我尝试了
pi.PurchLines[0]。Type=PurchaseInvoice.Type.\u blank\u
pi.PurchLines[0]。Type=PurchaseInvoice.Type.Item
,但仍然存在相同的异常和相同的消息。有什么想法吗?:)我不明白的是如何在PurchaseInvoice级别定义Type.Item?我想它应该来自PurchaseInvoiceLine级别?也许,作为一个测试,您可以通过值2作为购买行的类型吗?(因为从零开始的选项字符串是“总账账户、项目、固定资产、费用(项目)”)。PurchaseInvoiceLine没有这样的成员,并且此类型的对象具有字段
类型
,它是
PurchaseInvoice。类型
-我也很奇怪。。。我现在转换了
pi.PurchLines[0].Type=(PurchaseInvoice.Type)2
,结果是一样的。我也试过其他整数。没有任何影响…感谢您的时间:)我解决了这个问题,在创建新的
Purchase\u Invoice\u line
之后,在设置
No
字段之前,又添加了一行update。这对我来说没有任何意义,但有效:)再次感谢。