我们正在开发一个项目,通过Web服务API将我们的电子商务订单传递到Acumatica。
作为订单流程的一部分,我们需要搜索客户以获得我们需要的服务,然后我们希望能够根据主键(即BAccountID)更改此客户数据。但是,当我使用Web Service API“AR303000Export”获取客户信息时,我没有在Acumatica获取的数据中看到“BAccountID”,因此我无法根据主键更新该业务帐户记录(BAccountID和CompanyID,我们已经有了CompanyID)。
在通过Web Service API进行搜索时,是否仍然可以获取主键值?
我注意到我可能能够使用“AcctCD”来更新“Customer ID”,但是,我不确定该客户ID在数据库中是否唯一,因为它未被指定为主要键...
任何帮助都会非常感激。
感谢。
答案 0 :(得分:0)
您的具体问题是如何获得BAccountID
,您可以 - 所以我会回答这个问题。但您可能希望使用AcctCD
。
这段代码构建了AR303000Export
var commandgroup = new Command[]
{
AR303000Schema.CustomerSummary.ServiceCommands.EveryCustomerID
, WSTools.NewA4Field(AR303000Schema.CustomerSummary.CustomerID.ObjectName, "DefContactID")
, AR303000Schema.CustomerSummary.CustomerID
, AR303000Schema.CustomerSummary.CustomerName
, WSTools.NewA4Field(AR303000Schema.CustomerSummary.CustomerID.ObjectName, "BAccountID")
, WSTools.NewA4Field(AR303000Schema.CustomerSummary.CustomerID.ObjectName, "Type")
,AR303000Schema.CustomerSummary.Status
, AR303000Schema.GeneralInfoMainContact.Phone1
, AR303000Schema.GeneralInfoMainContact.Phone2
, WSTools.NewA4Field(AR303000Schema.GeneralInfoMainContact.Phone1.ObjectName, "Phone1Type")
, WSTools.NewA4Field(AR303000Schema.GeneralInfoMainContact.Phone1.ObjectName, "Phone2Type")
WSTools.NewA4Field(AR303000Schema.CustomerSummary.CustomerID.ObjectName, "LastModifiedDateTime")
};
你会注意到一些有趣的东西在强类型模式中没有暴露,但是如果你知道如何构建命令来引用该字段,它仍然可用。 (例如Phone1
中的Phone1Type
中的电话号码类型。)
在您的情况下,您需要一个命令来导出BAccountID
来自与CustomerID
相同的内部对象名称:
<强> WSTools.NewA4Field(AR303000Schema.CustomerSummary.CustomerID.ObjectName, "BAccountID")
强>
在导出命令列表中。 (它在上面的片段中排在第5位。)
构建“Field”对象的方法有很多种 - 我有一个实用方法:
public static AcumaticaWS.Field NewA4Field(string objName, string fldName)
{
AcumaticaWS.Field nv = new AcumaticaWS.Field();
nv.ObjectName = objName;
nv.FieldName = fldName.TrimEnd();
return nv;
}
希望这有帮助!