나는 나에게 경고하기 위해 내가 쉽게 .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)
"[email protected]", //Recipient email
this_Orig, //Original record
this //Modified record
);
난을 개선 할 수있는 유일한 사항은 다음과 같습니다
- 테이블에 템플릿 이름과받는 사람을 이동 더 쉬운 유지 관리를 위해
- 변경 목록에 대한 서식을 더 잘 지정하기 위해 템플릿을 만드는 방법을 모르겠다. (here 참조)
"가짜 요청"이 아닙니다. 변경 사항이 저장되면 변경된 입력란과 이전 값이 포함 된 단일 이메일을 보내려고합니다. 일일 일괄 전송이 너무 늦었습니다.2010 년, 야간 배치로 정보를 제공하지 않아야합니다. 공급 업체는 드물게 업데이트되지만, 수정 된 경우 임원들은 즉시 알고 싶어합니다. – CaffGeek
그렇다면 경영진에게 적합한 모든 분 또는 시간에 보고서를 실행하십시오. –
내가 제공 한 솔루션은 매우 간단하며 제공됩니다. AX가 상상할 수있는 기능을 제공 할 것이라고 기대할 수는 없습니다. 귀하의 임원 요청은 일반적인 것이 아닙니다! –