在 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”,并出现错误消息。

然而,当我执行代码时,值没有改变。 事实上,文章本身的屏幕截图并没有显示这个值已更改,虽然像我自己的本地经验一样,实际上显示了错误消息。

所以:

  1. 为什么值没有变化?
  2. 我们该如何解决这个问题?

问题中链接的博客文章几乎是正确的。但是,使用了错误的事件。 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