首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >重构使用单个存储过程的eConnect方法

重构使用单个存储过程的eConnect方法
EN

Stack Overflow用户
提问于 2010-12-01 22:24:15
回答 1查看 660关注 0票数 0

我正在编写一个程序,在GP10中使用eConnect修改一些发票。有些发票要求重新设置发行版,因为由于其他各种(对这个问题不重要)处理,总计没有正确地加起来;这是通过这个程序完成的。此外,大多数发票将被移动到不同的批次(如果您不熟悉GP,请考虑桶),也使用此程序。

这两个任务都是通过通过eConnect处理相同类型的文件来完成的。这是处理该文件的方法:

代码语言:javascript
复制
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);
    }

我的问题围绕着这段代码:

代码语言:javascript
复制
    transType.taSopHdrIvcInsert.UpdateExisting = 1; //updates the batch changes
    transType.taSopHdrIvcInsert.CREATEDIST = 1; //re-creates the distributions

taSopHdrIvcInsert是eConnect提供的对象,用于持久化对发票的任何更改。据我所知,没有一个对象只会重新创建发行版。每当我处理文档时,eConnect都会在Dynamics上调用一个类似名称的存储过程,以正确保存这些更改。UpdateExisting和CREATEDIST是该SP的可选参数。

有时,我只需要更新批处理(或发票的其他部分),或者只需要重新创建发行版,但其他时候,我需要两者都做。重新创建发行版不会导致任何不必要的更改,您总是希望发行版对每个发票都是正确的。我还没有测试一次只做一件事情之间的节省时间;因为对象是在服务器端调用SP,所以我看不出需要多少时间才会有明显的不同。

你们中有谁认为有什么理由将其重新分解为2-3种不同的方法来保持每个期望的函数分开呢?

EN

回答 1

Stack Overflow用户

发布于 2011-07-21 20:20:19

如果您所做的只是更新一两个字段,并且知道它不会妨碍任何GP,只需通过SQL更新字段即可。我有许多方法调用eConnect,然后在eConnect完成之后直接更新对象,因为我必须更改的字段没有eConnect参数。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4329772

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档