Хочу добавить свои 5 копеек по этому поводу.
Данный Pack,unpack хорошо работает только если передается в args.record строка. А если нужно, чтобы открывалась форма и находила нужную запись, то есть использовались параметры lookupField и lookValue, то выдается ошибка "Неправильный тип элемента в вызове ConIns";
Поэтому данные значения перенес в CurrentList и все стало работать.
Выглядит это так:
X++:
class SysInfoAction_MenuItemRun_RU extends SysInfoAction
{
MenuItemType menuItemType;
MenuItemName menuItemName;
Args args;
FieldId loockupField;
str lookupValue;
Common common;
#define.CurrentVersion(3)
#localmacro.CurrentList
menuItemType,
menuItemName,
loockupField,
lookupValue,
common
#endmacro
}
public void new(MenuItemType _menuItemType, MenuItemName _menuItemName, Args _args = null)
{
;
menuItemType = _menuItemType;
menuItemName = _menuItemName;
if(_args)
{
args = _args;
loockupField = _args.lookupField();
lookupValue = _args.lookupValue();
common = _args.record();
}
else
{
args = new Args();
}
}
//Bugfix исправление потери дополнительных параметров
public container pack()
{
;
return [#CurrentVersion, #CurrentList]+ super();
}
//Bugfix исправление потери дополнительных параметров
public boolean unpack(container _packedClass, Object _object = null)
{
Integer version = RunBase::getVersion(_packedClass);
Container con;
;
switch (version)
{
case #CurrentVersion:
[version, #CurrentList, con] = _packedClass;
args.lookupField(loockupField);
args.lookupValue(lookupValue);
args.record(common);
super(con, _object);
break;
default:
return false;
}
return true;
}