在 Microsoft Dynamics 365 F&O 的 X++ 中,为什么此事件不重新分配 CustTable.CustGroup 的值?
In Microsoft Dynamics 365 F&O's X++, why doesn't this event reassign the value of CustTable.CustGroup?
我目前正在努力完成 Event Handlers in D365 with Example。
据我理解这段代码:
class EventHandlerCustTable
{
[DataEventHandler(tableStr(CustTable), DataEventType::Inserted)]
public static void CustTable_onInserted(Common sender, DataEventArgs e)
{
CustTable custTable = sender as CustTable;
// 90 is the Customer group code for Intercompany Cutomer
if(custTable.CustGroup=="90")
{
// 80 is the Customer group code for Other Customer
custTable.CustGroup="80" ;
Global::error("Created Customer is an Intercompany Cutomer and will be added to the Customer Group Other Customer");
// you can write your logic here.
}
}
}
...当custTable.CustGroup
的值为“90”时,应将值重置为“80”,并出现错误消息。
然而,当我执行代码时,值没有改变。
事实上,文章本身的屏幕截图并没有显示这个值已更改,虽然像我自己的本地经验一样,实际上显示了错误消息。
所以:
- 为什么值没有变化?
- 我们该如何解决这个问题?
问题中链接的博客文章几乎是正确的。但是,使用了错误的事件。 onInserted
事件在记录创建完成后触发。这就是为什么在此事件中修改字段在这种情况下没有意义。
要使用的事件是 onInserting
,它在创建记录时触发。
注意在博客中,他们也首先提到了onInserting
事件:
To understand this concept better, let's take the example of On
Inserting Event Handler with Table.
但随后在“示例”部分,他们突然切换到 onInserted
事件。
Microsoft 文档对此事件有一个很好的示例,请参阅 Add methods to tables through extension。
我目前正在努力完成 Event Handlers in D365 with Example。
据我理解这段代码:
class EventHandlerCustTable
{
[DataEventHandler(tableStr(CustTable), DataEventType::Inserted)]
public static void CustTable_onInserted(Common sender, DataEventArgs e)
{
CustTable custTable = sender as CustTable;
// 90 is the Customer group code for Intercompany Cutomer
if(custTable.CustGroup=="90")
{
// 80 is the Customer group code for Other Customer
custTable.CustGroup="80" ;
Global::error("Created Customer is an Intercompany Cutomer and will be added to the Customer Group Other Customer");
// you can write your logic here.
}
}
}
...当custTable.CustGroup
的值为“90”时,应将值重置为“80”,并出现错误消息。
然而,当我执行代码时,值没有改变。 事实上,文章本身的屏幕截图并没有显示这个值已更改,虽然像我自己的本地经验一样,实际上显示了错误消息。
所以:
- 为什么值没有变化?
- 我们该如何解决这个问题?
问题中链接的博客文章几乎是正确的。但是,使用了错误的事件。 onInserted
事件在记录创建完成后触发。这就是为什么在此事件中修改字段在这种情况下没有意义。
要使用的事件是 onInserting
,它在创建记录时触发。
注意在博客中,他们也首先提到了onInserting
事件:
To understand this concept better, let's take the example of On Inserting Event Handler with Table.
但随后在“示例”部分,他们突然切换到 onInserted
事件。
Microsoft 文档对此事件有一个很好的示例,请参阅 Add methods to tables through extension。