Skip to end of metadata
Go to start of metadata
Постановка задачи
Создать справочник "Расширенный справочник" в прикладном модуле Внутренние документы.
Справочник состоит из полей:
Расширенный справочник должен находится в разделе "Справочники\Расширенные справочники".
Создать справочник может только пользователь с ролью ClassEditor.
Инструмент
Палитра инструментов
Реализация
Этап 1. Создание формы справочника
Данный этап разделяется на три части:

Создание схемы
Создать схему ExtendsDirectory, в качестве наследника указать схему TNObject.
Добавить в схему свойства, которые должны быть в справочнике.
<?xml version='1.0' encoding='UTF-8'?>
<schemas xmlns="http://www.intertrust.ru/schema/palette/tn-schema">
<schema extends="TNObject" name="ExtendsDirectory">
<meta>
<documentation>Пример расширенного справочника</documentation>
</meta>
<string name="type" default-value="Расширенный справочник" computed="true"/>
<string name="showIdent" computed="true" temporal="true">
<calc-values>
<script lang="SPEL" event="open"><![CDATA['Справочник']]></script>
</calc-values>
</string>
<string name="value">
<meta>
<documentation>Значение</documentation>
</meta>
<storage-field name="value"/>
</string>
<string name="description">
<meta>
<documentation>Описание</documentation>
</meta>
<storage-field name="description"/>
</string>
</schema>
</schemas>
Создание формы
Создать форму ExtendsDirectoryForm на основании схемы ExtendsDirectory.
На форме создать три основные секции: Header (Шапка), RootMenu (Акции), Attributes (Реквизитная часть).
В Header подключить свойства схемы: type и showIdent
В Attributes подключить свойства схемы: value и description
В RootMenu создать штатный набор действий:
- button.hideSystem.Save=Скрыть системную кнопку Сохранить (системная операция)
- button.Create=Создать справочник (указать схему, по которой будет создаваться форма ExtendsDirectory)
- button.SaveNew=Сохранить (добавить системные условие применения TNObjectIsShowSaveButtonForNew)
- button.Save=Сохранить (добавить системные условие применения TNObjectIsShowSaveButton)
- button.Edit=Редактировать (добавить условие применения, чтобы видели пользователи с ролью ClassEditor)
- button.Delete=Удалить (добавить js-обработчик операций и условие применения, чтобы видели пользователи с ролью Supervisor и Trash)
<?xml version='1.0' encoding='UTF-8'?>
<ui xmlns="http://www.intertrust.ru/schema/palette/tn-ui">
<form id="ExtendsDirectoryForm" schema-ref="ExtendsDirectory" showtabs="true" projection="default">
<properties>
<hide condition-union="AND">
<negative-condition-ref ref="edit" />
<negative-condition-ref ref="read" />
</hide>
</properties>
<component>
<section id="Header">
<component>
<field attribute-ref="showIdent">
<properties>
<read-only condition-union="AND">
<condition>true</condition>
</read-only>
</properties>
<appearance importance="normal" align="left">
<label-style unit="symbol" width="4" />
<alt-appearancies>
<alt-appearance>
<appearance-ref ref="css_headerElementWithIcon" />
<enable condition-union="AND">
<condition>true</condition>
</enable>
</alt-appearance>
</alt-appearancies>
</appearance>
</field>
<section group="true" id="Header_Top">
<component>
<field attribute-ref="type">
<properties>
<read-only condition-union="AND">
<condition>true</condition>
</read-only>
</properties>
<appearance importance="normal">
<label-style>
<style id="tunFontSize14"/>
<style id="tunBold" />
</label-style>
</appearance>
</field>
</component>
<appearance field-layout="horizontal" />
</section>
</component>
</section>
<section id="RootMenu">
<component>
<button name="${button.hideSystem.Save:Скрыть системную кнопку Сохранить}">
<properties>
<hide condition-union="AND">
<condition-ref ref="openAtDirectory" />
<condition>true</condition>
</hide>
</properties>
<action>
<system name="SAVE" />
</action>
</button>
<button name="${button.Create:Создать справочник}">
<icon code="90" />
<properties>
<hide condition-union="AND">
<negative-condition-ref ref="read"/>
</hide>
</properties>
<action>
<custom>
<create schema-ref="ExtendsDirectory">
<module-current>true</module-current>
</create>
</custom>
</action>
</button>
<button name="${button.SaveNew:Сохранить}">
<icon code="92" />
<properties>
<hide condition-union="AND">
<negative-condition-ref ref="TNObjectIsShowSaveButtonForNew" />
</hide>
</properties>
<action>
<custom>
<save />
</custom>
</action>
</button>
<button name="${button.Save:Сохранить}">
<icon code="92" />
<properties>
<hide condition-union="AND">
<negative-condition-ref ref="TNObjectIsShowSaveButton" />
</hide>
</properties>
<action>
<custom>
<save-existing />
</custom>
</action>
</button>
<button name="${button.Edit:Редактировать}">
<properties>
<hide condition-union="AND">
<condition-ref ref="isClassEditor" />
<condition>true</condition>
</hide>
</properties>
<action>
<system name="EDIT" />
</action>
</button>
<button name="${button.Delete:Удалить}">
<properties>
<hide condition-union="AND">
<negative-condition-ref ref="classifierCanDelete"/>
</hide>
</properties>
<icon code="94"/>
<action position="12">
<custom>
<operation>
<handler-ref ref="DeleteClassifier"/>
</operation>
</custom>
</action>
</button>
</component>
</section>
<section name="${tab.Attributes:Реквизиты}" id="Attributes">
<component>
<field attribute-ref="value" name="${field.Value:Значение:}">
<properties>
<requre condition-union="AND">
<negative-condition-ref ref="edit" />
<condition>true</condition>
</requre>
</properties>
<appearance importance="normal">
<limit max-lenght="512" />
</appearance>
</field>
<field attribute-ref="description" name="${field.Description:Описание:}">
<properties>
<requre condition-union="AND">
<negative-condition-ref ref="edit" />
<condition>true</condition>
</requre>
</properties>
<appearance importance="normal">
<limit max-lenght="512" />
</appearance>
</field>
</component>
</section>
</component>
</form>
</ui>
Создание документа
В документе указать:
- схема ExtendsDirectory,
- имя формы TunableObjectClassifier,
- модуль InternalDocs
<?xml version='1.0' encoding='UTF-8'?>
<catalog xmlns="http://www.intertrust.ru/schema/palette/cat-ui">
<tunable-object form-name="TunableObjectClassifier" name="${ExtendsDirectory:Расширенный справочник}" schema-ref="ExtendsDirectory">
<module ident="InternalDocs"/>
</tunable-object>
</catalog>
Этап 2. Отображение данных справочника

Создание коллекции