我正在编写一个程序,在GP10中使用eConnect修改一些发票。有些发票要求重新设置发行版,因为由于其他各种(对这个问题不重要)处理,总计没有正确地加起来;这是通过这个程序完成的。此外,大多数发票将被移动到不同的批次(如果您不熟悉GP,请考虑桶),也使用此程序。
这两个任务都是通过通过eConnect处理相同类型的文件来完成的。这是处理该文件的方法:
public bool PersistAllChangesInDynamics()
{
//instantiate the proper eConnect object for updating the invoice.
eConnectType eConnect = new eConnectType();
SOPTransactionType transType = new SOPTransactionType();
transType.taSopHdrIvcInsert = this.ConvertToSopHdrIvcInsertXml();
//Adjust fields to reset distributions.
transType.taSopHdrIvcInsert.UpdateExisting = 1;
transType.taSopHdrIvcInsert.CREATEDIST = 1;
SOPTransactionType[] updateInvTypeArray = { transType };
eConnect.SOPTransactionType = updateInvTypeArray;
//serialize and process the document.
XmlDocument eConnectDoc = eConnectHelper.SerializeEConnectDoc(eConnect);
return eConnectHelper.ProcessEConnectDoc(eConnectDoc);
}我的问题围绕着这段代码:
transType.taSopHdrIvcInsert.UpdateExisting = 1; //updates the batch changes
transType.taSopHdrIvcInsert.CREATEDIST = 1; //re-creates the distributionstaSopHdrIvcInsert是eConnect提供的对象,用于持久化对发票的任何更改。据我所知,没有一个对象只会重新创建发行版。每当我处理文档时,eConnect都会在Dynamics上调用一个类似名称的存储过程,以正确保存这些更改。UpdateExisting和CREATEDIST是该SP的可选参数。
有时,我只需要更新批处理(或发票的其他部分),或者只需要重新创建发行版,但其他时候,我需要两者都做。重新创建发行版不会导致任何不必要的更改,您总是希望发行版对每个发票都是正确的。我还没有测试一次只做一件事情之间的节省时间;因为对象是在服务器端调用SP,所以我看不出需要多少时间才会有明显的不同。
你们中有谁认为有什么理由将其重新分解为2-3种不同的方法来保持每个期望的函数分开呢?
发布于 2011-07-21 20:20:19
如果您所做的只是更新一两个字段,并且知道它不会妨碍任何GP,只需通过SQL更新字段即可。我有许多方法调用eConnect,然后在eConnect完成之后直接更新对象,因为我必须更改的字段没有eConnect参数。
https://stackoverflow.com/questions/4329772
复制相似问题