Показать сообщение отдельно
Старый 08.04.2013, 12:58   #1  
_scorp_ is offline
_scorp_
Участник
Аватар для _scorp_
MCBMSS
 
488 / 369 (13) ++++++
Регистрация: 25.07.2007
Адрес: Москва
Баг SysInfoAction_MenuItemRun_RU
Сегодня нашел баг в классе SysInfoAction_MenuItemRun_RU. Воспроизводится в версиях 3, 4 2009. За 2012 сказать не могу. Смысл в следующем:
Хочется сделать так, чтобы по двойному клику в инфологе пользователь переходил к конкретной записи в нужной форме. Класс, как я понимаю, для этого и задумывался. Но в нем не пакуется args. Соответственно работает только запуск нужного MenuItem, а все параметры, переданные в args - теряются.

Лечится добавлением параметров для сериализации данных из args в методы pack и unpack класса SysInfoAction_MenuItemRun_RU. Например:

X++:
public container pack()
{
    return [#CurrentVersion,#CurrentList, args.lookupField(), args.lookupValue(), args.record(), super()];
}

public boolean unpack(container _packedClass, Object _object = null)
{
    Integer     version = RunBase::getVersion(_packedClass);
    Container   con;
    FieldId     loockupField;
    str         lookupValue;
    Common      common;
    ;

    switch (version)
    {
        case #CurrentVersion:

            [version, #CurrentList, loockupField, lookupValue, common, con] = _packedClass;
            args.lookupField(loockupField);
            args.lookupValue(lookupValue);
            args.record(common);
            super(con, _object);

            break;

        default:
            return false;
    }

    return true;
}
За это сообщение автора поблагодарили: Logger (5), IvanS (1), alex55 (3), S.Kuskov (2).