Создание стандартного раздела в 7.х
Общие положения
1. Создание структуры объектов разделов
2. Создание страниц раздела
3. Генератор шаблонов схем стандартного раздела
4. Регистрация раздела в системе
4.1. Регистрация модуля раздела
4.2. Регистрация страницы редактирования раздела
5. Настройка полей карточки раздела
6. Настройка колонок реестра раздела
Пример создания стандартного раздела
1. Постановка задачи
2. Создание структуры объектов
2.1. Создание объекта Обращение
2.2. Создание объекта Группа обращения
2.3. Создание объекта Обращение в группе
2.4. Создание объекта Файл обращения
3. Создание страниц раздела
3.1. Создание схемы модели представления с раздела
3.2. Создание схемы модели представления раздела
4. Регистрация раздела в системе
4.1. Регистрация раздела
4.2. Регистрация карточки раздела
5. Настройка колонок реестра
Общие положения
Создание стандартного раздела в системе предполагает последовательную реализацию следующих шагов:
· Создание структуры объектов раздела.
· Создание страниц раздела.
· Регистрация раздела в системе.
· Настройка полей карточки редактирования и колонок реестра раздела.
| К сведению Все пользовательские разработки в 7.0 должны осуществляется в рамках пакета. Поэтому предварительно должен быть создан пакет, в котором будет создаваться новый раздел. Этот пакет должен быть зависим от пакета NUI. |
Для функционирования стандартного раздела в системе должны быть созданы следующие объекты:
Правило именования объекта | Назначение объекта | Родитель | Примечание |
[Имя объекта раздела] | Основной объект раздела | Базовый объект | Для объекта необходимо установить первичную колонку для отображения. |
[Имя объекта раздела]Folder | Группа объекта. Служебный объект для корректной работы группировки записей в разделе. Формирует общую структуру дерева групп раздела. | BaseFolder | |
[Имя объекта раздела]InFolder | Объект в группе. Служебный объект для корректной работы группировки записей в разделе. Определяет связи между записями раздела и группами раздела, в которые они входят. | BaseItemInFolder | В объект должна быть добавлена колонка-справочник. В качестве объекта справочника указывается объект раздела. |
[Имя объекта раздела]File | Файл объекта. | File | В объект должна быть добавлена колонка-справочник. В качестве объекта справочника указывается объект раздела. |
Для функционирования стандартного раздела в системе необходимо создать следующие клиентские схемы:
· Страница модели представления раздела (основная страница раздела).
· Схема модели представления карточки (страница редактирования раздела).
Общий алгоритм создания страницы раздела (страницы редактирования раздела):
· В конфигурации создать схему модели представления раздела (карточки).
· Для схемы задать ее свойства и зависимости.
| Важно Схема модели представления карточки имеет одну обязательную зависимость - объект раздела. Схема модели представления раздела имеет две обязательные зависимости: · объект раздела · страница карточки раздела |
· Добавить в схему js-код, который реализует логику модуля раздела. Код может быть написан вручную «с нуля» либо может быть сгенерирован при помощи генератора шаблонов схем для стандартного раздела.
· Опубликовать страницу.
Наименования и заголовки страниц раздела формируются по определенным правилам (табл.1) :
Таблица 1. Правила формирования названия и заголовка страниц раздела
Страница | Правило формирования названия | Правило формирования заголовка | Пример |
Основная страница раздела | [Название объекта раздела]Section | Страница раздела [заголовок объекта раздела в родительном падеже] | Название: ContactSection Заголовок: Страница раздела контакта |
Страница редактирования раздела | [Название объекта раздела]Page | Страница [заголовок объекта раздела в родительном падеже] | Название: ContactPage Заголовок: Страница контакта |
Генератор шаблонов схем – это вспомогательный конфигурационный инструмент, который для заданного объекта позволяет генерировать шаблоны js-кода модулей карточки раздела этого объекта, страницы раздела объекта, детали раздела.
| Важно Генератор шаблонов схем доступен начиная с версии BPMonline 7.0.1.100. |
Порядок применения генератора шаблонов:
1. Найти схему NUISchemaGenerator в пакете NUI.
2. Щелкнуть правой кнопкой мыши по найденной схеме и в контекстном меню выбрать пункт [Запустить] (рис. 1.). В результате отобразится окно генератора шаблонов схем.

