Miklix

Dynamics AX 2012의 SysOperation 데이터 계약 클래스에서 쿼리 사용

게시됨: 2025년 2월 16일 오전 1시 22분 53초 UTC

이 문서에서는 Dynamics AX 2012(및 Dynamics 365 for Operations)에서 SysOperation 데이터 계약 클래스에 사용자 구성 및 필터링 가능한 쿼리를 추가하는 방법에 대한 세부 정보를 살펴봅니다.


이 페이지는 가능한 한 많은 사람이 이용할 수 있도록 영어에서 기계 번역되었습니다. 안타깝게도 기계 번역은 아직 완성된 기술이 아니므로 오류가 발생할 수 있습니다. 원하시는 경우 여기에서 영어 원문을 보실 수 있습니다:

Using a Query in a SysOperation Data Contract Class in Dynamics AX 2012

이 게시물의 정보는 Dynamics AX 2012 R3에 기반합니다. 다른 버전에는 유효할 수도 있고 그렇지 않을 수도 있습니다. (업데이트: 이것이 Dynamics 365 for Operations에서도 작동한다는 것을 확인할 수 있습니다.)

저는 항상 SysOperation 프레임워크에서 쿼리를 지정하고 초기화하는 방법에 대한 세부 사항을 잊어버리는 것 같습니다. 제가 만든 대부분의 일괄 작업이 사용자 구성 가능 쿼리에 기반하지 않는 것 같지만, 가끔은 그런 일괄 작업을 만들어야 하므로 이 게시물은 제 참고 자료이기도 합니다.

먼저, 데이터 계약 클래스에서 쿼리는 문자열로 패킹되어 저장됩니다. parm 메서드는 AifQueryTypeAttribute 특성으로 장식되어야 합니다. (이 예에서는 SalesUpdate 쿼리를 사용했지만, 이것을 AOT 쿼리로 바꿀 수 있습니다.)

[
    DataMemberAttribute,
    AifQueryTypeAttribute('_packedQuery', queryStr(SalesUpdate))
]
public str parmPackedQuery(str _packedQuery = packedQuery)
{
    ;

    packedQuery = _packedQuery;
    return packedQuery;
}

대신 컨트롤러 클래스에서 쿼리를 결정하도록 하려면 빈 문자열을 사용할 수도 있습니다. 그런 경우, 몇 가지 도우미 메서드도 구현해야 합니다(쿼리에 액세스해야 할 때 편의를 위해 구현해야 할 수도 있음):

public Query getQuery()
{
    ;

    return new Query(SysOperationHelper::base64Decode(packedQuery));
}

public void setQuery(Query _query)
{
    ;

    packedQuery = SysOperationHelper::base64Encode(_query.pack());
}

쿼리를 초기화해야 하는 경우(예: 범위 추가) initQuery 메서드를 구현해야 합니다.

public void initQuery()
{
    Query queryLocal = this.getQuery();
    ;

    // add ranges, etc...

    this.setQuery(queryLocal);
}

컨트롤러 클래스에서 이 메서드를 호출해야 합니다.

블루스카이에서 공유하기페이스북에서 공유하기LinkedIn에서 공유하기Tumblr에 공유하기X에서 공유LinkedIn에서 공유하기Pinterest에 고정

미켈 방 크리스텐슨

저자 소개

미켈 방 크리스텐슨
남자 이름은 miklix.com의 창시자이자 소유자입니다. 전문 컴퓨터 프로그래머/소프트웨어 개발자로 20년 이상 경력을 쌓았으며 현재 유럽의 대형 IT 기업에서 정규직으로 근무하고 있습니다. 블로그를 운영하지 않을 때는 여가 시간을 다양한 관심사, 취미, 활동으로 보내며 이 웹사이트에서 다루는 다양한 주제에 어느 정도 반영되어 있습니다.