Сегодня нашел баг в классе 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;
}