Рисунок 1. Запуск генератора шаблонов схем.
2. В поле [Объект раздела] выбрать объект, который является основным объектом раздела.
3. Поставить признак [Сгенерировать страницу редактирования] для генерации шаблона кода схемы страницы редактирования раздела.
4. Поставить признак [Сгенерировать страницу раздела] для генерации шаблона кода схемы страницы раздела.
5. Нажать кнопку [Сгенерировать]. В результате в полях [Схема карточки] и [Схема раздела] отобразятся сгенерированные шаблоны кода для соответствующих схем (рис. 2). Далее этот код копируется и переносится в соответствующие схемы представлений.

Рисунок 2. Пример сгенерированных шаблонов модулей схем раздела.
Для того, чтобы раздел отобразился в общем списке разделов в главном меню, его необходимо зарегистрировать. Регистрация состоит из двух этапов:
· Регистрация модуля раздела.
· Регистрация страницы редактирования (карточки) раздела.
4.1. Регистрация модуля раздела
Для того, чтобы зарегистрировать раздел в системе, необходимо внести соответствующую информацию в системные таблицы. Это можно сделать, выполнив скрипты для вставки записей в следующие таблицы (табл. 2).
Таблица 2. Таблицы, участвующие в регистрации раздела
Таблица | Колонка | Значение колонки |
SysModuleEntity Таблица объектов разделов. | SysEntitySchemaUId | Уникальный идентификатор схемы объекта раздела. Колонка [UId] таблицы SysSchema для основного объекта раздела. |
SysModule Таблица модулей системы. | Caption | Заголовок раздела. Этот заголовок будет отображаться в панели основного меню разделов. Пример: Контакты |
SysModuleEntityId | Идентификатор объекта раздела. Значение колонки [Id] таблицы [SysModuleEntity] для объекта раздела. | |
FolderModeId | Идентификатор используемого для раздела режима отображения групп. Значение колонки [Id] таблицы [SysModuleFolderMode]. | |
GlobalSearchAvailable | Колонка присутствует для совместимости с предыдущими версиями. Значение колонки: 1. | |
HasAnalytics | Определяет, имеет ли раздел блок аналитики. 1 – раздел имеет блок аналитики. 0 – раздел не имеет блока аналитики. | |
HasActions | Определяет, имеет ли раздел меню [Действия]. 1 – раздел имеет меню [Действия]. 0 – раздел не имеет меню [Действия]. | |
HasRecent | Колонка присутствует для совместимости с предыдущими версиями. Значение колонки: 0. | |
Code | Для стандартного раздела здесь указывается название объекта раздела. Пример: Для раздела [Контакты] значение будет Contact. | |
ModuleHeader | Заголовок модуля. Этот заголовок будет отображаться в качестве заголовка на странице раздела. Пример: Список контактов | |
SectionModuleSchemaUId | Уникальный идентификатор схемы модуля стандартного раздела. Колонка [UId] таблицы SysSchema для модуля стандартного раздела (SectionModule). Для стандартного раздела это значение равно 47BEF7B5-5EA607-D4E39D0A19D0 | |
SectionSchemaUId | Уникальный идентификатор схемы раздела. Колонка [UId] таблицы [SysSchema] для регистрируемого раздела. Значение колонки можно получить следующим запросом: SELECT TOP 1 UId from SysSchema where Name = [Название_страницы_раздела] Пример: SELECT TOP 1 UId FROM SysSchema where Name = 'ContactSection' | |
CardModuleUId | Уникальный идентификатор схемы модуля страницы редактирования стандартного раздела. Колонка [UId] таблицы [SysSchema] для модуля страницы редактирования стандартного раздела (CardModule). Для стандартного раздела это значение равно 1DC02ACE-BEC4BBB5 | |
Attribute | Название колонки, которая содержит тип объекта раздела. Пример: Колонка Type объекта Активность (Activity). Если объект не классифицируется по типам, данная колонка не заполняется. | |
CardSchemaUId | Уникальный идентификатор схемы страницы редактирования регистрируемого раздела. Значение колонки можно получить следующим запросом: SELECT TOP 1 UId from SysSchema where Name = [Название_страницы редактирования_раздела] Пример: SELECT TOP 1 UId FROM SysSchema where Name = 'ContactPage' | |
SysModuleInSysModuleFolder Таблица развязки «раздел – рабочее место раздела» | SysModuleId | Идентификатор модуля регистрируемого раздела. Колонка [Id] таблицы [SysModule] для регистрируемого раздела. |
SysModuleFolderId | Идентификатор рабочего места раздела раздела. Колонка [Id] таблицы [SysModuleFolder]. Для разделов, которые должны располагаться в основном меню это значение равно F330F0C2-3EE4-4A73-9ACCA19B | |
Position | Позиция раздела в общем списке разделов основного меню. | |
SysModuleLcz Таблица локализуемых значений элементов интерфейса раздела: · заголовок раздела в основном меню, · заголовок основной страницы раздела. | RecordId | Идентификатор модуля раздела. Колонка [Id] в таблице [SysModule] для регистрируемого раздела. |
ColumnUId | Уникальный идентификатор колонки объекта раздела, значение которой локализуется. Значение UId колонки определяется из метаданных объекта раздела. | |
SysCultureId | Идентификатор культуры. Колонка [Id] таблицы [SysCulture]. | |
Value | Локализованное значение для заданной культуры. |
Для упрощения процедуры регистрации реализована хранимая процедура tsp_RegisterSection, которая выполняет все необходимые действия по вставке значений в системные таблицы. Хранимая процедура может добавлять значения для заголовков раздела в русской и английской локализации.
Таким образом, для регистрации раздела в системе достаточно вызвать хранимую процедуру tsp_RegisterSection со следующими параметрами:
EXEC [dbo].[tsp_RegisterSection]
@ModuleCaptionRus = N'[Значение для колонки Caption в русской локализации]',
@ModuleCaptionEng = N'[Значение для колонки Caption в английской локализации]',
@ModuleName = N'SectionModule',
@ModuleSchemaName = N'[Название страницы раздела]',
@ModuleEntityName = N'[Название объекта раздела]',
@ModuleHeaderRus = N'[Заголовок страницы раздела в русской локализации]',
@ModuleHeaderEng = N'List of [Заголовок страницы раздела в английской локализации]',
@ModulePosition = -1,
@TypeColumnName = '[Название колонки типа объекта]'
| Примечание 1. Если в качестве параметра @ModulePosition передать значение «-1», то раздел будет добавлен в конец списка разделов основного меню перед разделом «Итоги». 2. В качестве значения параметра @TypeColumnName указывается название колонки, содержащей тип объекта раздела. Если объект раздела не классифицируется по типам, в качестве параметра передается пустая строка. |
4.2. Регистрация страницы редактирования раздела
Для того, чтобы зарегистрировать страницу редактирования раздела, необходимо внести соответствующую информацию в системные таблицы. Это можно сделать, выполнив скрипты для вставки записей в следующие таблицы (табл. 3).
Таблица 3. Таблицы, участвующие в регистрации страницы редактирования раздела
Таблица | Колонка | Значение колонки |
SysModuleEntity Таблица объектов разделов. Важно: Если при регистрации раздела запись уже была добавлена, то повторно она не добавляется. В случае, если объект раздела использует тип, то для существующей в SysModuleEntity записи необходимо обновить поле TypeColumnUId. | SysEntitySchemaUId | Уникальный идентификатор схемы объекта раздела. Колонка [UId] таблицы SysSchema для основного объекта раздела. |
TypeColumnUId | Уникальный идентификатор колонки типа объекта раздела. Определяется по метаданным объекта раздела. | |
SysModuleEdit | SysModuleEntityId | Идентификатор объекта раздела. Значение колонки [Id] таблицы [SysModuleEntity] для объекта раздела. |
UseModuleDetails | Колонка присутствует для совместимости с предыдущими версиями. Значение колонки: 1. | |
CardSchemaUId | Уникальный идентификатор схемы страницы редактирования регистрируемого раздела. Значение колонки можно получить следующим запросом: SELECT TOP 1 UId from SysSchema where Name = [Название_страницы редактирования_раздела] Пример: SELECT TOP 1 UId FROM SysSchema where Name = 'ContactPage' | |
TypeColumnValue* | Идентификатор объекта типа. Колонка [Id] таблицы Пример: Пусть объектом раздела является Активность. Активность может иметь тип Задача, Звонок, E-mail. Tо есть эта колонка должна содержать идентификатор одного из этих типов (того, для которого регистрируется страница редактирования). | |
SysModuleEditLcz Таблица локализуемых значений элементов интерфейса страницы редактирования: · заголовок страницы редактирования раздела, · строка пункта меню кнопки [Добавить] для добавления объекта раздела соответствующего типа*. | RecordId | Идентификатор модуля раздела. Колонка [Id] в таблице [SysModule] для регистрируемого раздела. |
ColumnUId | Уникальный идентификатор колонки объекта раздела, значение которой локализуется. Значение UId колонки определяется из метаданных объекта раздела. | |
SysCultureId | Идентификатор культуры. Колонка [Id] таблицы [SysCulture]. | |
Value | Локализованное значение для заданной культуры. |
* - данные колонки заполняются для страницы редактирования раздела, объект которого классифицируется по типам. При этом для каждого типа в таблице SysModuleEdit должна быть зарегистрирована страница редактирования объекта соответствующего типа.
Для упрощения процедуры регистрации реализована хранимая процедура tsp_RegisterPage, которая выполняет все необходимые действия по вставке значений в системные таблицы. Хранимая процедура может добавлять значения для заголовков страницы редактирования в русской и английской локализации.
Таким образом, для регистрации раздела в системе достаточно вызвать хранимую процедуру tsp_RegisterPage со следующими параметрами:
1. Для регистрации страницы редактирования объекта раздела, который не классифицируется по типам:
EXEC [dbo].[tsp_RegisterPage]
@ModuleEntityName = N'[Название объекта раздела]',
@PageName = N'[Название страницы редактирования раздела]',
@TypeColumnUId = NULL,
@TypeValue = NULL,
@AddMenuCaptionRus = NULL,
@AddMenuCaptionEng = NULL,
@CardHeaderCaptionRus = NULL,
@CardHeaderCaptionEng = NULL
2. Для регистрации страницы редактирования объекта раздела, который классифицируется по типам:
EXEC [dbo].[tsp_RegisterPage]
@ModuleEntityName = N'[Название объекта раздела]',
@PageName = N'[Название страницы редактирования раздела]',
@TypeColumnUId = '[Уникальный идентификатор колонки типа объекта]',
@TypeValue = ' Идентификатор объекта типа'
@AddMenuCaptionRus = N'[Заголовок пункта меню Добавить для добавления объекта раздела соответствующего типа (в русской локализации)]',
@AddMenuCaptionEng = N'[Заголовок пункта меню Добавить для добавления объекта раздела соответствующего типа (в английской локализации)]',
@CardHeaderCaptionRus = N'[Заголовок страницы редактирования в русской локализации]',
@CardHeaderCaptionEng = N'[Заголовок страницы редактирования в английской локализации]'
Настройка полей карточки раздела осуществляется в дизайнере страниц. Более подробно о настройке страниц описано в книге [Руководство по настройке] в главе [Настройка системы] > [Настройка страниц].
Настройка колонок реестра раздела выполняется после регистрации раздела на странице настройки реестра в пользовательском интерфейсе.
Более подробно процесс настройки колонок реестра описан далее в описании примера создания стандартного раздела.
Пример создания стандартного раздела
Добавить в систему раздел «Обращения». Раздел должен иметь специальный блок фильтрации по дате создания обращения и по ответственному.
Все объекты раздела должны создаваться в пользовательском пакете, который зависит от пакета NUI.
2.1. Создание объекта Обращение
2.1.1. В режиме настройки перейти в раздел [Конфигурация] и на вкладке [Схемы] выполнить пункт меню Добавить > Стандартные > Объект.
2.1.2. В дизайнере объектов установить следующие свойства для созданного объекта:
· Заголовок: Обращение
· Название: Case
· Пакет: [Имя пакета, в котором создается раздел]
· Родительский объект: Базовый объект с заметками (BaseObjectNotes)
2.1.3. Добавить в объект колонку Номер обращения, установив для нее свойства:
· Заголовок: Номер обращения
· Название: CaseNumber
· Тип данных: Строка(50 символов)
2.1.4. Опубликовать объект.
2.1.5. Определить у созданного объекта в качестве основной колонки для отображения колонку Номер обращения. Для этого необходимо:
· Открыть в дизайнере объект Case.
· Отобразить все свойства объекта (рис. 3).

