2015-07-01 101 views
1

我的任務是在VendOpenTrans中添加一個特定尺寸的字段。我在VendOpenTrans表中添加了我的DataSources中的DimensionAttributeValueSet,DimensionAttributeValueSetItem,DimensionAttributeValue和DimensionAttribute。VendOpenTrans網格上的特定尺寸

在他們的屬性中,我使用InnerJoin LinkType進行了連接(連接源)(我嘗試了所有這些選項)。然後我從DimensionAttributeValueSetItem - > DisplayValue(字段名稱)在我的網格上添加一個字段。

而現在VendOpenTrans的executeQuery方法我添加代碼:

public void executeQuery() 
{ 
    /*QueryBuildRange dimensionAttributeValueSetRange; 
    ; 
    dimensionAttributeValueSetRange = this.query().dataSourceTable(tableNum(DimensionAttribute)).addRange(fieldNum(DimensionAttribute, Name)); 
    dimensionAttributeValueSetRange.value('MyDimensionName'); 
    super(); 
} 

這樣做的最終結果是,我和我的尺寸新的過濾器。所以我沒有看到我的網格記錄在這個維度中有一個空值。

,我想實現的就是要展現「MyDimensionName」的值,如果它充滿但是當它不記錄應該只是一個空值顯示...

我花這很多很多小時我還是沒有做出來......

回答

1

在AX 2012選擇具體的尺寸是棘手超越理智,但這種方法可能會有所幫助:

static void queryDimensionUpdate(LedgerDimensionAccount _dimension, Query _q, str _dataSourceName, FieldName _field = fieldStr(GeneralJournalAccountEntry,LedgerDimension)) 
{ 
    DimensionStorageSegment segment; 
    DimensionStorage  storage = DimensionStorage::findById(_dimension); 
    DimensionProvider  provider = new DimensionProvider(); 
    DimensionAttributeValue value; 
    Name name; 
    int segmentCount; 
    int s; 
    if (storage) 
    { 
     segmentCount = storage.segmentCount(); 
     for (s = 1; s <= segmentCount; s++) 
     { 
      segment = storage.getSegment(s); 
      if (segment.parmDimensionAttributeValueId()) 
      { 
       name = DimensionAttribute::find(DimensionAttributeValue::find(segment.parmDimensionAttributeValueId()).DimensionAttribute).Name; 
       //info(strFmt('%1: %2, %3', name, segment.parmDisplayValue(), segment.getName())); 
       provider.addAttributeRangeToQuery(_q, _dataSourceName, _field, DimensionComponent::DimensionAttribute, segment.parmDisplayValue(), name); 
      } 
     } 
    } 
} 

給定一組_dimension與正確的價值觀搜索,比如說011010-103-101--,那就是了l更新查詢_q,選擇與數據源_datasourceName和字段_field相關的給定維度(示例中的011010,103和101)。

它通過爲值重複_dimension段,然後使用DimensionProvider更新查詢來完成。 addAttributeRangeToQuery方法。