Показать сообщение отдельно
Старый 20.04.2010, 17:12   #1  
Alexanderis.ua is offline
Alexanderis.ua
Участник
 
53 / 40 (2) +++
Регистрация: 25.12.2008
Адрес: Киев, Украина
! Осторожно, грабли! Конфигуратор продукции
Доброго времени суток, господа.

Может уже кто-то писал, но я не нашел.

DAX 2009 EE SP1 RU3.

Баг проявился после добавления функционала разноски по профилям учета (как раз таки RU3).

В конфигураторе продукции при добавлении в дерево модели (или как его перевели "модельное дерево") узла Спецификация, вылетает ошибка в методе buildFieldsTable формы PBATreeBOM:
X++:
       fieldName           = fieldid2name(_tableId,pbaDictFieldGroup.field(counter2));
        pbaFieldIdVar       = fieldname2id(_tableId,fieldName+'Var');

        formDataObject      = _datasource.object(pbaDictFieldGroup.field(counter2));
        formDataObjectVar   = _datasource.object(pbaFieldIdVar);

        if (_table.(pbaFieldIdVar)) //  <<<<<<<< тут трассировка стека
        {
Связано это с тем, что строчка
X++:
 pbaFieldIdVar       = fieldname2id(_tableId,fieldName+'Var');
не предполагает наличия в таблице (как минимум) PBATreeInventDim полей с суффиксом _RU.
Так, поле InventProfileId_RU превращается в поле InventProfileId_RUvar в то время, как в таблице поле называется InventProfileIdVar_RU.

Пока поставил костыль:
X++:
        // SOI -->
        if (fieldName == "InventProfileId_RU")
            pbaFieldIdVar = fieldname2id(_tableId,"InventProfileIdVar_RU");
        else
        // SOI <--
            pbaFieldIdVar       = fieldname2id(_tableId,fieldName+'Var');
правильней, конечно, анализировать наличие суффикса, но было лень . Хотя опять же - понятие правильности к такому коду уже не применимо, ИМХО.

Вот такие вот пироги с котятами. Их ешь, а они мяукают.

З.Ы. В RU4 не исправлено. Неужели никто не пользуется конфигуратором? О_о
__________________
If it ain't broke, take it apart and find out why (с)
За это сообщение автора поблагодарили: Ingar (1), Poleax (1), gl00mie (3), Aleks_K (1).