在 Acumatica Rest API WebService EndPoint 中传递操作参数

问题描述 投票:0回答:1

我的要求:在账单和调整屏幕中,我想通过网格按钮的“添加子合同”按钮添加分包合同。

我正在像这样在邮递员中使用 post 方法

帖子:localhost/AcumaticaXMSI/entity/DefaultExtended/18.200.001/Bill/addSubcontracts 具有实体和参数

那么我们得到的结果是,只有SC-000002被插入到细节中。 我希望在详细信息行中插入两条记录,并指定从 POSTMAN JSON 格式插入的记录

我尝试使用这个 json 语法(如下),但没有帮助添加特定的分包记录 请任何人都可以建议我正确的 JSON 语法来选择所有子合同以及通过邮递员操作中的参数传递的特定子合同

附加信息

rest acumatica endpoint
1个回答
0
投票

您不能将参数传递给直接弹出触发器的动作(或按钮)。您不能这样做的原因是所有弹出窗口都会作为异常触发。从 C# 的角度来看,每次触发异常时,传递的值都会丢失。从 Acumatica 的角度来看,任何时候,当抛出异常时,都相当于单击取消按钮。当然,如果异常是弹出 UI 异常,Acumatica 有捕获该异常的机制,但在 Web api 中,可能会建议另一种方法。

像往常一样,我这样做:

  1. 在表单上添加一些文本字段或多个文本字段。

  2. 对于添加的字段,在 RowSelected 事件中,我根据条件隐藏这些字段:

    if(!Base.IsContractBasedAPI)
    {
        //Hide fields, so ordinary users will not see added fields on the ui
    }
    
  3. 使用第二点中提到的技术添加一个合成按钮,也可以隐藏该按钮

  4. 将合成按钮公开为端点

  5. 进行两个 api 调用, 5.1.设置字段值的 API 调用 5.2.执行附加按钮

附加按钮可能具有以下逻辑:

public virtual IEnumerable yourAdditionalButton(PXAdapter adapter)
{
   try
   {
       //execute your button
   }
   catch(Exception ex ) // to do: replace with actual redirection exception
   {
       
   }
   //based on data, which you made in step 5 arrange execution of needed button. Just can't quickly allocate button Add Subcontract
   //Execute button one more time, this time exception shouldn't appear

}

我相信可能存在其他一些解决方法,但一般方法就像我所描述的那样。

© www.soinside.com 2019 - 2024. All rights reserved.