在Quickbooks Pro 2009
我list of Customers
通过C# windows application
. 在 Quick book 本身Import and Export
中,客户列表有选项,但我们已经定义了自己的业务验证逻辑,并且我们正在将数据推送到客户的 Quick book DB。
在 Quick Book 中,有一个选项可以在 下定义自定义字段Additional Tab
。
在以编程方式添加客户快速预订列表时,我可以添加Built-In Field values
LikeCustomer Name
Company Name
和 Etc 的值。如果我尝试推送custom fields
. 它给了我错误...
QuickBooks 在解析提供的 XML 文本流时发现错误。
如果我跳过自定义字段数据推送操作,则定义的字段数据传递工作正常。
我的代码:
XmlDocument inputXMLDoc = new XmlDocument();
inputXMLDoc.AppendChild(inputXMLDoc.CreateXmlDeclaration("1.0", null, null));
inputXMLDoc.AppendChild(inputXMLDoc.CreateProcessingInstruction("qbxml", "version=\"2.0\""));
XmlElement qbXML = inputXMLDoc.CreateElement("QBXML");
inputXMLDoc.AppendChild(qbXML);
XmlElement qbXMLMsgsRq = inputXMLDoc.CreateElement("QBXMLMsgsRq");
qbXML.AppendChild(qbXMLMsgsRq);
qbXMLMsgsRq.SetAttribute("onError", "stopOnError");
XmlElement custAddRq = inputXMLDoc.CreateElement("CustomerAddRq");
qbXMLMsgsRq.AppendChild(custAddRq);
custAddRq.SetAttribute("requestID", "1");
XmlElement custAdd = inputXMLDoc.CreateElement("CustomerAdd");
custAddRq.AppendChild(custAdd);
//In-Built Columns
custAdd.AppendChild(inputXMLDoc.CreateElement("Name")).InnerText = Name;
custAdd.AppendChild(inputXMLDoc.CreateElement("AccountNumber")).InnerText = AccountNumber;
//Defined Custom Columns
custAdd.AppendChild(inputXMLDoc.CreateElement("CUSTFLD1")).InnerText = JRNL_NO;
String name = CustName.Text.Trim();
string input = inputXMLDoc.OuterXml;
//Push the Data to do the qbXMLRP request
RequestProcessor2 rp = null;
string ticket = null;
string response = null;
try
{
rp = new RequestProcessor2();
rp.OpenConnection("", "IDN CustomerAdd C# sample");
ticket = rp.BeginSession("", QBFileMode.qbFileOpenDoNotCare);
response = rp.ProcessRequest(ticket, input);
}
catch (System.Runtime.InteropServices.COMException ex)
{
MessageBox.Show("COM Error Description = " + ex.Message, "COM error");
}
我在这里做错了什么..有什么帮助吗?或任何建议/想法????