2015-07-01 62 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方法。