Рисунок 3. Отображение всех свойств объекта.
· В блоке [Системные колонки] для свойства Отображаемое значение выбрать значение Номер обращения.
2.1.6. Опубликовать объект повторно.
2.2. Создание объекта Группа обращения
2.2.1. В режиме настройки перейти в раздел [Конфигурация] и на вкладке [Схемы] выполнить пункт меню Добавить > Стандартные > Объект.
2.2.2. В дизайнере объектов установить следующие свойства для созданного объекта:
· Заголовок: Группа обращения
· Название: CaseFolder
· Пакет: [Имя пакета, в котором создается раздел]
· Родительский объект: Базовая группа (BaseFolder)
2.2.3. Опубликовать объект.
2.3. Создание объекта Обращение в группе
2.3.1. В режиме настройки перейти в раздел [Конфигурация] и на вкладке [Схемы] выполнить пункт меню Добавить > Стандартные > Объект.
2.3.2. В дизайнере объектов установить следующие свойства для созданного объекта:
· Заголовок: Обращение в группе
· Название: CaseInFolder
· Пакет: [Имя пакета, в котором создается раздел]
· Родительский объект: Базовый элемент в группе
2.3.3. Добавить в объект колонку типа справочник, которая будет ссылаться на обращение. Указать для нее следующие свойства:
· Заголовок: Обращение
· Название: Case
· Справочник: Обращение
· Установить для колонки признак [Каскадная связь]
2.3.4. Для унаследованной колонки Folder объекта указать следующее свойство:
· Справочник: Группа обращения
· Установить для колонки признак [Каскадная связь]
2.3.5. Опубликовать объект.
2.4. Создание объекта Файл обращения
2.4.1. В режиме настройки перейти в раздел [Конфигурация] и на вкладке [Схемы] выполнить пункт меню Добавить > Стандартные > Объект.
2.4.2. В дизайнере объектов установить следующие свойства для созданного объекта:
· Заголовок: Файл обращения
· Название: CaseFile
· Пакет: [Имя пакета, в котором создается раздел]
· Родительский объект: Файл(File)
2.4.3. Добавить в объект колонку типа справочник, которая будет ссылаться на обращение. Указать для нее следующие свойства:
· Заголовок: Обращение
· Название: Case
· Справочник: Обращение
· Установить для колонки признак Каскадная связь
2.4.4. Опубликовать объект.
3.1. Создание схемы модели представления с раздела
3.1.1. В режиме настройки перейти в раздел [Конфигурация] и на вкладке [Схемы] выполнить пункт меню Добавить > Расширенные > Схема модели представления карточки (рис. 4).

