Acumatica Base.Actions.PressSave()不处理具有批量操作的属性

Acumatica Base.Actions.PressSave()不处理具有批量操作的属性,acumatica,Acumatica,我在合同上创建了一个自定义操作,更新了描述和属性 当执行单个输入并按下“操作”按钮时,它可以正常工作,但在批量操作期间,仅更新描述并保存属性 我需要做什么才能使属性值在批量操作期间正确保存 public PXSelect<CSAnswers, Where<CSAnswers.refNoteID, Equal<Current<Contract.noteID>>>> CSAttr; p

我在合同上创建了一个自定义操作,更新了描述和属性

当执行单个输入并按下“操作”按钮时,它可以正常工作,但在批量操作期间,仅更新描述并保存属性

我需要做什么才能使属性值在批量操作期间正确保存

        public PXSelect<CSAnswers,
                 Where<CSAnswers.refNoteID, Equal<Current<Contract.noteID>>>> CSAttr;

        protected IEnumerable testAction(PXAdapter adapter)
        {
            //get the activation parameters
            var a = CSAttr.Select();
            Contract mycontract = Base.CurrentContract.Select();
            foreach (CSAnswers item in a.ToList())
            {                    
                if (item.AttributeID == "ACTA") 
                {
                    item.Value = "Won't Update1";
                    CSAttr.Update(item); //shouldn't this update?
                }
                else if (item.AttributeID == "ACTB") //desired mode set by user
                {
                    item.Value = "Won't Update2";
                    CSAttr.Update(item); //shouldn't this update?
                }
            }
            mycontract.Description = "This Works Fine";
            Base.CurrentContract.Update(mycontract);
            Base.Actions.PressSave();

            return adapter.Get();
        }
public px选择CSAttr;
受保护的IEnumerable测试操作(PXAdapter适配器)
{
//获取激活参数
var a=CSAttr.Select();
Contract mycontract=Base.CurrentContract.Select();
foreach(a.ToList()中的CSAnswers项)
{                    
如果(item.AttributeID==“ACTA”)
{
item.Value=“不会更新1”;
CSAttr.Update(item);//此更新不应该吗?
}
else if(item.AttributeID==“ACTB”)//用户设置的所需模式
{
item.Value=“不会更新2”;
CSAttr.Update(item);//此更新不应该吗?
}
}
mycontract.Description=“这工作正常”;
Base.CurrentContract.Update(mycontract);
Base.Actions.PressSave();
返回适配器Get();
}

无需声明自定义CSAttr数据视图:ContractMaint已包含用于处理属性的应答数据视图

TestAction实现如下,从GI启动时,成功更新全新的6.00.1596 Acumatica ERP实例上的合同描述和属性值设置为入口点列表:

public class ContractMaintExt : PXGraphExtension<ContractMaint>
{
    public override void Initialize()
    {
        TestAction.IsMass = true;
    }

    public PXAction<Contract> TestAction;
    [PXButton]
    [PXUIField(DisplayName = "Test Action")]
    public void testAction()
    {
        Contract mycontract = Base.CurrentContract.Select();
        foreach (CSAnswers attr in Base.Answers.Select())
        {
            if (attr.AttributeID == "CONFIGURAB")
            {
                attr.Value = "Updated";
                Base.Answers.Update(attr); //shouldn't this update?
            }
        }
        mycontract.Description = "This Works Fine";
        Base.Contracts.Update(mycontract);
        Base.Actions.PressSave();
    }
}
public class ContractMaintExt:pxGrapherExtension
{
公共覆盖无效初始化()
{
TestAction.IsMass=true;
}
公开诉讼;
[按钮]
[PXUIField(DisplayName=“测试操作”)]
公开无效遗嘱
{
Contract mycontract=Base.CurrentContract.Select();
foreach(Base.Answers.Select()中的CSAnswers attr)
{
如果(attr.AttributeID==“CONFIGURAB”)
{
attr.Value=“已更新”;
Base.Answers.Update(attr);//此更新不应该吗?
}
}
mycontract.Description=“这工作正常”;
基础.合同.更新(mycontract);
Base.Actions.PressSave();
}
}


@AcumaticGuy,你能分享你集体行动的实施情况吗?集体行动是通过使用表PX.Objects.CS.Answers Left Join PX.Objects.CT.Contract on noteId=refNoteID从一般查询中生成的。入口点是财务\应收账款\工作区\管理\客户合同。然后通过“启用记录上的批量操作”启用。在“批量操作”选项卡上,我添加了我的操作“testAction”。该操作工作正常,并更新单个客户合同的属性。我的问题是,更新属性和描述字段时,我需要做一些不同的事情吗?我建议您这样更改代码:foreach(CSAttr.Select中的CSAnswers项(this))我尝试了foreach(CSAttr.Select中的CSAnswers项(this)),但结果相同。。。