Цитата:
Сообщение от
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]);
Что быльше делать, я так понимаю, ясно