Рисунок 4. Создание схемы модели представления карточки.
3.1.2. В открывшемся дизайнере схем установить свойства созданной схемы модели представления карточки:
· Заголовок: Страница обращения
· Название: CasePage
· Пакет: [Имя пакета, в котором создается раздел]
3.1.3. Добавить зависимость для созданной схемы модели представления карточки. В качестве зависимости выступает объект Обращения. Для добавления зависимости в блоке структуры схемы щелкнуть правой кнопкой мыши по элементу [Dependencies] и в открывшемся контекстном меню выбрать пункт [Добавить] (рис. 5).

Рисунок 5. Добавление зависимости в схему модели представления карточки
3.1.4. Для созданной зависимости установить следующие свойства:
· Название: Case
· Зависимость: Обращение
3.1.5. Добавить исходный код схемы карточки раздела. Код может быть написан вручную либо сгенерирован генератором шаблонов стандартного раздела NUISchemaGenerator. Пример использования генератора шаблонов для генерации кода схемы карточки раздела приведен выше.
3.1.6. Опубликовать схему.
3.2. Создание схемы модели представления раздела
3.2.1. В режиме настройки перейти в раздел [Конфигурация] и на вкладке [Схемы] выполнить пункт меню Добавить > Расширенные > Схема модели представления карточки (рис. 6).

