2015-01-20 1 views
2

일반 저널 (테이블 : LedgerJournalTable) 양식의 원장 차원 값을 조합 값과 함께 LedgerJournalTransDaily (테이블 : LedgerJournalTrN) 양식에 전달해야합니다. EX :ax 2012의 재무 차원 조합 값 전달

저널 이름이 "Alloc"(원장 차원은 1003) 인 저널을 새로 만들고 재무 차원 탭에서 비용 센터 (024), 부서 (001)를 선택합니다. , 목적 (훈련) 후에 나는 선을 누른 다음 새로운 형태의 LedgerJournalTransDaily를 클릭한다. 하나의 필드에서 Account Num이라는 필드에서 해당 세그먼트 필드에 선택한 조합 값과 함께 원장 차원 값이 필요합니다. 1003-024-001 - 교육 사전

답변

2

에서

감사처럼 오프셋 계정 민은 헤더 테이블에있는 유일한 원장 차원이다, 그래서 당신은 그러나이 논리를 적용 할 수 있습니다, 그것을 사용하려는 가정합니다 모든 원가 조합 (원장 계정 유형이 원장임을 가정). 원장 치수를 LedgerJournalTable의 원장 치수 필드와 결합하려면 다음과 같이하십시오.

먼저 오프셋 원장 차원에서 계정 번호를 검색합니다. 당신은 간단한 기본 AX 방법으로이 작업을 수행 할 수 있습니다

accountNum = DimensionStorage::ledgerDimension2AccountNum(journalTable.OffsetLedgerDimension); 

다음, LedgerJournalTable에 금융 치수를.

배경 정보 :이 크기는필드에 저장되며 DimensionAttributeValueSet 테이블을 참조합니다. 이 테이블 자체는 유용하지는 않지만 상호 참조입니다. DimensionAttributeValueSet 필드가 DimensionAttributeValueSet.RecIdDimensionAttributeValueSetItem 테이블에 가입하십시오. 당신은 선택되었습니다 차원의 속성과 그 표시 값이 표시됩니다

LedgerJournalTable journalTable; 
DimensionAttributeValueSet attributeValueSet; 
DimensionAttributeValueSetItem attributeValueSetItem; 

while select DisplayValue from attributeValueSetItem 
    exists join attributeValueSet 
    where attributeValueSet.RecId == attributeValueSetItem.DimensionAttributeValueSet 
     exists join journalTable 
     where journalTable.DefaultDimension == attributeValueSet.RecId 
     && journalTable.RecId    == 52565497166 
{ 
    info(attributeValueSetItem.DisplayValue); 
} 

지금 우리가 DimensionAttributeValueSetItem 기록을 가지고, 우리는 또한 지금 DimensionAttributeValueDimensionAttribute에 저장된 상위 계층 치수 정보가 있습니다. 이 모든 테이블이 필요해! 꽤 강렬한 권리? 무거운 while 회 돌이를 만들어 각 차원을 거쳐 컨테이너에 추가하고 이전에 검색 한 Account Num과 결합 할 수 있습니다. 컨테이너는 기본 도끼 치수 유틸리티 메소드 (또는 적어도 알고있는 것들)와 함께 작동하도록 매우 특별하게 구축되어야합니다.

다음은 제가 설명했던 것을 효과적으로 수행하는 간단한 작업입니다. 편의를 위해 저널을 직접 선택했습니다.

LedgerJournalTable     journalTable = LedgerJournalTable::findByRecId(52565497166); 
DimensionAttribute     dimensionAttribute; 
DimensionAttributeValue    dimensionAttributeValue; 
DimensionAttributeValueSet   attributeValueSet; 
DimensionAttributeValueSetItem  attributeValueSetItem; 
DimensionAttributeValueCombination davc; 
AccountNum       accountNum; 
container       newLedgerDimension; 
int         numOfDims; 
int         i; 
str         displayValue; 
DimensionDynamicAccount    dynamicDimension; 

// Get Account Num. 
accountNum = DimensionStorage::ledgerDimension2AccountNum(journalTable.OffsetLedgerDimension); 
info(AccountNum); 

// Add account to container. 
newLedgerDimension = [accountNum]; 

// Add dimensions to the container. 
while select attributeValueSetItem 
    join RecId from attributeValueSet 
    where attributeValueSet.RecId  == attributeValueSetItem.DimensionAttributeValueSet 
    && journalTable.DefaultDimension == attributeValueSet.RecId 
     join RecId, DimensionAttribute from dimensionAttributeValue 
     where dimensionAttributeValue.RecId == attributeValueSetItem.DimensionAttributeValue 
      join RecId, Name from dimensionAttribute 
      where dimensionAttribute.RecId == dimensionAttributeValue.DimensionAttribute 
{ 
    // Add the dimension name and dimension value 
    newLedgerDimension += [dimensionAttribute.Name, attributeValueSetItem.DisplayValue]; 

    // Keep track of the number of dimensions. 
    ++numOfDims; 
} 

// Combine the account and dimensions into one value. 
for (i=1; i<=(numOfDims+1)*2; i+=2) 
{ 
    displayValue += conPeek(newLedgerDimension, i) + '-'; 
} 

// The display value of the combination must be in the first index of the container. 
newLedgerDimension = conIns(newLedgerDimension, 1, displayValue); 

// The number of dimensions must be in the third index of the container. 
newLedgerDimension = conIns(newLedgerDimension, 3, int2str(numOfDims)); 

info(displayValue); 

// Lastly, create the dimension. 
dynamicDimension = AxdDimensionUtil::getLedgerAccountId(newLedgerDimension); 

info(int642str(dynamicDimension)); 

모두 제대로 작동하면 조합을 만들었습니다. 방금 만든 치수를 DimensionAttributeValueCombination에서 찾아서 다양화할 수 있습니다. 이 조합은 이제 LedgerJournalTrans.LedgerDimension

의 RecId가 될 수 있습니다. 치수 유틸리티는 구성된 계정 구조를 기반으로 적용 가능한 차원 만 적용한다는 점에 유의해야합니다. 총계정 원장 모듈> 설정> 계정 과목> 계정 구조 구성에서 구성합니다.

관련 문제