Показать сообщение отдельно
Старый 16.05.2014, 14:16   #8  
michel1971 is offline
michel1971
Участник
 
79 / 80 (3) ++++
Регистрация: 14.01.2011
Цитата:
Сообщение от userax2009 Посмотреть сообщение
форма Б, которая открывается по кнопке, должна показывать историю изменения для выбранного поля на форме А
по кнопке не получится, так как при нажатии на кнопку на гриде уже никакой объект не выбран. В общем случае свойства вызываеомго контрола можно получить вот так:
X++:
client static container getCallerControlProperty(Args args, container   _propertyCon)
{
    container           res;
    Object              callerControl;
    FormRun             caller;
    SysDictClass        dictClass;
    ContainerEnumerator ce;
    IdentifierName      methodName;
    #Properties
    ;

    if (args && args.caller())
    {
        if (SysDictClass::isEqualOrSuperclass(args.caller().handle(), classnum(FormRun)))
        {
            caller = args.caller();
            callerControl = caller.selectedControl();

            dictClass = new SysDictClass(classidget(callerControl));

            ce = new ContainerEnumerator(_propertyCon);

            while (ce.moveNext())
            {
                methodName = ce.current();

                if (dictClass.hasObjectMethod(methodName))
                    res += dictClass.callObject(methodName, callerControl);
                else
                    res += "";
            }


        }
    }

    return res;
}
В вашем случае на той форме откуда вызываете перекройте task и при определенном его значении вызывайте свою форму.
на вызываемой форме вызовите следующий код:
X++:
c = getCallerControlProperty(element.args(), [#PropertyDatasource, #PropertyDataField]);
Что быльше делать, я так понимаю, ясно