Рисунок 6. Создание схемы модели представления раздела.
3.2.2. В открывшемся дизайнере схем установить свойства созданной схемы модели представления раздела:
· Заголовок: Страница раздела обращения
· Название: CaseSection
· Пакет: [Имя пакета, в котором создается раздел]
3.2.3. Добавить зависимость Обращение (Case) для схемы раздела аналогично пп. 3.1.3, 3.1.4.
3.2.4. Добавить еще одну зависимость для схемы раздела, указать для нее следующие свойства:
· Название: CasePage
· Зависимость: Страница обращения
3.2.5. Добавить исходный код схемы раздела. Код может быть написан вручную либо сгенерирован генератором шаблонов стандартного раздела NUISchemaGenerator. Пример использования генератора шаблонов для генерации кода схемы карточки раздела приведен выше.
3.2.6. Опубликовать схему.
4.1. Регистрация раздела
Для того, чтобы зарегистрировать раздел в системе, необходимо запустить хранимую процедуру tsp_RegisterSection со следующими параметрами:
EXEC [dbo].[tsp_RegisterSection]
@ModuleCaptionRus = N'Обращения',
@ModuleCaptionEng = N'Cases',
@ModuleName = N'SectionModule',
@ModuleSchemaName = N'CaseSection',
@ModuleEntityName = N'Case',
@ModuleHeaderRus = N'Список обращений',
@ModuleHeaderEng = N'List of cases',
@ModulePosition = -1,
@TypeColumnName = ''
4.2. Регистрация карточки раздела
Для того, чтобы зарегистрировать страницу редактирования раздела в системе, необходимо запустить хранимую процедуру tsp_RegisterPage со следующими параметрами:
EXEC [dbo].[tsp_RegisterPage]
@ModuleEntityName = N'Case',
@PageName = N'CasePage',
@TypeColumnUId = NULL,
@TypeValue = NULL,
@AddMenuCaptionRus = NULL,
@AddMenuCaptionEng = NULL,
@CardHeaderCaptionRus = NULL,
@CardHeaderCaptionEng = NULL
Для того, чтобы настроить отображение колонок реестра раздела, необходимо:
5.1. Через главное меню системы перейти в раздел [Обращения].
5.2. Перейти на страницу настроек колонок реестра раздела. Для этого в меню раздела выбрать пункт [Настроить колонки] (рис. 7). В результате откроется страница настройки реестра.

Рисунок 7. Переход на страницу настроек колонок реестра раздела
5.3. Для того, чтобы добавить колонку, которая должна отображаться в реестре, нужно нажать на кнопку [+] (рис. 8). В результате откроется страница выбора колонки.

Рисунок 8. Добавление новой колонки в реестр раздела.
5.4. На странице [Выбор колонки] в списке [Колонка] выбрать колонку объекта [Обращение], которая будет отображаться в реестре (рис. 9). Нажать кнопку [Выбрать].

Рисунок 9. Выбор колонки для отображения в реестре.
5.4. При необходимости на странице настройки реестра настроить расположение и ширину колонки.
5.5. Аналогичным образом выполнить добавление остальных колонок, которые должны отображаться в реестре.
5.6. Сохранить изменения, выполнив пункт меню [Сохранить] > [Для всех пользователей].


