AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 15.12.2008, 12:50   #1  
Bishop is offline
Bishop
Участник
 
89 / 60 (3) ++++
Регистрация: 12.08.2004
Адрес: Москва
Ошибка в InterCompanyInventDim (AX4 и AX2009)
В процессе добавления новой складской аналитики обнаружена ошибка в методе dim2dimParm() таблицы InterCopmanyInventDim.

В коде вместо полей таблицы InterCopmanyInventDim указаны поля InventDim.

Будьте бдительны
За это сообщение автора поблагодарили: kashperuk (5).
Старый 16.12.2008, 16:13   #2  
Sada is offline
Sada
Программатор
Аватар для Sada
 
1,450 / 153 (8) ++++++
Регистрация: 29.03.2005
Адрес: Толи Барнаул, толи Москва
Просто поменять там InventDim на InterCompanyInventDim низя. Будьте бдительны
Старый 17.12.2008, 15:08   #3  
Bishop is offline
Bishop
Участник
 
89 / 60 (3) ++++
Регистрация: 12.08.2004
Адрес: Москва
Да уж, похоже эта функциональность не достаточно тестировалась, либо вообще не доделана.
Посмотрим на метод 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?
Теги
ошибка

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
axcoder: AxPath pugin for Tabax which works with Ax3, Ax4, Ax2009 Blog bot DAX Blogs 0 08.11.2008 02:11
AX2009 и AX4.0 совместимый код. Как? Alex_KD DAX: Программирование 6 08.05.2008 01:10
AX4 Ошибка импорта Alexandr A. Osipkin DAX: Администрирование 1 17.01.2007 08:48
Ошибка в формате числа. 36AC DAX: Программирование 7 19.10.2006 10:04
Русская локализация Axapta 3 ? SlavaK DAX: Администрирование 59 01.07.2003 22:38

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 07:18.