D365 CustomJS - 使用自动编号字段 OnSave 更新字段
D365 CustomJS - Update Field with AutoNumber Field OnSave
我有一个名为 'ID' 的自动编号字段,它为记录生成一个 ID。我想将名为 'ID_Name' 的主名称字段设置为此。我目前正在使用以下 JS:
function setName(executionContext) {
formContext = executionContext.getFormContext();
var name = formContext.getAttribute("id").getValue();
formContext.getAttribute("id_name").setValue(name);
}
很简单。我得到 'ID' 的值,将其分配给名为 name 的变量,然后将 'ID_Name' 的值设置为该变量。这会触发 OnSave。
这在编辑记录时工作正常。问题是,这在创建新记录时不起作用。我假设是因为在 OnSave 触发时,Autonumber 字段 'ID' 尚未生成可以使用的值,因此 ID_Name 设置为空白。当然在编辑的时候,ID是有值的,因为记录已经提交了,所以没有问题。有办法解决这个问题吗?
您可以使用 OnLoad 事件做一些变通,并在两个字段不匹配时触发更新(意味着该值尚未保存),但我强烈建议不要使用这种方法。
理想情况下,这可以在 post 操作中使用同步插件来解决,此时在管道中应该填充 id 字段(你没有提到你是否正在使用 OOB autonumber 或其他东西生成此字段的内容不同),您可以在插件内触发更新。
只需在实体的主要名称字段上设置 OOB 自动编号选项。无需代码,避免重复数据,应尽可能避免。
我有一个名为 'ID' 的自动编号字段,它为记录生成一个 ID。我想将名为 'ID_Name' 的主名称字段设置为此。我目前正在使用以下 JS:
function setName(executionContext) {
formContext = executionContext.getFormContext();
var name = formContext.getAttribute("id").getValue();
formContext.getAttribute("id_name").setValue(name);
}
很简单。我得到 'ID' 的值,将其分配给名为 name 的变量,然后将 'ID_Name' 的值设置为该变量。这会触发 OnSave。
这在编辑记录时工作正常。问题是,这在创建新记录时不起作用。我假设是因为在 OnSave 触发时,Autonumber 字段 'ID' 尚未生成可以使用的值,因此 ID_Name 设置为空白。当然在编辑的时候,ID是有值的,因为记录已经提交了,所以没有问题。有办法解决这个问题吗?
您可以使用 OnLoad 事件做一些变通,并在两个字段不匹配时触发更新(意味着该值尚未保存),但我强烈建议不要使用这种方法。
理想情况下,这可以在 post 操作中使用同步插件来解决,此时在管道中应该填充 id 字段(你没有提到你是否正在使用 OOB autonumber 或其他东西生成此字段的内容不同),您可以在插件内触发更新。
只需在实体的主要名称字段上设置 OOB 自动编号选项。无需代码,避免重复数据,应尽可能避免。