我想在供应商表格中的任何字段发生变化时(以及创建/删除记录时)在Ax中发送警报。
在警报中,我想包含之前和当前的值。
但是,似乎您无法在表格中的任何字段更改时设置警报,但是需要为每个字段设置一个警报?!我希望我错了。
如何将此通知发送给一群人
答案 0 :(得分:3)
我创建了一个带有静态方法的新类,我可以轻松地从任何.update()
方法调用,以便在记录更改时提醒我,以及记录中的更改。
它也使用了Ax的内置电子邮件模板。
static void CompareAndEmail(str emailTemplateName, str nameField, str recipient, Common original, Common modified)
{
UserInfo userInfo;
Map emailParameterMap = new Map(Types::String, Types::String);
str changes;
int i, fieldId;
DictTable dictTable = new DictTable(original.TableId);
DictField dictField;
;
for (i=1; i<=dictTable.fieldCnt(); i++)
{
fieldId = dictTable.fieldCnt2Id(i);
dictField = dictTable.fieldObject(fieldId);
if (dictField.isSystem())
continue;
if (original.(fieldId) != modified.(fieldId))
{
changes += strfmt("%1: %2 -> %3 \n\r",
dictField.name(),
original.(fieldId),
modified.(fieldId)
);
}
}
//Send Notification Email
select Name from UserInfo where userInfo.id == curUserId();
emailParameterMap.insert("modifiedBy", userInfo.Name);
emailParameterMap.insert("tableName", dictTable.name());
emailParameterMap.insert("recordName", original.(dictTable.fieldName2Id(nameField)));
emailParameterMap.insert("recordChanges", changes);
SysEmailTable::sendMail(emailTemplateName, "en-us", recipient, emailParameterMap);
}
然后在.update()
方法中我只添加一行
//Compare and email differences
RecordChangeNotification::CompareAndEmail(
"RecChange", //Template to use
"Name", //Name field of the record (MUST BE VALID)
"user@domain.com", //Recipient email
this_Orig, //Original record
this //Modified record
);
我唯一想要改进的是:
答案 1 :(得分:2)
如您所见,警报系统不是为“任何”字段更改而设计的,只有特定的字段更改。
这是一个虚假的请求,因为它会产生许多alarts。正确的做法是启用VendTable
表的数据库日志记录,然后向感兴趣的人发送每日报告(批量)。
这在Administration \ Setup \ Database日志记录中完成。 Administration \ Reports中有一个报告。您需要知道表号才能选择表格。 此解决方案需要“数据库日志记录”许可证密钥。
答案 2 :(得分:1)
如果您确实需要此功能,那么您可以创建一个类,该类发送一条消息/电子邮件,其中包含旧记录的足迹与新记录的对比。然后只需在表方法“write”/“update”/“save”中添加一些代码,以确保在编辑vendtable时运行类。 但我不得不同意Jan.这会产生很多警报。如果在vendtable中进行的修改是根据业务需要进行的,我会花一些精力检查,并禁止非法修改。这包括确保只有合适的人才有足够的访问权限。
祝你好运!答案 3 :(得分:1)
我同意Skaue的建议。您只需编写并发送电子邮件来发送vend表中的更改邮件。 并在vendtable的更新方法上执行此类。
谢谢和问候, 迪帕克库马尔