БРАУЗЕР КЛАССОВ МЕТАСХЕМЫ
Для просмотра перечня классов метасхемы существует процедура:
getclass.p (in-title, in-parent-class-code, in-show-parent, in_right_type, in-level).
- in-title - заголовок браузера, перечень классов, тип CHAR;
- in-parent-class-code - родительский класс, тип CHAR;
- in-show-parent - логическое значение отражающее отображать или нет родительский класс, тип LOGICAL;
- in_right_type - уровень доступа пользователя к классам для отображения, тип CHAR:
- R - чтение,
- W - редактирование,
- D - удаление,
- C - создание.
- in-level - уровень с которого будет выведен браузер, тип INTEGER.
in-title является составным параметром состоящим из 2-х элементов разделенных CHR(251). Первый элемент определяет заголовок браузера (теоретически, но в реальности этого не происходит, заголовок браузера фиксированный). Второй элемент определяет перечень отображаемых классов в формате CAN-DO. Классы данного перечня должны являться подклассами in-parent-class-code. Второе значение является необязательным.
Вывод классов может быть либо иерархический, либо линейный. По умолчание осуществляется иерархический вывод классов. Если указан список классов в in-title, то вывод будет линейным.
При выводе классов накладываются права пользователя. Т.е. пользователю будут отображены только те классы, на которые он имеет соответствующие права, определенные в in_right_type.
Возвращаемым значением pick-value отобранной записи является код класса.
Примеры:
Иерархический вывод
{globals.i}
{tmprecid.def}
DO TRANSACTION:
RUN getclass.p ("ВКЛАДЫ",
"dep_person",
YES,
"R",
4).
END.
Линейный вывод
{globals.i}
{tmprecid.def}
DO TRANSACTION:
RUN getclass.p ("ВКЛАДЫ" + CHR(251) + "*",
"dep_person",
YES,
"R",
4).
END.
Практический пример:
В АБС Бисквит не на все классы метасхемы имеется соответствующее меню просмотра его объектов. Так например, договора страхования по кредиту (класс insurance) можно просмотреть только в рамках отдельно взятого кредитного договора. Если вам необходимо отобрать (просмотреть) все договора страхования заведенные в АБС и произвести над ними какие-то стандартные операции, например групповое изменение доп. реквизита и т.д., то это вызывает затруднение. Предлагаю написать небольшую процедуру, которая позволит осуществить выбор подклассов класса loan в браузере классов метасхемы, с последующим выводом браузера объектов выбранного класса.
{globals.i}
{tmprecid.def}
DO TRANSACTION:
RUN getclass.p ("ДОГОВОРА",
"loan",
YES,
"R",
4).
END.
DO TRANSACTION:
RUN browseld.p (pick-value,
"filial-id",
shFilial,
"",
4).
END.