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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 18.06.2009, 17:32   #1  
petergunn is offline
petergunn
Участник
 
118 / 274 (10) ++++++
Регистрация: 30.08.2005
Адрес: Tyumen
? Баг в InventItemType?
Axapta 3.0 SP5, Dynamics Ax 4.0 SP2 (application version: 4.0.2501.347), Dynamics Ax2009 (application version: 5.0.1001.176)

Есть подозрение что ряд методов класса InventItemType на SYS слое содержат потенциальный (скрытый) bug в реализации. Конкретнее речь о методах:
  • queryAddBomRouteItemTypes(...)
  • valueCanBeProduced()
  • valueCanBeTransferred()
  • valueCanHaveBOM()
  • valueMustBeReqCreated()
  • valueMustInventBeControlled()
В AX2009 к ним можно добавить еще метод:
  • valueCanNotHaveBOM()
Подозрение в этих методах вызывает использование итератора i конструкции цикла в качестве значения перечисления ItemType :
X++:
    ...
    DictEnum                dictEnum;
    Counter                 i;
    InventItemType          inventItemType;
    str                     itemTypeTxt;
    ;

    dictEnum = new DictEnum(enumnum(ItemType));
    for (i=0;i<dictEnum.values();i++)
    {
        inventItemType = InventItemType::construct(i);
        ...
        itemTypeTxt += queryValue(dictEnum.value2Name(i));
    }
На SYS слое значения base enum ItemType (при общем количестве dictEnum.values() = 3) заведены последовательно: Item = 0, BOM = 1, Service = 2 и бага не проявляется.
В российской локализации добавлен 4-ый элемент: Asset_RU = 100 (в версии 3.0 SP3 Asset_RU = 3, в версии 3.0 SP4 Asset_RU = 100), после чего бага в реализации методов уже становится заметной, т.к. порядковый номер элемента перечисления не совпадает с его значением.

Для наглядности на примере пары (дополняющих друг друга по смыслу) методов InventItemType::valueCanHaveBOM() и InventItemType::valueCanNotHaveBOM() в AX2009:
X++:
static void jbInventItemTypeCheck(Args _args)
{
    ;
    info( strfmt( "%1", InventItemType::valueCanHaveBOM() ) ) ;
    info( strfmt( "%1", InventItemType::valueCanNotHaveBOM() ) ) ;
}
результат:
Цитата:
Сообщение (18:47:01)
- Спецификация
- Номенклатура,Услуга,3
В качестве варианта исправления (использовать dictEnum.index2XXXX()):
X++:
    ...
    DictEnum                dictEnum;
    Counter                 i;
    InventItemType          inventItemType;
    str                     itemTypeTxt;
    ;

    dictEnum = new DictEnum(enumnum(ItemType));
    for (i=0;i<dictEnum.values();i++)
    {
        inventItemType = InventItemType::construct(dictEnum.index2Value(i));
        ...
        itemTypeTxt += queryValue(dictEnum.index2Name(i));
    }
или
X++:
    ...
    DictEnum                dictEnum;
    Counter                 i;
    InventItemType          inventItemType;
    str                     itemTypeTxt;
    ItemType                itemType;
    ;

    dictEnum = new DictEnum(enumnum(ItemType));
    for (i=0;i<dictEnum.values();i++)
    {
    	itemType = dictEnum.index2Value(i);
        inventItemType = InventItemType::construct(itemType);
        ...
        itemTypeTxt += queryValue(dictEnum.value2Name(itemType));
    }
Изображения
 
За это сообщение автора поблагодарили: kashperuk (5), konopello (3), Bober (1).
Старый 19.06.2009, 09:52   #2  
Bober is offline
Bober
Участник
 
311 / 104 (4) +++++
Регистрация: 29.05.2007
Спасибо. В Ax 4.0 SP2 тоже осталось ItemType::Asset_RU = 100.
Теги
ax2009, ax3.0, ax4.0, inventitemtype, баг, номенклатура

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Странный баг при расширении Enum DTD DAX: Программирование 1 07.05.2009 18:45
Баг на форме "Проводки по сопоставлению" S.Kuskov DAX: Программирование 12 29.04.2009 19:19
Нашёл баг, причем очень похоже на баг ядра (SP5 FP2 KR2) Deep Dreamer DAX: Программирование 5 10.11.2006 18:04
Баг в методе класса OLAPCreateSchema Косых Артём DAX: Программирование 2 28.04.2006 12:20
баг в 2.5. Будьте осторожнее с символом "_" подчеркивание levsha DAX: Программирование 5 07.12.2004 12:26

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

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

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