2010-11-29 3 views
1

을 변경, 공급 업체 테이블 변경에 모든 필드 때 (그리고에 생성/기록의 삭제). 경고에 역학 도끼 : 경고 어떤 기록이 내가 도끼에 경고를 보낼

, 나는 이전과 현재 값을 포함하고 싶습니다.

는하지만, 당신이 테이블 변화 할 때 모든 필드에 대한 경고를 설정할 수 있지만 모든 분야 최대를 설정할 필요가 없습니다 나타납니다! 나는 틀렸다고 희망한다.

그리고 나는 사람들이 "어떤"필드 변경, 특정 필드의 변경을 위해 설계되지 않은 경보 시스템을 관찰 것처럼

답변

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) 
    "[email protected]", //Recipient email 
    this_Orig,    //Original record 
    this     //Modified record 
); 

난을 개선 할 수있는 유일한 사항은 다음과 같습니다

  • 테이블에 템플릿 이름과받는 사람을 이동 더 쉬운 유지 관리를 위해
  • 변경 목록에 대한 서식을 더 잘 지정하기 위해 템플릿을 만드는 방법을 모르겠다. (here 참조)
2

그룹에이 알림을 보낼 수있는 방법에 대해 설명합니다.

이것은 많은 alarts을 생성하는 것처럼 가짜 요청 어쨌든입니다. 옳은 것은 다음의 VendTable 테이블의 데이터베이스 로깅을 사용하도록 설정 관심이있는 사람들에 (일괄) 일일 보고서를 보낼 수 있습니다.

이는 관리 \ 설정 \ 데이터베이스 로그에서 이루어집니다. Administration \ Reports에 보고서가 있습니다. 테이블을 선택하려면 테이블 번호를 알아야합니다. 이 솔루션에는 "데이터베이스 로깅"라이센스 키가 필요합니다.

+0

"가짜 요청"이 아닙니다. 변경 사항이 저장되면 변경된 입력란과 이전 값이 포함 된 단일 이메일을 보내려고합니다. 일일 일괄 전송이 너무 늦었습니다.2010 년, 야간 배치로 정보를 제공하지 않아야합니다. 공급 업체는 드물게 업데이트되지만, 수정 된 경우 임원들은 즉시 알고 싶어합니다. – CaffGeek

+0

그렇다면 경영진에게 적합한 모든 분 또는 시간에 보고서를 실행하십시오. –

+0

내가 제공 한 솔루션은 매우 간단하며 제공됩니다. AX가 상상할 수있는 기능을 제공 할 것이라고 기대할 수는 없습니다. 귀하의 임원 요청은 일반적인 것이 아닙니다! –

1

정말로이 기능이 필요한 경우 이전 레코드의 풋 프린트와 새 레코드를 함께 사용하여 메시지/이메일을 보내는 클래스를 만들 수 있습니다. 그런 다음 테이블 메소드 "write"/ "update"/ "save"에 코드를 추가하여 vendtable을 편집 할 때마다 클래스가 실행되도록하십시오. 하지만 1 월에 동의해야합니다. 그러면 많은 경고가 생성됩니다. 나는 재고 조사에서 한 수정이 비즈니스 필요에 따라 이루어지고 불법적 인 수정을 금지하는 경우 약간의 에너지 점검을 할 것입니다. 이는 적절한 사람들 만이 충분한 접근 권한을 갖도록 보장하는 것을 포함합니다.

행운을 빈다.

+0

올바른 사람에게 액세스 권한이 있는지 확인하십시오. 수정 액세스 권한이있는 사람은 2 명 뿐이지 만 변경 사항이 언제 발생하는지 알 필요가있는 것은 아닙니다. 또한 이것이 어떻게 "많은 경고"를 생성하는지 이해하지 못합니다. 공급 업체 기록은 평균 하루에 총 3 회 업데이트됩니다 (이전 소프트웨어의 변경 내역에 대해 몇 가지 통계를 실행했습니다). 그것은 하루에 3 통의 이메일입니다. 변경된 각 공급 업체에 대해 하나. 거의 "많은 경고". – CaffGeek

1

나는 Skaue의 제안에 동의합니다. 판매 테이블의 변경 메일을 보내기 만하면됩니다. 그리고 vendtable의 업데이트 메소드에서이 클래스를 실행하십시오. 기록 변경, 어떤 레코드에 변경 때

감사와 안부, 디팍 쿠마