|
![]() |
#1 |
Участник
|
Хочу добавить свои 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; } |
|
|
За это сообщение автора поблагодарили: dn (4), _scorp_ (5). |