[英]C# with NAV Dynamics web services inserting enum type object
假设我有 NAV 动态的网络服务
在 Web 服务内部有一些业务对象,其中之一是枚举类型
public Type Type {
get {
return this.typeField;
}
set {
this.typeField = value;
}
}
并具有以下对象的值,这些对象也包含在 Web 服务中
public enum Type{
/// <remarks/>
_blank_,
/// <remarks/>
G_L_Account,
/// <remarks/>
Item,
/// <remarks/>
Fixed_Asset,
/// <remarks/>
Charge_Item,
}
情况是在下面执行此方法时
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net;
using NAVDomain;
using System.Configuration;
using System.Data;
using System.Data.SqlClient;
using LocalDomain;
using NAVFacade.GoodReturnNAVService;
public bool SaveData(PurchCrdMemoNav objHd, List<Purch_Cr_Memo_Line> objDt)
{
PurchCrdMemoNav_Service service = new PurchCrdMemoNav_Service();
NetworkCredential cred = new NetworkCredential();
try
{
cred.UserName = ConfigurationManager.AppSettings["NAVUser3"];
cred.Password = ConfigurationManager.AppSettings["NAVPassword3"];
cred.Domain = ConfigurationManager.AppSettings["NAVDataSource3"];
service.Credentials = cred;
PurchCrdMemoNav DataSave = new PurchCrdMemoNav();
DataSave.No = objHd.No;
service.Create(ref DataSave);
var purch = service.Read(objHd.No);
DataSave.Buy_from_Vendor_No = objHd.Buy_from_Vendor_No;
DataSave.Buy_from_Vendor_Name = objHd.Buy_from_Vendor_Name;
DataSave.Applies_to_Doc_Type = objHd.Applies_to_Doc_Type;
DataSave.Applies_to_Doc_No = objHd.Applies_to_Doc_No;
DataSave.Location_Code = objHd.Location_Code;
DataSave.Posting_Date = objHd.Posting_Date;
DataSave.Key = purch.Key;
service.Update(ref DataSave);
DataSave.PurchLines = new Purch_Cr_Memo_Line[objHd.PurchLines.Count()];
for (int i = 0; i < objHd.PurchLines.Count(); i++)
{
DataSave.PurchLines[i] = new Purch_Cr_Memo_Line();
DataSave.PurchLines[i].Document_Type = Document_Type.Credit_Memo;
DataSave.PurchLines[i].Document_No = objHd.No;
DataSave.PurchLines[i].Type = NAVFacade.GoodReturnNAVService.Type.Item;
DataSave.PurchLines[i].No = objHd.PurchLines[i].No;
DataSave.PurchLines[i].Description = objHd.PurchLines[i].Description;
DataSave.PurchLines[i].Unit_of_Measure = objHd.PurchLines[i].Unit_of_Measure;
DataSave.PurchLines[i].Quantity = objHd.PurchLines[i].Quantity;
}
service.Update(ref DataSave);
return true;
}
catch (Exception err)
{
MsgCode = 99;
MsgDesc = err.Message;
return false;
}
}
问题是在循环之后执行service.Update(ref DataSave)
,它捕获了一个错误,它说
表采购行的字段编号包含在相关表(标准文本)中找不到的值 (C125)。
因为在 NAV 中,当保存这一笔交易时,它需要检查它在下面这个对象中记录的每个项目类型
DataSave.PurchLines[i].Type = NAVFacade.GoodReturnNAVService.Type.Item;
我已经完成了调试,在 DataSave.PurchLines[i].Type 中,有值为 Item 的数据
但是当我检查数据库时,数据没有保存
在 NAV 中,对象读取为选项,在 SQL 中,对象读取为整数
请帮忙,
我有点卡在这里,因为除了这个方法之外,我的代码上的任何东西都在工作
真挚地,
只是另一个中等初级开发人员
也许您的值没有正确发送,请检查是否有属性“YourField”_Specified 并将其设置为 true...
前任: ...
currWorkOrder.Order_Type = Order_Type.AKC; //(Order_Type)2;
currWorkOrder.Order_TypeSpecified = true;
...当我没有设置
Order_TypeSpecified = true;
插件发送默认值,所以 0...
是的,NAV 中的 Type 字段是一个 Option 字段,但它存储为整数,因此您需要为其指定一个数值。 与实际数据库的 NAV 开发人员核对,但默认值是:“,总账科目,项目,,固定资产,费用(项目)” - 它从 0 开始,所以如果你想要项目,你需要 2
我希望它有帮助!
干杯
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.