ВЫЗОВ ЭКРАННЫХ ФОРМ КЛАССОВ МЕТАСХЕМЫ
Ввод, просмотр и редактирование объекта класса метасхемы осуществляется с помощью экранных форм. Как правило, для осуществления всех операций применяется единая форма, описанная в методе Form.
Для вызова формы класса используется универсальная процедура formld.p.
formld.p (iClass, iSurrogate, iParamLst, iMode, iLevel).
- iClass - класс объекта, тип CHARACTER;
- iSurrogate - суррогат существующего объекта, тип CHARACTER;
- iParamLst - контекст, тип CHARACTER;
- iMode - режим вызова формы тип INT64;
- iLevel - строка отображения фрейма, тип INT64.
По умолчанию formld.p осуществляет вызов метода Form указанного класса iClass. Иногда, в некоторых классах требуется разделение экранных форм для различных операций. Так например, для просмотра объекта может применяться одна форма (описанная например в методе Look), а для редактирования и ввода нового объекта класса - другая (описанная например в методе Modify).
В таком случае в параметре iClass необходимо указать метод класса содержащего требуемую экранную форму и через разделитель ~n класс объекта. Другими словами, передаваемое значение в параметре iClass будет иметь следующий формат:
<код метода класса> + "~n" + <код класса>
iSurrogate является ссылкой на конкретный объект класса с которым будет осуществляться работа в экранной форме. При вызове формы ее поля будут заполнены соответствующими значениями реквизитов указанного объекта.
Состав суррогата для интересующего класса можно посмотреть в файле surr.i. Указание суррогата производиться только для работы с существующими объектами класса, при вызове формы ввода нового объекта он должен быть пустым.
Режим вызова формы (ввод нового объекта, просмотр/редактирование/удаление существующего объекта) определяется глобальными переменными объявленными в form.def:
Переменная | Значение | Описание |
&MOD_ADD | 1 | Ввод новой записи |
&MOD_ADD_STORE | 11 | Ввод записи по предустановленному набору данных |
&MOD_EDIT | 2 | Изменение существующей записи |
&MOD_EDIT_STORE | 12 | Изменение существующей записи по предустановленному набору данных |
&MOD_VIEW |
3 | Просмотр существующей записи |
&MOD_DELETE | 4 | Удаление записи |
&MOD_JOIN |
5 | После джойна |
&MOD_TEMPL | 6 | Ввод шаблона |
&MOD_PREPARE | 7 | Получить информацию о структуре набора данных |
&MOD_VIEW_DATE | 8 | Просмотр формы со значениями темпорированных реквизитов на дату |
Следует отметить, что процедура формы может поддерживать не все режимы вызова.
Добавление нового объекта:
{form.def}
RUN formld.p ("person",
"",
"",
{&MOD_ADD},
4).
Просмотр существующего объекта:
{form.def}
RUN formld.p ("person",
"1001",
"",
{&MOD_VIEW},
4).