【问题标题】:Create NewRecord through Siebel Business Service eScript通过 Siebel 业务服务 eScript 创建 NewRecord
【发布时间】:2016-02-16 17:25:31
【问题描述】:

我正在尝试使用 BS 服务器脚本创建新记录。

由于该过程发生在 BS 内部,因此不存在 Parent 的上下文,因此我无法获取 Parent Row_Id,我需要明确标记为可见性而创建的子记录。

最初我尝试将小程序中的 Parent Row_Id 作为配置文件传递,但是当子小程序中没有记录时失败,即 this.BusComp().ParentBusComp().GetFieldValue 返回“此操作无效时有没有记录”,因为“this”上下文不可用。

有什么建议吗?

【问题讨论】:

    标签: siebel escript


    【解决方案1】:

    我能够通过下面的代码实现期望

        sId = TheApplication().ActiveBusObject().GetBusComp("Q").ParentBusComp().GetFieldValue("Id");
        if(this.BusComp().CountRecords() > 0)
        {
            sA = TheApplication().ActiveBusObject().GetBusComp("Q").GetFieldValue("A");
            sB = TheApplication().ActiveBusObject().GetBusComp("Q").GetFieldValue("B");
        }
        sEntity = TheApplication().ActiveBusObject().GetBusComp("Q").Name();
    

    【讨论】:

      【解决方案2】:

      正是出于这些原因,Siebel 在业务组件字段级别提供了预默认设置。如果您希望完全通过脚本来完成此操作,则必须找到 Active 上下文,您必须知道哪个 BC 是父级。

      假设您知道父 BC 必须是帐户。所以

      ActiveBusObject().GetBusComp("Account").GetFieldValue("Id") 将为您提供当前选择的 Account BC 记录的行 id。但请确保此脚本仅在此上下文中触发。所以检查 ActiveViewName 来检查这个。

      if(TheApplication().GetProfileAttr("ActiveViewName")=="Custom View")
      {
      //put the scripting here.
      }
      

      【讨论】:

      • 感谢 Ranjith 的回复。是的,这是我采用的方法,它可以正常获取 Active BusComp 名称,但是在没有记录的情况下尝试 var sId = ActiveBusObject().GetBusComp("Account").GetFieldValue("Id") 时仍然失败.我的假设是变量“sId”将为空白,而是引发错误“当没有可用记录时操作无效”。是否有一种机制可以检查记录是否存在而无需使用 Parent Row_Id 进行查询。我需要的是,如果存在记录 - 获取 row_id 否则返回空白。
      • 它可以是任何记录,因此在获取对应的Row_Id时需要保留上下文
      猜你喜欢
      • 2011-03-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-18
      • 1970-01-01
      • 1970-01-01
      • 2020-01-28
      相关资源
      最近更新 更多