Как обычно, изучение класса RunBase начинается с рассмотрения примеров в стандартной Axapte таких как классы Tutorial_RunbaseBatch, Tutorial_RunbaseForm, являющимися наследниками RunBase. В основе лежит концепция формирования формы диалога из класса. Перед разработкой диалога необходимо определится с дизайном и функционалом. Это упростит разработку. Например, откуда будет вызываться диалог. Обычно это использование MenuItems. Рассмотрим пример изменения дня рождения у сотрудника. Для запуска диалога необходимо определить, как минимум, следующие методы : classDeclaration, pack, unpack, dialog, main. При вызове класса активизируется статический метод main(). В нем определяется вызов диалога . Для добавления заголовка на форму необходимо использовать метод description(). Для получения значения даты из диалога используется метод getFromDialog() Для получения текущего курсора используется метод initFromArgs(). Выполнение необходимого функционала можно закладывать в run() или do().
Создаем класс
public class Example_RunBase extends RunBase {
EmplTable emplTable;
//определение пременной в диалоге transDate transDate;
//определение поля диалога dialogField dlgTransDate;
// как правило стандартный набор #define.CurrentVersion(1) #define.Version1(1) #localmacro.CurrentList //хранение переменной transDate #endmacro
}
Методы pack и unpack можно переносить без изменений
public Object dialog() {
DialogRunbase dialog = super();
;
//определяется форма диалога, количесто полей, закладок. dlgTransDate = dialog.addFieldValue(typeid(transDate),transDate);
return dialog;
}
static ClassDescription description() {
return "Разработка диалога"; //определяем заголовок формы
}
public boolean getFromDialog() { ;
// получение значения даты с диалога transDate = dlgTransDate.value();
return super();
}
static void main(Args args) {
Example_RunBase example;
;
//можно использовать для запрета вызова не через menuItem if (!args || args.dataset() != tablenum(emplTable)) throw error(strfmt("@SYS25516"));
// активизируем класс example = new Example_RunBase();
//получаем значение курсора example.initFromArgs( args);
стандартный набор запускающий диалог if (example.prompt()) example.run(); } public void initFromArgs(Args _args) { ; emplTable = _args.record(); получаем значение курсора }
void run() выполняем необходимые действия { boolean ok = true; при нажатии
; if (ok)
emplTable.BirthDate=transDate;
}
Размещаем на форме EmplTable menuItemButton, вызывающий наш класс и проверяем. Это самый простейший пример использования класса. Кто хочет использовать дополнительные возможности то будет полезным знать о других методах класса