Тема: InteractionClass
Показать сообщение отдельно
Старый 01.10.2016, 12:22   #4  
Cardagant is offline
Cardagant
Участник
 
317 / 54 (2) ++++
Регистрация: 11.10.2011
Приветствую!

Можно попробовать следующее:

Создайте новый метод в своём Interaction классе, который выполнится вместо оригинального метода clicked():
X++:
void info1(FormButtonControl _formButtonControl)
{    
    _formButtonControl.clicked(); // super()
    
    info('1'); // some code added just for example
}
В этом методе вы можете выполнить super() вызвав оригинальный не перекрытый метод clicked()
X++:
_formButtonControl.clicked();
Также можете добавить свой код куда необходимо.

После этого на initialized() методе Interaction класса написать что-то вроде:

X++:
Common         externalRecord;
FormDataSource formDS;
FormRun        formRun;
FormButtonControl  formButtonControl;

super();

externalRecord = this.listPage().activeRecord(identifierStr(<YourDSName>));

if(externalRecord.isFormDataSource())
{
    formDs   = externalRecord.dataSource();
    formRun = formDs.formRun();

    if (formRun)
    {
        formButtonControl = formRun.design().controlName(formControlStr(<YourFormName>,<YourButtonControlName>));

        if(formButtonControl)
        {
            formButtonControl.registerOverrideMethod(
                methodStr(FormButtonControl,clicked), // метод кнопки, который хотите перекрыть
                methodStr(<YourClassInterationName>, info1),          // метод, который будет вызван
                this);                 // экземпляр класса, который содержит указанный выше метод[
        }
    }
}

Последний раз редактировалось Cardagant; 01.10.2016 в 12:29.