Да уж, похоже эта функциональность не достаточно тестировалась, либо вообще не доделана.
Посмотрим на метод InventDimCtrl_Frm_OnHandIntercompany.dimFieldActive() :
X++:
container dimFieldsActive(InventDimParm _inventDimParm)
{
int h,y,f;
container visibleGrid;
for (h=1;h<=conlen(this.dimFields());h++)
{
Y = InterCompanyInventDim::dim2dimParm(conpeek(this.dimFields(),h));
f = InterCompanyInventDim::dimParm2dim(y);
if (_inventDimParm.(y))
visibleGrid += conpeek(this.dimFields(),f); // Ашипка! Д.б. "h"
}
return visibleGrid;
}
Во-первых, по использованию сразу двух конструкций подряд InterCompanyInventDim::dim2dimParm() и InterCompanyInventDim::dimParm2dim() становится понятно, что в методе dim2dimParm() все-таки подразумевается InventDim, а не InterCompanyInventDim. (Тогда, почему бы не использовать соотв. метод на таблице InventDim !?)
Во-вторых, явная "ашипка" при выборе элемента контейнера по fieldId, а не по счетчику.
В-третьих, если "углубиться" в this.dimFields(), приходим в InventDimGlobal.interCompanyDimFieldList() :
X++:
container interCompanyDimFieldList(boolean readNames = false)
{
int i,h;
DictFieldGroup dfg;
DictTable dt;
;
if (readNames && fieldsName_read)
return fieldsName;
else if (!readNames && fields_read)
return fields;
if (xGlobal::isAOS() && xGlobal::clientKind() == ClientType::Client && AOSClientMode() == AOSClientMode::Thin)
{
if (readNames)
fieldsName = InventDimGlobal::getServer_dimFieldList(readNames);
else
fields = InventDimGlobal::getServer_dimFieldList(readNames);
}
else
{
dt = new DictTable(tablenum(InterCompanyInventDim));
...
Условие "if (xGlobal::isAOS() && xGlobal::clientKind() == ClientType::Client && AOSClientMode() == AOSClientMode::Thin)" удовлетворяет "обычному" сеансу AX, и в этом случае перечисляются поля InventDim. А до полей InterCompanyInventDim дело доходит только для специфичных случаев, в которых InterCompanyInventDim::dim2dimParm() будет работать некорректно. Путаница в общем...
В AX2009 - все то же самое.
Интересно, кто-нибудь вообще использовал/тестировал "TradeInterCompany" в AX4 и AX2009?