|
15.12.2008, 12:50 | #1 |
Участник
|
Ошибка в InterCompanyInventDim (AX4 и AX2009)
В процессе добавления новой складской аналитики обнаружена ошибка в методе dim2dimParm() таблицы InterCopmanyInventDim.
В коде вместо полей таблицы InterCopmanyInventDim указаны поля InventDim. Будьте бдительны |
|
|
За это сообщение автора поблагодарили: kashperuk (5). |
16.12.2008, 16:13 | #2 |
Программатор
|
Просто поменять там InventDim на InterCompanyInventDim низя. Будьте бдительны
|
|
17.12.2008, 15:08 | #3 |
Участник
|
Да уж, похоже эта функциональность не достаточно тестировалась, либо вообще не доделана.
Посмотрим на метод 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; } Во-вторых, явная "ашипка" при выборе элемента контейнера по 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)); ... В AX2009 - все то же самое. Интересно, кто-нибудь вообще использовал/тестировал "TradeInterCompany" в AX4 и AX2009? |
|