【发布时间】:2017-03-15 15:49:26
【问题描述】:
假设我有 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 中,对象读取为整数
请帮忙,
我有点卡在这里 因为除了这个方法之外,我的代码上的任何东西都可以工作
真诚的,
只是另一个中核初级开发人员
【问题讨论】:
标签: c# web-services microsoft-dynamics