は、私は私に警告するために、私は簡単に任意の.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()
方法で私はこの1行を追加します
//Compare and email differences
RecordChangeNotification::CompareAndEmail(
"RecChange", //Template to use
"Name", //Name field of the record (MUST BE VALID)
"[email protected]", //Recipient email
this_Orig, //Original record
this //Modified record
);
私は時に改善したいだけのものがあります:
- は、テーブルにテンプレート名と受信者を移動しますメンテナンスを容易にするために
- 変更リストのフォーマットを改善しましたが、テンプレートの作成方法はわかりません(here参照)
「偽のリクエスト」ではありません。変更が保存されると、変更されたフィールドとその以前の値を含む単一の電子メールを送信します。毎日のバッチを送信するのが遅すぎます。2010年ですから、情報を提供するために夜間のバッチで作業するべきではありません。ベンダーはめったに更新されませんが、変更された場合、当社の経営幹部は直ちに知りたいと考えています。 – CaffGeek
あなたのエグゼクティブに合ったものであれば、毎分または毎分レポートを実行してください。 –
私が提供した解決策は非常に簡単で、実現します。あなたは、AXがボックスから想像を絶する機能を提供することを期待することはできません。あなたのエグゼクティブのリクエストは一般的ではありません! –