1

vendor テーブルのフィールドが変更されたとき (およびレコードの作成/削除時) に、Ax でアラートを送信したいと考えています。

アラートには、以前と現在の値を含めたいと思います。

しかし、テーブル内のフィールドが変更されたときにアラートを設定することはできないようですが、フィールドごとにアラートを設定する必要がありますか?! 私が間違っていることを願っています。

この通知をグループに送信するにはどうすればよいですか

4

4 に答える 4

3

任意のメソッドから簡単に呼び出すことができる静的メソッドを含む新しいクラスを作成し.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
);

私が改善したい唯一のことは次のとおりです。

  • メンテナンスを容易にするために、テンプレート名と受信者をテーブルに移動する
  • 変更リストのより良い書式設定、それをテンプレート化する方法がわかりません (参照:ここ)
于 2011-01-20T22:04:25.383 に答える
2

お気づきのように、アラート システムは「任意の」フィールド変更に対して設計されておらず、特定のフィールド変更のみに対して設計されています。

とにかく、これは多くのアラートを生成するため、偽のリクエストです。正しいことは、VendTableテーブルのデータベース ロギングを有効にしてから、関心のある人に日次レポートを (バッチで) 送信することです。

これは、管理\セットアップ\データベース ログで行われます。Administration\Reports にレポートがあります。テーブルを選択するには、テーブル番号を知る必要があります。このソリューションには、「データベース ログ」ライセンス キーが必要です。

于 2010-11-30T16:23:20.597 に答える
1

この機能が本当に必要な場合は、古いレコードと新しいレコードのフットプリントを使用してメッセージ/電子メールを送信するクラスを作成できます。次に、テーブルメソッド「write」/「update」/「save」にコードを追加するだけで、vendtableが編集されるたびにクラスが実行されるようになります。しかし、私は1月に同意する必要があります。これにより、多くのアラートが生成されます。vendtableで行われた変更がビジネスニーズに準拠しているかどうかを確認し、違法な変更を禁止するために、いくらかのエネルギーを費やします。これには、適切な人だけが十分なアクセス権を持っていることを確認することも含まれます。

幸運を!

于 2010-12-01T06:52:52.570 に答える
1

私は Skaue.you の提案に同意します.vend テーブルの変更のメールを送信するように書いてクラスを作成してください. vendtable の update メソッドでこのクラスを実行します。

ありがとう、よろしく、 ディーパック・クマール

于 2011-01-19T09:02:47.000 に答える