Показать сообщение отдельно
Старый 22.05.2013, 15:06   #7  
IvanS is offline
IvanS
Участник
Аватар для IvanS
 
241 / 44 (2) +++
Регистрация: 30.06.2006
Адрес: Екатеринбург
Хочу добавить свои 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).