Как обычно, изучение класса 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, вызывающий наш класс и проверяем. Это самый простейший пример использования класса. Кто хочет использовать дополнительные возможности то будет полезным знать о других методах класса