vendor テーブルのフィールドが変更されたとき (およびレコードの作成/削除時) に、Ax でアラートを送信したいと考えています。
アラートには、以前と現在の値を含めたいと思います。
しかし、テーブル内のフィールドが変更されたときにアラートを設定することはできないようですが、フィールドごとにアラートを設定する必要がありますか?! 私が間違っていることを願っています。
この通知をグループに送信するにはどうすればよいですか
vendor テーブルのフィールドが変更されたとき (およびレコードの作成/削除時) に、Ax でアラートを送信したいと考えています。
アラートには、以前と現在の値を含めたいと思います。
しかし、テーブル内のフィールドが変更されたときにアラートを設定することはできないようですが、フィールドごとにアラートを設定する必要がありますか?! 私が間違っていることを願っています。
この通知をグループに送信するにはどうすればよいですか
任意のメソッドから簡単に呼び出すことができる静的メソッドを含む新しいクラスを作成し.update()
、レコードが変更されたときにアラートを出し、レコード内で何が変更されたかを通知しました。
Axe の組み込みの電子メール テンプレートも使用します。
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)
"user@domain.com", //Recipient email
this_Orig, //Original record
this //Modified record
);
私が改善したい唯一のことは次のとおりです。
お気づきのように、アラート システムは「任意の」フィールド変更に対して設計されておらず、特定のフィールド変更のみに対して設計されています。
とにかく、これは多くのアラートを生成するため、偽のリクエストです。正しいことは、VendTable
テーブルのデータベース ロギングを有効にしてから、関心のある人に日次レポートを (バッチで) 送信することです。
これは、管理\セットアップ\データベース ログで行われます。Administration\Reports にレポートがあります。テーブルを選択するには、テーブル番号を知る必要があります。このソリューションには、「データベース ログ」ライセンス キーが必要です。
この機能が本当に必要な場合は、古いレコードと新しいレコードのフットプリントを使用してメッセージ/電子メールを送信するクラスを作成できます。次に、テーブルメソッド「write」/「update」/「save」にコードを追加するだけで、vendtableが編集されるたびにクラスが実行されるようになります。しかし、私は1月に同意する必要があります。これにより、多くのアラートが生成されます。vendtableで行われた変更がビジネスニーズに準拠しているかどうかを確認し、違法な変更を禁止するために、いくらかのエネルギーを費やします。これには、適切な人だけが十分なアクセス権を持っていることを確認することも含まれます。
幸運を!
私は Skaue.you の提案に同意します.vend テーブルの変更のメールを送信するように書いてクラスを作成してください. vendtable の update メソッドでこのクラスを実行します。
ありがとう、よろしく、 ディーパック・クマール