Категории¶
⚠️ Терминологическая инверсия (важно для поиска и разработки). В БД 1Формы таблица
Subcategoriesхранит Категории (entity types — Клиенты, Договоры, Продажи), аCategoriesхранит Разделы (namespaces/папки — CRM, HR, Finance). Это инверсия индустриальной конвенции, гдеCategory= тип сущности, аSubcategory= подтип. Сверяться с таблицей ниже и глоссарием.
Категория (entity type / bounded context) — это шаблон, по которому создаются задачи определённого вида: заявки, договоры, поручения, обращения и т. п. Категория определяет, как выглядит форма задачи, по какому маршруту (workflow / state machine) она движется, какие у неё дополнительные поля (ДП, custom fields), как отображается список задач и у кого есть к ним доступ.
Настройка категории — самый объёмный раздел администрирования: у одной категории сотни параметров. Этот документ помогает разобраться, где и как они настраиваются и как диагностировать проблемы.
Сокращения в документе:
- ДП — дополнительные параметры (настраиваемые поля задачи);
- НТФ — форма создания новой задачи;
- МТФ — карточка (форма) открытой задачи;
- БИ — блоки «Используется» (связанные задачи и объекты в карточке);
- БП — бизнес-процесс.
Механизмы администрирования¶
Автоадминка (dbadmin)¶
Часть настроек категории доступна через формы автоадминки (dbadmin) по их alias:
| Alias формы | Название | Таблица БД | Полей | Секций | Где используется |
|---|---|---|---|---|---|
subcategories |
Категории | dbo.Subcategories |
319 | 24 | Основной массив флагов и параметров категории |
categories |
Разделы | dbo.Categories |
15 | 1 | Иерархия разделов (папок). Терминология: таблица Categories = Разделы, таблица Subcategories = Категории (см. глоссарий в корневом CLAUDE.md) |
states |
Статусы | dbo.States |
21 | 1 | Справочник статусов маршрута |
bp-roles |
Роли | dbo.BpRoles |
6 | 1 | Роли БП |
bp-roles-groups |
Привязки групп к ролям | dbo.BpRolesGroups |
4 | 1 | Связь ролей и групп |
bp-roles-steps |
Привязка роли к переходу и подписи | dbo.BpRolesSteps |
10 | 1 | Роли на шагах маршрута + подписи |
subcat-notes |
Примечания | dbo.SubcatNotes |
8 | 1 | Служебные заметки по категориям; HTML — только базовое форматирование (списки, ссылки, выделение) |
subcat-state-hints |
Подсказки | dbo.SubcatStateHints |
5 | 1 | UI-подсказки по статусам; HTML — только базовое форматирование |
signatures |
Подписи | dbo.Signatures |
3 | 1 | Справочник подписей |
technical-works |
Технические работы | dbo.Subcategories |
279 | — | Срез для техработ и сервисной диагностики |
EntityEditor¶
Сводные категории и их состояния настраиваются через EntityEditor:
| Схема | Таблица БД | Назначение |
|---|---|---|
summarycategories.json |
SummaryCategories |
Сводные категории, группы доступа, тип поиска |
summarycategoriesstates.json |
SummaryStates |
Связи «сводная категория ↔ состояния категорий» |
Форма сводного раздела: защита от несохранённых изменений. В форме создания и правки сводного раздела задают описание, тип поиска, группы доступа и список пар «категория — статус»; запись выполняется кнопкой «Создать» или «Сохранить». Форма сравнивает текущее состояние с последним загруженным или сохранённым: если уйти с изменениями — кнопкой «Отмена» или по хлебным крошкам, — открывается окно «Сохранить изменения» с действиями «Сохранить», «Не сохранять» и крестиком. «Сохранить» записывает раздел и выполняет переход только после успешной записи: при ошибке записи или незаполненной форме переход не происходит, а введённые значения остаются на месте. «Не сохранять» выполняет переход без записи, крестик оставляет форму открытой. Если изменений нет, уход происходит без вопроса.
FormsGenerator¶
Форма редактирования категории (API) — только чтение:
GET /api/admin/forms/scheme/SubCategoryGET /api/admin/forms/{entity}/{key}
Запись через форму недоступна: POST /api/admin/forms/{entity}/{key} отвечает 405. Категорию сохраняют страницы настроек AdminSPA, контроллеры api/admin/subcategories/* и автоадминка формы subcategories.
Форма редактирования разбита на блоки (на эти имена ссылаются разделы «Где настраивается» ниже):
| Блок (SchemeBlock) | Порядок | Фокус |
|---|---|---|
stdHeaderMain |
0 | Основные свойства категории |
stdHeaderTerms |
1 | Сроки, дедлайны, напоминания |
stdHeaderWord |
2 | Word/редлайн/сравнение файлов |
EditSubcat_Counters |
3 | Счетчики просмотров/комментариев/лайков |
stdHeaderAuto |
4 | Автоматизация и SP-хуки |
EditSubcategory2_PerformersSubscribers |
5 | Исполнители/подписчики/ограничения |
stdHeaderTaskText |
6 | Текст задачи, комментарии, поиск |
Поиск по полям формы. В верхней части формы редактирования настроек категории в AdminSPA доступно поле поиска — фильтрует список секций и полей среди 319 настроек по вхождению подстроки в название (регистр не учитывается). При непустом запросе секция отображается, если её название или название хотя бы одного поля внутри неё содержит подстроку.
Admin API¶
Программно категории настраиваются через Admin API:
| Маршрут | Методы | Назначение |
|---|---|---|
/api/admin/categories |
GET, POST, DELETE | Управление разделами, копирование, массовые уведомления, отзыв прав |
/api/admin/subcategories |
GET, POST | Управление категориями (создание, копирование, удаление, очистка), зависимости Lookup, массовая генерация текста |
/api/admin/subcategories/tree |
GET | Полное дерево категорий для админки |
/api/admin/subcategories/{subcatId} |
GET, POST | Основные и доп. настройки, панель инструментов, начальный статус, порядок полей МТФ |
/api/admin/subcategories/blocks* |
GET, POST, PUT, DELETE | Блоки формы, таблицы в блоках, порядок и связи |
/api/admin/subcategories/*/buttons |
GET, POST, DELETE | Кнопки в карточке задачи |
/api/admin/subcategories/*/files |
GET, DELETE | Файлы категории и генерация шаблона DOCX |
/api/admin/subcategories/{subcatId}/includes/* |
GET, POST, DELETE | JS/CSS/HTML-вставки для НТФ/МТФ |
/api/admin/subcategories/{subcatId}/news-settings |
GET | Настройки новостных категорий |
/api/admin/subcategories/{subcatId}/resources |
GET, POST | Ресурсные категории и доступные ресурсы |
/api/admin/subcategories/{subcatId}/survey-settings |
GET, POST | Настройки опросов |
/api/admin/subcategories/{subcatId}/settings/text |
GET, POST | Настройки секции «Текст»: режим текста, длина, уникальность, текст по умолчанию, HTML, изображения, локализация, права на правку, скрытие текста |
/api/admin/subcategories/{subcatId}/settings/comments |
GET, POST | Настройки секции «Комментарии»: включение комментариев, реакции, право авторов редактировать свои комментарии, запрет комментирования закрытых задач, запрет добавления комментариев, скрытие системных комментариев, запрет удаления пользовательских, автопрочтение при закрытии задачи, отправка комментария при сохранении истории изменений ДП |
/api/admin/subcategories/{subcatId}/settings/participants |
GET, POST | Настройки страницы «Участники»: режим назначения исполнителя, флаги исполнителей, ограничение исполнителей смарт-выражением, заказчик, подписчики, специальные пользователи |
/api/admin/subcategories/{subcatId}/settings/due-date |
GET, POST | Настройки секции «Срок»: режим срока, длительность по умолчанию, минимальный и рекомендуемый срок, ограничения на время, напоминания о приближении срока |
/api/admin/subcategories/{subcatId}/settings/general |
GET, POST | Настройки страницы «Общие настройки»: снимок из 14 полей; записываются модуль, ответственная группа, режим отображения на главной, инструкция, иконка, цвет, конфиденциальность, заметки, реакции на объекты и категория-источник шаблонов задач, а раздел, тип категории, режим шифрования и название — только на чтение |
/api/admin/subcategories/{subcatId}/settings/mail |
GET, POST | Настройки страницы «Почтовые сообщения»: отправка почтовых сообщений по задачам категории, параметр ДП и текст в заголовках писем, письмо об отклонении задачи, адрес и имя отправителя для внешних пользователей. Доступ — администратор системы или администратор категории |
/api/admin/subcategories/{subcatId}/settings/task-card |
GET, POST | Настройки секции «Карточка задачи»: снимок из 20 полей — показ основного маршрута, приоритет, отображение статуса и начала работы, разрешения на время начала, кнопки «Делегировать» и «перенести срок», название кнопки дополнительных действий, число колонок табличного ДП по умолчанию, цвет блоков ДП и их положение, компактность переходов и действий, режим расположения кнопок и смарт-выражение расположения, имя стандартного блока ДП, смарт-условие повторений, скрытие даты создания, кнопки «предыдущая / следующая» |
/api/admin/subcategories/{subcatId}/universal-templates |
GET, POST | Универсальные шаблоны и правила применения |
/api/admin/subcategories/{subcatId}/states |
GET | Статусы маршрута категории (id + локализованное описание) для настройки подсказок по статусам; 404 для несуществующей категории |
/api/admin/subcategories/steps |
GET, POST, DELETE | Переходы маршрута в категории |
/api/admin/subcategories/steps/{stepId}/actions-with-ep |
GET, POST, DELETE | Действия над ДП/файлами/шаблонами на переходах |
/api/admin/states-routes/packs-on-events |
GET | Пакеты действий до/после перехода |
/api/admin/states-routes/{stepId}/ext-params |
GET, POST, DELETE | Ограничения переходов по ДП |
/api/admin/states-routes/{stepId}/subtasks |
GET, POST, PUT, DELETE | Автоподзадачи на переходах |
При сохранении настроек категории POST/PUT-запрос должен нести тело: пустое тело или null отклоняется с ответом 400 и сообщением о пустом теле, настройки при этом не меняются.
Для подкатегорий с чатовым типом представления в Admin SPA дополнительно отображается секция «Настройки МТФ-панели» (чекбокс showMtfPanel + мультиселект mtfPanelGroupIds). Хранение — dbo.Subcategories (ShowMtfPanel, MtfPanelGroupIds). API: GET/PUT /api/admin/subcat/{subcatId}/settings. Бизнес-правила видимости панели описаны в бизнес-документации чата, раздел «Видимость МТФ-панели».
Список категорий, создание и переход к настройкам¶
Все категории площадки собраны в реестре Категории и процессы (Администрирование → Категории). Для каждой категории в списке видны ID, наименование, модуль, раздел, описание, ответственная группа и режим отображения; в блоке действий доступна кнопка «Очистить», удаляющая все задачи категории.

Чтобы найти категорию по номеру задачи, введите номер в поисковую строку над списком — система покажет категорию, которой принадлежит эта задача.

Создание категории¶
Новая категория создаётся кнопкой «Создать» в панели инструментов. В окне создания заполняют три поля: раздел, название категории и тип.

Раздел — родительский раздел, в который попадёт категория (категория обязательно принадлежит какому-либо разделу). Рядом с полем выводится выбранное значение или «Не выбрано», а кнопка «Выберите раздел» открывает окно с деревом разделов. Дерево сразу раскрыто до текущего выбранного раздела, на любую глубину вложенности, и он отмечен в списке. Выбрать можно любой узел, включая родительский; разделы без вложенных категорий тоже показаны. Поиск в окне работает по названию и по ID раздела.

Тип определяет, как будет работать процесс и какие возможности появятся внутри категории: «Задачи» (по умолчанию), «Справочник», «Ресурсы», «Экземпляры ресурсов», «Пространство», «Чаты/каналы», «Новости», «Группы соц. сетей» и «Календарь». У каждого типа в списке есть краткое описание.

Копирование категории¶
Категорию можно создать копированием существующей: переносятся все настройки, ДП и автоматизации (включая смарты и статические подписи маршрута). Для этого служит кнопка «Копировать категорию» в панели инструментов.

В окне копирования вводят название новой категории и выбирают категорию-источник.
⚠️ Копирование идёт по секциям: сама категория, её настройки, дополнительные параметры и их привязка к блокам формы, смарт-выражения и остальное. Сбой в отдельной секции не отменяет всю операцию: система пишет ошибку в журнал и продолжает с остальными секциями, поэтому новая категория создаётся, но часть переносимого в ней может отсутствовать. После копирования стоит сверить состав новой категории с источником — в первую очередь привязку дополнительных параметров к блокам формы.
Копия получает и общие настройки табличного представления: вид списка задач категории и вид таблиц блоков «Используется». У блоков переносится настройка каждой вкладки (таблицы) — состав и порядок колонок, ширина, закрепление, группировка, сортировка и фильтры, заданные администратором, — вместе с классическим видом колонок блока. Настраивать их в копии заново не нужно; колонки, которых нет в источнике вкладки, в копии не восстанавливаются.
Переносятся только общие настройки, действующие для всех пользователей. Личные настройки отображения не копируются — вид под себя каждый пользователь настраивает сам. Отбор, заданный в настройке вида смарт-фильтром, в копию не переносится.

Главная страница настроек категории¶
Выбор категории в списке открывает её настройки — блоки «Основные настройки», «Настройки категории», «Доступ», «ДП», «Маршрут», «Смарты», «Формы» и «Уведомления». Отсюда же категорию можно удалить или очистить от задач.

Чипы блока «Основные настройки» открывают отдельные страницы настроек AdminSPA для открытой категории:
| Чип | Страница |
|---|---|
| Исполнители | administration/participants-executors/{subcatId} |
| Несколько исполнителей | administration/participants-multi-performers/{subcatId} |
| Заказчик и подписчики | administration/participants-customers/{subcatId} |
| Перенос и копирование задач | administration/tasks-move-copy-settings/{subcatId} |
| Почтовые сообщения | administration/subcategory-mail-messages/{subcatId} |
| Автоматизация | administration/subcat-automation/{subcatId} |
{subcatId} — идентификатор открытой категории.
Переход к настройкам категории из пользовательского интерфейса¶
Открыть настройки категории можно не только из режима администрирования, но и из пользовательского интерфейса.
Из дерева «Категории» в левом меню — через контекстное меню категории, пункт «Настройка».

Из табличного представления категории — пункт «Настройка» в меню доступных действий.

Из карточки задачи — пункт «Настройка» в списке действий панели инструментов.

Из открытого окна настроек категории текущий экран можно открыть в отдельной вкладке браузера — кнопкой «Открыть в новой вкладке». Откроется тот же экран настроек, на котором вы находитесь, как полноценная страница 1Формы (с шапкой и навигацией), а не в упрощённом виде.
Ключевые настройки¶
1. Основные свойства категории¶
Где настраивается:
- автоадминка:
subcategories - FormsGenerator:
stdHeaderMain - API:
POST /api/admin/subcategories/{subcatId}/settings - API страницы «Общие настройки»:
GET/POST /api/admin/subcategories/{subcatId}/settings/general
Таблица БД: dbo.Subcategories
Ключевые поля:
| Поле | Что контролирует |
|---|---|
SubcatName |
Имя категории в UI |
Details |
Описание категории |
CategoryId |
Родительский раздел |
OneFMainVisibilityMode |
Режим видимости в 1F-main |
IsDictionary |
Режим справочника |
IsCalendar |
Календарный тип |
FileProviderId |
Провайдер файлов по умолчанию |
ConfidentialMode |
Конфиденциальность: выключена, разрешена установка флага на задачах или все задачи категории конфиденциальны (см. модель прав) |
Зависимости между полями:
CategoryIdобязателен при создании категории.IsCalendarвлияет на доступность смежных календарных сценариев и на требования к датам задач.

Контракт страницы «Общие настройки». Отдельный контракт GET и POST /api/admin/subcategories/{subcatId}/settings/general отдаёт и принимает полный снимок страницы — те же 14 полей, что видит администратор. Записываются десять: модуль, ответственная группа, режим отображения на главной, инструкция, иконка и цвет аватара, режим конфиденциальности, заметки, реакции на объекты и категория-источник шаблонов задач. Четыре поля — раздел, тип категории, режим шифрования задач и название категории — только показываются: если в запросе пришло другое значение любого из них, запрос отклоняется целиком с кодом 400, и остальные поля тоже не сохраняются.
Название категории правится на странице «Названия элементов», где переименование пересчитывает путь категории. Раздел, тип категории и режим шифрования этим контрактом не меняются: перенос категории между разделами задевает права и маршруты, смена типа добавляет системные дополнительные параметры, а смены режима шифрования для уже созданных задач не происходит — они остаются в прежнем режиме.
Контракт доступен только глобальному администратору. POST отвечает перечитанными значениями, изменение записывается в журнал административных операций со значениями до и после, после сохранения сбрасывается кэш категории. Побочные действия выполняются только при фактической смене значения: смена режима отображения на главной массово обновляет получателей комментариев по задачам категории, смена режима конфиденциальности затрагивает существующие задачи. Иконка нормализуется: пустое значение означает, что иконка не задана, значение длиннее 100 символов отклоняется.
Заданные иконка и цвет категории видны не только на странице категории, но и в дереве выбора категории: в админском дереве категорий у таких категорий показывается иконка и цвет, у категорий без заданных значений — прежние значения по умолчанию.
2. Блоки формы задачи (МТФ)¶
Где настраивается:
- API: блоки формы
- API: основные настройки (
mtf/orderable-items,mtf/reorder-items) - API страницы «Карточка задачи»:
GET/POST /api/admin/subcategories/{subcatId}/settings/task-card
Таблицы БД:
dbo.CustomTaskUsedAsEpBlockSettingsdbo.Subcategories(часть общих МТФ-флагов)
Ключевые поля/объекты:
| Элемент | Что контролирует |
|---|---|
| Блок формы | Контейнер для ДП и таблиц |
| Таблица в блоке | Настройка таблицы внутри блока |
| Порядок МТФ | Порядок элементов на форме задачи |
| Кнопки формы | Связанные действия в карточке (МТФ) |
Зависимости между полями:
- Порядок МТФ зависит от включенности и видимости блока.
- Связи таблиц с блоками влияют на фактическое расположение ДП в карточке.
Контракт секции «Карточка задачи». Отдельный контракт GET и POST /api/admin/subcategories/{subcatId}/settings/task-card отдаёт и принимает полный снимок секции «Карточка задачи» формы subcategories — те же двадцать полей, что видит администратор. До него общий контракт настроек категории работал только с тремя из них — ReccurenceAvailableSmartExpressionId, IsCreationDateHidden и ShowPrevNextButtons; они продублированы в новом контракте, чтобы страница не читала свои значения из двух мест. Остальные семнадцать полей доступны только через этот контракт.
Тело POST — полный снимок секции: поле, которого нет в запросе, не сохраняет прежнее значение, а получает значение по умолчанию — false для логических полей и Start для режима расположения кнопок. Поля вне снимка при сохранении не меняются, поведение карточки задачи контракт не затрагивает, легаси-маршрут GET api/storage/subcategories/{id} продолжает работать как прежде.
Контракт доступен администратору системы и администратору категории. POST отвечает перечитанными значениями, изменение записывается в журнал административных операций, после сохранения сбрасывается кэш категории. Запрос без тела отклоняется с ответом 400.
Поля секции «Карточка задачи»:
| Поле | Тип | Что контролирует |
|---|---|---|
ShowMainRoute |
Логическое | Показывать основной маршрут |
AllowPriority |
Логическое | Разрешить устанавливать приоритет |
DisplayTaskState |
Логическое | Отображать статус в задаче |
DisplayTaskStartDate |
Логическое | Отображать начало работы в задаче |
AllowSetStartTimeInPast |
Логическое | Разрешить устанавливать время начала в прошлом |
AllowChangeTaskStartTimeInClosedTasks |
Логическое | Разрешить менять время начала в закрытых задачах |
DisplayTaskDelegateButton |
Логическое | Отображать кнопку «Делегировать» |
DisplayTaskChangeDueDateButton |
Логическое | Отображать кнопку «Перенести срок» / «Установить срок» |
ExtraActionsName |
Строка | Название кнопки дополнительных действий |
MtfDefaultExtParamTableColumns |
Число (может быть пустым) | Число колонок таблицы ДП по умолчанию на МТФ |
ExtParamsBlocksColor |
Строка | Цвет блоков дополнительных параметров |
ShowExtParamsAfterBlocks |
Логическое | Показывать дополнительные параметры после блоков |
IsCompactTransitions |
Логическое | Компактные переходы |
IsCompactActions |
Логическое | Компактные действия |
ButtonsPositionMode |
Перечисление | Режим расположения кнопок; по умолчанию — Start |
ButtonsPositionSmartExpressionId |
Число (может быть пустым) | Смарт-выражение расположения кнопок |
DefaultExtParamBlockName |
Строка | Имя стандартного блока ДП |
ReccurenceAvailableSmartExpressionId |
Число (может быть пустым) | Смарт-выражение доступности повторений |
IsCreationDateHidden |
Логическое | Скрывать дату создания |
ShowPrevNextButtons |
Логическое | Показывать кнопки «предыдущая / следующая» |
3. Исполнители и подписчики¶
Где настраивается:
- AdminSPA: настройки участников — на отдельных страницах: «Исполнители» —
administration/participants-executors/{subcatId}, «Заказчик и подписчики» —administration/participants-customers/{subcatId}, «Несколько исполнителей» —administration/participants-multi-performers/{subcatId}, «Специальные пользователи» —administration/participants-spec-users/{subcatId} - API страницы «Участники»:
GET/POST /api/admin/subcategories/{subcatId}/settings/participants - FormsGenerator:
EditSubcategory2_PerformersSubscribers - API:
POST /api/admin/subcategories/{subcatId}/settings
Таблица БД: dbo.Subcategories (+ связи по группам/подписям)
Ключевые поля:
| Поле | Что контролирует |
|---|---|
PerformerMode |
Режим автоподстановки исполнителей. Значение «обязателен» несовместимо с отключённой формой создания задачи — см. раздел 26 |
DoNotSelectOwner |
Не подставлять заказчика автоматически |
RestrictPerformerRemove |
Ограничить удаление исполнителей |
AllowGroupSubcription |
Разрешить подписку группами. Действует только на выбор подписчиков; на кандидатов в исполнители и заказчика не влияет — там группы отбираются по флагу типа группы «Можно добавлять в адресаты» и праву «Исполнять» |
AllowMultiFinished |
Режим мультизавершения |
MultiFinishAction |
Поведение после завершения участником |
AllowNewTaskSeparate |
Создавать отдельную копию задачи каждому исполнителю |
HelpersAction |
Действие для помощников: добавить в исполнители, добавить в подписчики или ничего не делать |
AllowSetSinglePerformer |
Принудительно один исполнитель |
SpecialUsersSmartExpressionId |
Смарт-определение спецпользователей |
PerformersRestrictionSmartExpressionId |
Смарт-ограничение набора исполнителей |
AllowChangePerformersInOverdueTask |
Разрешить смену исполнителей в просроченных задачах. Без флага в просроченной незакрытой задаче исполнителей нельзя добавлять и снимать — действие отклоняется с сообщением о запрете |
Зависимости между полями:
DelegateTaskConfirmSignature→ либоDelegateTaskConfirmSignatureId, либоDelegateTaskConfirmSignatureSmartExpressionId.TaskOwnerChange→ либоTaskOwnerChangeConfirmSignatureId, либоTaskOwnerChangeSmartExpressionId.AllowMultiFinishedоткрывает смысловую зависимость сMultiFinishAction.
4. Текст задачи и комментарии¶
Где настраивается:
- AdminSPA: пункт «Текст» в настройках категории открывает страницу
administration/subcat-text-settings/{subcatId}— режим текста, длина, уникальность, текст по умолчанию, HTML, изображения, локализация, права на правку, скрытие текста - FormsGenerator:
stdHeaderTaskText - API:
/settings,/settings/set-task-text-uniqueness,/generate-task-descriptions-by-template - API страницы «Текст»:
GET/POST /api/admin/subcategories/{subcatId}/settings/text
Таблица БД: dbo.Subcategories
Ключевые поля:
| Поле | Что контролирует |
|---|---|
SubcatTextMode |
Режим работы с текстом задачи. При отключённой форме создания любой режим, кроме «Текст может быть пустым», требует непустого DefaultText — см. раздел 26 |
DefaultText |
Дефолтный шаблон текста |
TaskTextMaxLength |
Лимит длины текста |
AllowHTMLTaskText |
HTML-режим ввода |
AllowImagesInTaskText |
Картинки в тексте |
OwnerCanChangeText / AdminCanEditText / SubscriberCanEditText / AnyoneCanEditText |
Модель редактирования текста |
EnableComments / EnableCommentsEdit / DenyEnterComments |
Поведение комментариев |
HideSystemComments |
Скрытие системных комментариев |
TaskTextSearchType |
Тип поиска по тексту |
Зависимости между полями:
- При включении уникальности текста через API возможны блокировки создания дублей.
- Массовая генерация текста зависит от шаблона и ДП категории.
Контракт страницы «Комментарии». Отдельный контракт GET и POST /api/admin/subcategories/{subcatId}/settings/comments отдаёт и принимает полный снимок секции «Комментарии» формы subcategories — те же девять полей, что видит администратор: EnableComments, ReactionsEnabled, EnableCommentsEdit, DenyPostCommentsInClosedTasks, DenyEnterComments, HideSystemComments, IsDeleteUserCommentsForbidden, AutoReadCommentsWhenTaskCloses и SendPrevEpValueOnSave. Последнее поле дублируется из общего контракта настроек категории, чтобы страница не читала свои значения из двух мест.
Тело POST — полный снимок секции: поле, которого нет в запросе, не сохраняет прежнее значение, а получает значение по умолчанию (false). Поля вне снимка при сохранении не меняются, поведение ленты комментариев в задаче контракт не затрагивает, легаси-маршрут GET api/storage/subcategories/{id} продолжает работать как прежде.
Контракт доступен администратору системы и администратору категории. POST отвечает перечитанными значениями, изменение записывается в журнал административных операций, после сохранения сбрасывается кэш категории.
Настройка «Replacer для пользовательских комментариев» в эту секцию не входит: она относится к секции «Текст задачи» (блок stdHeaderTaskText), поэтому контрактом «Комментарии» не отдаётся и не принимается.
5. Сроки и таймеры¶
Где настраивается:
- FormsGenerator:
stdHeaderTerms - API:
POST /api/admin/subcategories/{subcatId}/settings - API страницы «Срок»:
GET/POST /api/admin/subcategories/{subcatId}/settings/due-date
Таблица БД: dbo.Subcategories
Ключевые поля:
| Поле | Что контролирует |
|---|---|
SrokMode |
Модель срока/дедлайна |
DefaultDurationMode |
Дефолтная длительность |
MinSrok |
Минимальный срок |
RecommendedDueDate |
Рекомендованный срок |
AllowChangeDuration |
Разрешение менять длительность |
AllowSetTaskStartTime |
Разрешение задавать старт |
AllowSetTimeParamsInPast |
Разрешить прошлые даты |
SrokControl |
Напоминание/контроль до срока |
Smart25/Smart50/Smart75/Smart100 |
Процентные напоминания |
ExcludeFromOverdueReport |
Исключение из отчёта просрочки |
Зависимости между полями:
ChangeDueConfirm→ChangeDueConfirmSignatureIdилиChangeDueConfirmSignatureSmartExpressionId.
Контракт страницы «Срок». Отдельный контракт GET и POST /api/admin/subcategories/{subcatId}/settings/due-date отдаёт и принимает все двадцать полей секции, тогда как общий контракт настроек категории работает только с двумя из них — «не помечать задачи просроченными» и «разрешить переходы в просроченных задачах». Оба метода доступны администратору системы и администратору категории, POST отвечает перечитанными значениями, а изменения пишутся в журнал действий по каждому изменённому полю.
Тело POST — полный снимок секции: поле, которого нет в запросе, не сохраняет прежнее значение, а получает значение по умолчанию (например, режим срока становится обязательным, а единицы измерения — первым значением списка). Длительность по умолчанию, минимальный и рекомендуемый срок передаются парой «число и его единица измерения», как хранятся в базе. Четыре поля Smart25, Smart50, Smart75 и Smart100 — это флаги напоминаний при достижении 25, 50, 75 и 100 процентов длительности, а не смарт-выражения.
Нерабочая комбинация настроек отклоняется вместо тихого сохранения: если форма создания задачи выключена, срок обязателен, а длительность по умолчанию не задана, запрос возвращает ошибку — вводить срок вручную пользователю в такой категории негде. - Ограничения на прошлые/рабочие интервалы влияют на доступность ручной коррекции сроков.
6. Статусы и переходы¶
Где настраивается:
- автоадминка:
states,bp-roles,bp-roles-groups,bp-roles-steps,subcat-state-hints - API: переходы маршрута
- API: роли бизнес-процесса на статусе —
POST/PUT/DELETE api/subcategories/{subcatId}/states/{stateId}/roles
Таблицы БД:
dbo.Statesdbo.StatesRoutesInSubcatdbo.BpRolesdbo.BpRolesGroupsdbo.BpRolesStepsdbo.SubcatStateHints
Ключевые поля/объекты:
| Элемент | Что контролирует |
|---|---|
| Переход | Переход между статусами |
Роли (BpRoles) |
Ролевая модель на переходах |
| Действия по ДП | Действия по ДП на переходе |
| Ограничения перехода | Блокирующие проверки перед переходом |
| Автоподзадачи | Автосоздание подзадач на переходе |
| Пакеты действий | Пакеты смарт-действий до/после шага |
Зависимости между полями:
- Ограничения по ДП и actions-with-ep привязаны к конкретному
stepId. - Пакеты действий привязываются к событиям
BeforeTaskStep/AfterTaskStep.
Маршрут категории и дизайнер¶
Маршрут (жизненный цикл) настраивается отдельно для каждой категории на вкладке «Маршрут» и состоит из переходов между статусами. При создании категории маршрут настроен по умолчанию.
Подписи интерфейса на экранах маршрута и статусов — названия вкладок, пункты списков, подписи полей и тексты диалогов — зависят от языка администратора и правятся ресурсными ключами; см. localization/admin.md.

В графическом дизайнере маршрута статусы создают и редактируют в окне свойств статуса: имя, цвет, почтовые сообщения и комментарии при переходе в статус.

Защита от случайного закрытия. Окно свойств статуса бережёт несохранённую правку. Если форма изменена и не сохранена, закрытие окна — по кнопке «Отмена», крестику, клавише Esc или клику по фону — открывает вопрос «Сохранить изменения» с кнопками «Сохранить», «Не сохранять» и «Отмена». «Сохранить» записывает статус и закрывает окно только после успешной записи: если запись не прошла или форма заполнена с ошибками, окно остаётся открытым с внесёнными данными. «Не сохранять» закрывает без записи, «Отмена» оставляет форму в редактировании. Тот же вопрос срабатывает при уходе со страницы статуса по хлебным крошкам или ссылке. Неизменённая форма закрывается сразу, без вопроса.
Через панель инструментов дизайнера создают новый статус, добавляют существующий и добавляют переход. Эти кнопки активны только в режиме «Показать полный маршрут»: пока у категории настроен основной маршрут, добавление статусов и переходов скрыто.
Кнопки панели инструментов дизайнера¶
Состав панели одинаков для всех категорий, меняется только доступность кнопок. Их подписи выводятся подсказками и доступными именами на языке администратора.
| Кнопка | Что делает | Когда доступна |
|---|---|---|
| Создать новый статус | Открывает окно свойств нового статуса | Администратору категории, в режиме полного маршрута |
| Добавить существующий статус | Показывает список статусов для добавления | Администратору категории, в режиме полного маршрута |
| Создать переход | Открывает окно создания перехода | Администратору категории, в режиме полного маршрута |
| Показать полный маршрут | Переключает основной и полный маршрут | Всегда |
| Показать подписи подробно | Раскрывает подписи на графе: этапы и отдельные привязки с резолюциями | Администратору категории, в режиме полного маршрута |
| Больше элементов | Переключает упрощённый и детальный вид элементов маршрута | Всегда |
| Правила маршрута | Открывает панель правил маршрута | Если у категории заданы правила |
| Увеличить, По размеру, Уменьшить | Меняют масштаб графа | Всегда |
Заголовки окон, которые открываются из панели, — «Настройки перехода», «Подписи на переходе», «Создание перехода», «Редактирование статуса», «Добавить статус» — тоже выводятся на языке администратора. Если дизайнер открыт без задачи и без категории, вместо графа показывается сообщение о незаданных параметрах.
Роли бизнес-процесса на графе маршрута¶
Если для маршрута заведены роли бизнес-процесса (формы bp-roles, bp-roles-groups, bp-roles-steps — см. выше), дизайнер показывает их прямо на графе.
В панели инструментов появляется легенда «Роли БП» — перечень ролей по названиям; описание роли выводится подсказкой при наведении. Если ролей нет, легенда не отображается.
У переходов, к которым привязаны роли, появляется значок. Его подсказка перечисляет роли этого перехода, а для каждой — заполненные атрибуты «Вход», «Действие» и «Выход»; незаполненные в подсказку не попадают. Если роль не удалось сопоставить по идентификатору, вместо названия выводится «Роль #<номер>».
На самом графе роли только показываются: роль можно создать и назначить на статус из окна его свойств, на вкладке «Роли» (см. «Вкладка «Роли» в окне свойств статуса»), а привязки к отдельным переходам, группы ролей и роли, заведённые раньше, остаются в автоадминке (формы bp-roles, bp-roles-groups, bp-roles-steps) или доступны через API редактора маршрута (см. «Роль на статусе» ниже). Остальное поведение дизайнера — создание статусов и переходов, открытие окна настроек по клику — не меняется.
Роль на статусе¶
Роль можно привязать не к отдельному переходу, а к статусу целиком. В этом случае она относится ко всем исходящим переходам статуса — тем, по которым задача уходит дальше, — а тексты «Вход», «Действие» и «Выход» задаются один раз на статус и записываются одинаковыми во все эти переходы. Править их потом нужно только в одном месте, а не на каждом переходе отдельно.
Назначение выполняется только для статуса, у которого есть исходящие переходы, и только для роли из того же модуля, к которому относится категория. Если статус принадлежит другой категории, исходящих переходов у него нет или роль взята из другого модуля, запрос отклоняется с сообщением о причине и ничего не записывает. Повторное назначение той же роли на тот же статус обновляет тексты, а не добавляет вторую запись.
В интерфейсе то же самое делает вкладка «Роли» в окне свойств статуса дизайнера маршрута (см. «Вкладка «Роли» в окне свойств статуса» выше).
Назначение, правку и снятие роли на статусе выполняет API редактора маршрута: POST, а для правки и снятия — PUT и DELETE на адресе api/subcategories/{subcatId}/states/{stateId}/roles (для правки и снятия в адрес добавляется идентификатор роли). Состав запросов и ответов, тексты отказов и поведение при повторном назначении — в backend.md, раздел «Роли бизнес-процесса на статусе категории».
Переход, созданный после назначения роли на статус, роль автоматически не получает — назначение нужно повторить. Снятие роли со статуса убирает её со всех исходящих переходов сразу, включая те, где роль выставляли вручную.
Создание роли бизнес-процесса в модуле¶
Роль бизнес-процесса — запись модуля (dbo.BpRoles), поэтому создаётся она в том модуле, к которому относится категория. Создание выполняет запрос POST api/modules/{moduleId}/roles с телом { name, description? }; в ответ приходит roleId созданной роли. После создания роль сразу видна в списке ролей модуля, а граф читает роли при каждом открытии — пересобирать конфигурацию вручную не нужно.
- Имя обязательно и уникально в пределах модуля; проверка идёт по имени с обрезкой пробелов по краям, поэтому «Аудитор» и « Аудитор » — одна роль. Повтор имени отклоняется с понятным сообщением, а не ошибкой SQL.
- Описание необязательно — без него роль создаётся с пустым описанием. Длина имени — до 200 символов, описания — до 1000.
- Переводы названия и описания не заполняются: роль выводится на языке по умолчанию.
- Отказы приходят кодом
400с читаемым текстом (повтор имени в модуле, превышение длины, несуществующий модуль); код404не используется намеренно — вся валидация входа отвечает одним кодом. Пользователю без прав администратора приходит403. - Правка и удаление роли отдельными запросами не поддерживаются: в модуле есть только создание, остальные операции — в автоадминке (формы
bp-roles,bp-roles-groups,bp-roles-steps).
Вкладка «Роли» в окне свойств статуса¶
Роли статуса назначают прямо в дизайнере маршрута: клик по статусу открывает окно его свойств, и в нём есть вкладка «Роли». Вкладка показывается только тогда, когда дизайнер открыт для конкретной категории, — на странице «Статусы», где категория не задана, её нет.
Слева — роли, уже назначенные на статус; справа — карточка выбранной роли с тремя текстами: «Вход», «Действие» и «Выход».
- Список ролей статуса собирается из маршрута: в него попадают роли, привязанные к исходящим переходам статуса. Роль показывается одной строкой, даже если она привязана к нескольким переходам, — тексты у таких копий одинаковы (см. «Роль на статусе»). Название роли берётся из ролей модуля.
- Назначить роль можно из списка ролей модуля категории. Роль, уже назначенная на статус, в списке повторно не предлагается.
- Создать роль можно прямо на вкладке: указывают имя и, при желании, описание. Роль сохраняется в модуле категории и сразу появляется в списке ролей статуса — пересобирать конфигурацию вручную не нужно (см. «Создание роли бизнес-процесса в модуле»).
- Три текста «Вход», «Действие» и «Выход» — обычные поля ввода без форматирования. Они необязательны, а их состав фиксирован: поля нельзя удалить или переименовать.
- Кнопка снятия убирает роль со статуса — сразу со всех его исходящих переходов.
Сохранение на вкладке «Роли» происходит по действию: назначение роли, правка текстов и снятие записываются сразу, поэтому общая кнопка сохранения статуса на этой вкладке не показывается — статус сохраняется на своих вкладках. После закрытия окна граф маршрута перерисовывается, и значок роли у переходов обновляется.
Если у категории не задан модуль, роли на вкладке недоступны: вместо списка выводится пояснение, что модуль не определён. Пока роли загружаются, показывается сообщение о загрузке.
Обязательные ДП на графе маршрута¶
У перехода, для которого на вкладке «Доп. параметры» настроены обязательные ДП, на графе дизайнера появляется красный значок «!». Подсказка значка начинается строкой «Есть обязательные поля» и перечисляет обязательные ДП перехода в виде «идентификатор — название»; название берётся из настроек ДП в этой категории. Значок видят только пользователи с доступом к администрированию, в том числе при открытии маршрута из карточки задачи; остальным граф показывается без него.
Значки перехода на графе маршрута¶
У перехода на графе дизайнера может быть несколько значков — по одному на каждую настроенную особенность перехода. При наведении значок показывает подсказку на языке интерфейса пользователя.
| Значок | Когда появляется | Подсказка |
|---|---|---|
| Подзадачи | У перехода настроены подзадачи | «На переходе есть подзадачи» |
| Подписи | У перехода есть подписи | «Подписи: <перечень>» |
| Хранимые процедуры | На переходе выполняется хранимая процедура | «Хранимые процедуры: <имя>» |
| Автоисполнитель | У перехода задан автоисполнитель | «Есть автоисполнители» |
| Ограничения по ДП | На переходе заданы ограничения по ДП | «Есть ограничения по дп» |
| Действия с ДП | На переходе настроены действия с ДП | «Есть действия с ДП» |
Часть значков кликабельна и открывает соответствующую вкладку настроек перехода, остальные только показывают подсказку. Значки ролей бизнес-процесса и обязательных ДП описаны выше, в подсекциях «Роли бизнес-процесса на графе маршрута» и «Обязательные ДП на графе маршрута».
Подсказки значков — статические строки интерфейса: они хранятся в ресурсных файлах SPA и выводятся на языке пользователя; если строки для его языка нет, подставляется английский вариант, а затем русский.
Отображение подписей на графе маршрута¶
Подписи перехода показываются на графе в трёх видах. Переключают их две кнопки панели инструментов: «Показать полный маршрут» и, в полном маршруте, «Показать подписи подробно». Пока полный маршрут выключен, подписи видны только значком на переходе — «Подписи: <перечень>».
- Этапы — вид по умолчанию в полном маршруте. Переход с подписями рисуется не одной связью, а цепочкой узлов «Этап подписания N · Подписи: k»; в подсказке узла — названия подписей этапа. От этапа идут связь «Подписано» — к следующему этапу или к целевому статусу — и отказные связи к статусам возврата и отказных переходов с их названиями. У динамического (SQL) маршрута подписей первый узел в подсказке дополнительно несёт пометку «Динамический маршрут подписей».
- Подробно — включается кнопкой «Показать подписи подробно». Каждый этап становится узлом «Этап подписания N: завершён», а каждая привязка подписи — отдельным узлом со своей подсказкой: признак ЭЦП, «Отключена» для выключенной подписи, смарт-фильтр со ссылкой на него и условия запроса. От узла подписи отходят связи по её резолюциям — «Подписано», «Отклонено», «Удалено», «Эскалировано», «Делегировано», «Отозвано» или название резолюции, если её действие не из этого набора; все они сходятся в узел завершения этапа.
Данные для этапного и подробного вида выдаёт серверный эндпоинт под правами администратора, поэтому у пользователя без прав администратора подписи на графе не раскрываются — остаётся вид со значком. Состав выдачи — в signatures/backend.md, раздел «BpEditorController (граф подписей в дизайнере маршрута)».
Панель правил автоматизации на карте маршрута¶
Переход, к которому привязаны смарт-правила группы «Маршруты/переходы», отмечается на карте маршрута смарт-иконкой — она появляется и у переходов, автоматизация которых состоит только из принудительной смены статуса. Клик по иконке открывает панель правил перехода; клик по самому ребру, как и раньше, открывает редактор перехода.
Панель строится по группам действий: заголовок группы — её видимое название и тематическая иконка, под ним — карточки правил этой группы (идентификатор правила, событие: перед переходом, после перехода или принудительная смена статуса, смарт-фильтр с идентификатором и названием, пакет действий с идентификатором и названием) и перечень уникальных действий пакета. Повторяющиеся действия показаны один раз, список сворачивается до «Ещё N». Если пакет недоступен для отображения, вместо пустой группы показывается карточка правила с пометкой, что состав действий недоступен.
Правила категории без привязки к конкретному переходу собраны в блоке «Для всего маршрута» — он виден и при открытии панели с перехода, и отдельно: в тулбаре дизайнера появляется кнопка «Правила маршрута», когда у категории есть такие правила. Идентификаторы и названия в панели — текст, ссылки на объекты из панели не открываются.
Кнопки перехода¶
Каждому переходу соответствует кнопка на карточке задачи; текст кнопки — это название перехода. По умолчанию кнопки выводятся в начале формы.

Положение меняется опцией категории «Положение кнопок переходов и смарт-кнопок» (секция «Карточка задачи»); вариант «В конце формы» выводит блок кнопок после всех ДП, перед лентой сообщений.

Таблица переходов¶
Маршрут в табличном виде: каждая строка — переход из статуса (колонка «Из статуса») в целевой («В статус») с текстом кнопки, переопределением права на переход (колонка «Право»), сроком перехода, признаком активности (колонка «Активна») и автоматически присваиваемым ID. Над таблицей — кнопки «Добавить переход», «Восстановить по умолчанию», «Удалить выбранные переходы».

Начальный статус и шаг при постановке¶
Начальный статус по умолчанию — «Новая»; в опции «Произвольный статус начала маршрута» над таблицей можно выбрать другой начальный статус (только из статусов с типом «Начальный»).

Опция «Шаг при постановке» задаёт автоматический переход сразу после создания задачи (из переходов начального статуса). ⚠️ У создающего задачу должно быть право на этот переход.

Тот же автопереход можно реализовать иначе — пакетом смарт-действий на событии «После создания задачи» (вкладка «Смарт»); это удобно, когда переход нужен по условию или не из статуса «Новая».
Настройка перехода¶
Клик по строке таблицы открывает настройки перехода. Окно состоит из вкладок: «Настройки», «Подзадачи на переходе», «Подписи на переходе», «Доп. параметры», «Действия с ДП», «Смарты на переходе». Вкладки переключаются без перезагрузки страницы, и введённое в форме при переключении не теряется. Содержимое выбранной вкладки занимает остаток высоты окна под полосой вкладок и прокручивается внутри себя: на вкладке «Действия с ДП» форма создания действия ограничена половиной высоты панели и прокручивается, а таблица созданных действий занимает остаток высоты.

На вкладке «Настройки» задаются параметры самого перехода:
- Кнопка и порядок — название кнопки, описание (подсказка), порядок среди кнопок.
- Автоисполнитель — кто становится исполнителем после перехода (нажавший кнопку, роль или пользователь из ДП). Вариант «берётся из ДП» работает с ДП-списком, в значениях которого указаны ID пользователей, и с ДП «Выбор пользователей», настроенным на выбор одного пользователя без групп и оргединиц; другие ДП «Выбор пользователей» в список не попадают. Пункт «Заказчик» в списке «Автоисполнитель» включает тот же флаг, что «Назначить заказчика исполнителем»: заказчик добавляется в исполнители вместе с исполнителем из сработавшего источника. Настройка «Действия при автоназначении» решает судьбу прежних исполнителей (оставить или удалить, назначить ответственным).
- Срок перехода и «Альтернативный переход при просрочке» — по истечении срока задача автоматически уходит в указанный статус; если он не задан, задача остаётся в текущем статусе, а срок на кнопке становится красным.
- Флаги: «Сбросить срок» (очищает срок; для просроченных запрашивает причину), «Кнопка скрыта» (кнопка не отображается; переход остаётся доступен в ленте маршрута, если входит в основной маршрут, — в дизайнере такой переход рисуется пунктиром), «Требовать комментарий при переходе», «Назначить заказчика исполнителем», «Автоматически делать переход при завершении всех подзадач».
- «Изменить текст задачи» — подставляет новый текст по шаблону (не действует, если в категории включена автогенерация текста по ДП). «Перейти по ссылке после перехода» — смарт-выражение формирует URL или номер задачи, куда перейти после нажатия.
- «Сквозное согласование» — переход выполняется независимо от резолюций акцептантов; «Разовое согласование» — подпись не запрашивается повторно у акцептанта, уже давшего положительную резолюцию (действует на все подписи перехода).
Блок «Ограничить доступ» управляет видимостью кнопки: смарт-фильтр видимости плюс матрица переопределения права. В режиме «По умолчанию» кнопка видна только пользователям с правом «Исполнять» в категории; служебные пользователи (Робот1Ф) выполняют переходы всегда.
Список групп в блоке «Ограничить доступ». Кнопка «Добавить» открывает список групп, ролей и прав категории — из него выбирают, кому переопределяется право на переход. В списке есть строка поиска, длинный список прокручивается, уже добавленные строки в нём недоступны для выбора. Клик по строке добавляет её в матрицу с правом на чтение по всем статусам и закрывает список; клик вне списка закрывает его без выбора. Список открывается рядом с кнопкой «Добавить» поверх формы: если места под кнопкой мало, он раскрывается вверх, а по ширине не выходит за границы экрана.
⚠️ Матрица переопределения права проверяет только статические права категории (группы и назначенные права), не записи кэша смарт-доступа — право, выданное динамически через смарт-доступ, кнопку перехода видимой не делает. Чтобы кнопка учитывала смарт-доступ, соответствующее условие нужно добавить в смарт-фильтр видимости кнопки.
⚠️ Поле «Процедура при переходе (SQL)» оставляйте пустым — оно предназначено только для сертифицированных специалистов разработчика; произвольный SQL здесь может повредить данные.
⚠️ Принудительная смена статуса (правка поля «Статус» в карточке) доступна только администратору категории и не запускает автоматизации перехода — подписи, проверки и изменения ДП, смарты; использовать только для исправления ошибок.
Защита от несохранённых изменений¶
Окно настроек перехода бережёт несохранённую правку так же, как окно свойств статуса (см. «Защита от случайного закрытия» выше). Если форма изменена и не сохранена, закрытие окна — по кнопке «Отмена», крестику, клавише Esc или клику по фону — открывает вопрос «Сохранить изменения» с кнопками «Сохранить», «Не сохранять» и «Отмена». «Сохранить» записывает настройки перехода на сервер и выполняет уход в список переходов только после успешной записи: если запись не прошла, окно остаётся открытым с внесёнными данными. «Не сохранять» уходит в список без записи, введённые правки отбрасываются. «Отмена» возвращает в редактирование. Тот же вопрос срабатывает при уходе со страницы настроек перехода по хлебным крошкам или по ссылке; неизменённая форма закрывается сразу, без вопроса. Защита действует на всех вкладках окна настроек перехода.
Мгновенные операции в таблице переходов — добавление, удаление и изменение порядка — выполняются без вопроса, двухкнопочное подтверждение удаления перехода сохранено.
Подзадачи на переходе¶
Автосоздание подзадач или связанных задач после выполнения перехода.

Новая подзадача добавляется кнопкой «Добавить подзадачу» — сначала указывается категория.

На вкладке «Основное» задают текст задачи (с подстановкой $ExtNДП из родителя), срок, условие создания, заказчика и флаги (связанная задача, копировать подписчиков, переносить вложения).

⚠️ Флаг «Связанная задача» создаёт связанную (а не дочернюю) задачу; при его включении в родительской задаче перестаёт работать автопереход по завершении всех подзадач.
Вкладка «Параметры» — источник значения каждого ДП подзадачи: Автоматически / Фиксированное значение / из ДП родительской задачи.

Вкладка «Исполнители» — кто назначается исполнителем подзадачи (группа, заказчик родительской, роль и т. д.).

Подписи на переходе¶
Запрос подписей (согласование) при переходе — статический или динамический маршрут согласования.

Новая подпись создаётся в форме с вкладками «Основное», «Обязательные ДП», «Информационные ДП», «Условия запроса», «Настройки ЭП».

Порядок подписей задаёт поле «Этап согласования» на вкладке «Основное»: одинаковый номер этапа — подписи запрашиваются параллельно, разные номера — последовательно. Вкладка «Настройки ЭП» появляется только при включённом флаге «ЭЦП».
Обязательные ДП — параметры, которые акцептант должен заполнить до вынесения резолюции.

Информационные ДП — значения, видимые акцептанту при запросе подписи (не поддерживаются типы «Большой текст с форматированием», «Таблица», «Выбор пользователей», «Адрес», «Дерево»).

Динамический маршрут согласования формируется SQL-процедурой в момент перехода (опция «Сервис определения подписей на переходе» = «Маршрут из sql запроса»).

Флаг «Кешировать полный маршрут согласования» фиксирует настройки маршрута на момент старта согласования: правки, внесённые по ходу, применятся только в следующем цикле.
Доп. параметры (обязательные на переходе)¶
ДП, обязательные к заполнению для выполнения перехода.

Обязательный ДП добавляется выбором из списка над таблицей и кнопкой «Создать».

При наведении на кнопку перехода пользователь видит список незаполненных обязательных полей; при попытке перейти они подсвечиваются красным.

Действия с ДП¶
Действия с ДП типа «Файл» на переходе: сгенерировать файл по шаблону и вложить его в задачу или в ДП, ограничить доступ к файлу.

Новое действие создаётся заполнением параметров и кнопкой «Создать действие» (генерация по шаблону, выбор действий, ограничение доступа, имя файла-результата).

Флаг «Шаблон находится в доп. параметре» переключает источник шаблона: включён — шаблон берётся из выбранного ДП, выключен — выбирается готовый шаблон. Уровень защиты результата задаёт «Ограничить доступ к файлу»: без защиты, только чтение (с паролем или без), отслеживание изменений, комментирование.
После создания действие появляется в таблице.

Смарты на переходе¶
Смарт-пакеты, привязанные к событиям «Перед переходом» и «После перехода» (те же пакеты доступны и на вкладке «Смарт» категории — здесь вынесены для удобства).

Если на переходе настроены и подпись, и смарты, действия выполняются по порядку: акцепт подписи → смарт-действия после подписания статической подписи → переход по маршруту → смарт-действия после перехода.
7. Файлы и вложения¶
Где настраивается:
- FormsGenerator:
FileProviderId, Word-блок - API: файлы категории
- API: действия по ДП на переходах (файловые действия на шагах)
Таблицы БД:
dbo.Subcategoriesdbo.Signatures(косвенно для сценариев подписи файлов)- профильные таблицы вложений (через file services)
Ключевые поля:
| Поле/объект | Что контролирует |
|---|---|
FileProviderId |
Где хранить вложения категории |
AllowDeleteFiles (AllowDeleteFilesEnum) |
Разрешение удаления файлов. Влияет на блок «Файлы» задачи и на кнопку удаления в ДП типа «Файл» и «Мультифайл». Значения: Allow (0), Disallow (1), DefineBySmartExpression (2). При DefineBySmartExpression: смарт-выражение возвращает true — запрещено, false — разрешено. |
AllowDeleteFilesSmartExpressionId |
ID смарт-выражения для режима DefineBySmartExpression |
ForbidUploadFilesIntoClosedTasks |
Блок загрузки в закрытых задачах |
AutoDeletePrevVersionsOfFiles |
⚠️ Устаревшая, не используется — в коде нет ссылок, версии не удаляются; удаляется из админки. Ранее предполагала автоудаление старых версий файла при совпадении имени |
DisallowProtectedDocx / DisallowEmbeddingsInDocx |
Ограничения Docx |
GenerateSubcategoryTemplate |
Генерация DOCX-шаблона категории |
Зависимости между полями:
- Ограничения Docx и Word-сценарии актуальны только в категориях с соответствующим процессом документов.
8. Подписи¶
Где настраивается:
- автоадминка:
signatures,bp-roles-steps - FormsGenerator: поля
*ConfirmSignature*,StepSignsFromSysRobot,DeclineSignatureFromSysRobot - API: маршруты/шаги и роли БП
Таблицы БД:
dbo.Signaturesdbo.BpRolesStepsdbo.Subcategories
Ключевые поля:
| Поле | Что контролирует |
|---|---|
AllowSignatureRevoke |
Разрешение отзыва подписи |
AllowSignatureRevokeByAcceptors |
Отзыв акцептантами |
AllowSignatureRevokeByOwner |
Отзыв заказчиком |
AllowSignatureRevokeByRequester |
Отзыв инициатором |
DelegateTaskConfirmSignatureId |
Подпись при делегировании |
TaskOwnerChangeConfirmSignatureId |
Подпись при смене заказчика |
ChangeDueConfirmSignatureId |
Подпись при смене срока |
Зависимости между полями:
- Для каждой проверки подтверждения выбирается источник: статическая подпись (
...SignatureId) или смарт-выражение (...SmartExpressionId).
9. Шаблоны задач¶
Где настраивается:
- API: универсальные шаблоны
- API: категории и разделы (
auto-task-text-template, массовая генерация)
Таблицы БД:
- таблицы контура
TaskUniversalTemplates dbo.Subcategories(часть template-related параметров)
Ключевые поля/объекты:
| Элемент | Что контролирует |
|---|---|
| Шаблон задачи | Шаблоны создания задач |
| Правило применения | Правила применения шаблонов |
| Генерация шаблона | Генерация шаблона по структуре категории |
auto-task-text-template |
Шаблон автогенерации текста |
Зависимости между полями:
- Правила шаблонов привязаны к категории и могут конфликтовать по приоритету.
10. JS/CSS вставки¶
Где настраивается:
- API: JS/CSS-вставки
Таблицы БД: таблицы контура вставок (includes)
Ключевые поля/объекты:
| Объект | Что контролирует |
|---|---|
GET .../includes/ntf |
Вставки на форму создания задачи (НТФ) |
GET .../includes/mtf |
Вставки на карточку задачи (МТФ) |
SubcatIncludeType |
Тип/режим отображения вставки |
Зависимости между полями:
- Одна и та же вставка может иметь разные типы отображения для НТФ и МТФ.
11. Опросы и новости¶
Где настраивается:
- API: настройки опросов
- API: настройки новостей
- API: категории и разделы (
/news) - EntityEditor:
summarycategories*(для сводных категорий состояний)
Таблицы БД:
SummaryCategories/SummaryStates- настройки новостей/опросов через профильные сервисы
Ключевые поля/объекты:
| Элемент | Что контролирует |
|---|---|
| Настройки новостной категории | Поведение новостной категории |
| Настройки опросов | Шаблон и условия опросов |
AllowPartialSurveyComplete |
Разрешить частичное прохождение опроса: участник может закрыть опрос на середине, промежуточные ответы автоматически сохраняются, финал фиксируется только при нажатии «Готово». При false опрос должен быть пройден за одну сессию |
TaskTextSearchType (сводная категория) |
Поиск в сводной категории |
SummaryCategoryIDSummaryStates |
Состояния, включённые в сводку |
Smart-события при прохождении опроса:
| Когда срабатывает | EventID / код |
|---|---|
Промежуточное автосохранение ответов (IsComplete = false, есть изменения) |
187 — AfterSurveyResultUpdated |
Финальное «Готово» (IsComplete = true) |
188 — AfterSurveyCompleted + custom event SURVEY_RESULT (для смарт-пакетов «После завершения опроса») |
AfterSurveyCompleted и SURVEY_RESULT срабатывают на финальное «Готово» независимо от настройки AllowPartialSurveyComplete. Повторное нажатие «Готово» по уже завершённому опросу отбивается ошибкой SurveyHasAlreadyBeenCompleted — событие не дублируется.
Зависимости между полями:
- Сводная категория зависит от выбранных состояний и привязанных групп доступа.
SQL view сводного раздела (с 2.268.394)¶
При сохранении сводного раздела через AdminSPA-админку SummaryCategoriesAdminService в той же транзакции вызывает SummaryCategoryService.GenerateSummaryCategorySqlView(id) — создаёт (или пересоздаёт через DROP+CREATE) SQL-view vsummary{id}, через которую строится выборка задач сводного раздела. Раньше при сохранении через новую админку view не создавалась (в старой админке вызов был, в AdminSPA — пропущен), из-за чего свежесозданный сводный раздел не отдавал задачи. Теперь вызов есть в трёх точках SummaryCategoriesAdminService: Create (после SummaryStatesEntityService.CreateStatesForCategory), Update (после UpdateStatesForCategory) и Delete — на удалении вызывается DropSummcaryCategoryView(id), чтобы не оставлять view-сироту в БД.
12. Кнопки действий¶
Где настраивается:
- API: кнопки действий
Таблицы БД: контур пользовательскых кнопок (TaskFormCustomButton*)
Ключевые поля/объекты:
| Элемент | Что контролирует |
|---|---|
| Создание кнопки | Параметры создаваемой кнопки |
| Условия кнопки | Условия показа и действия |
| Список кнопок | Список кнопок категории |
buttons/update |
Изменение кнопок без редактирования категории целиком |
Зависимости между полями:
- Видимость кнопки зависит от её условий и от структуры переходов/ролей.
Аудит. Изменения панели инструментов категории (настройка состава кнопок, отдельных кнопок и сброс к умолчанию) записываются в журнал действий — найти записи можно в AdminSPA → Журналы → Общий лог. На создание, изменение и удаление кнопки приходится одна запись: в её описании — тип операции и имя кнопки, а в структурированной части — значения изменённых атрибутов кнопки до и после, а также добавленные и удалённые привязки кнопки к дополнительным параметрам и к таблицам блоков «Используется». Запись появляется только после успешного завершения операции: если сохранение прервалось ошибкой, в журнале ничего не остаётся.
Типичные ошибки настройки¶
Частые проблемы настройки категории и где их проверять:
| Симптом | Причина | Где проверить | SQL-диагностика |
|---|---|---|---|
| Не видны нужные блоки/ДП в карточке | Нарушен порядок МТФ или связи блок-таблица | блоки формы + subcategories |
select top 100 * from dbo.CustomTaskUsedAsEpBlockSettings where SubcatID = @SubcatId order by SortOrder; |
| Переход не срабатывает | Ограничение по ДП на шаге или неверный role-step | states-routes*, bp-roles-steps |
select * from dbo.BpRolesSteps where StepId = @StepId; |
| Нельзя делегировать/сменить заказчика | Включено подтверждение подписью, но не настроен источник подписи | блок исполнителей в FormsGenerator | select top 1 SubcatId, DelegateTaskConfirmSignatureId, TaskOwnerChangeConfirmSignatureId from dbo.Subcategories where SubcatId = @SubcatId; |
| Невозможно загрузить файл в закрытой задаче | Активен запрет для закрытых задач | subcategories / files settings |
select SubcatId, ForbidUploadFilesIntoClosedTasks from dbo.Subcategories where SubcatId = @SubcatId; |
| Массовая генерация текста изменила все задачи не так, как ожидалось | Ошибка в шаблоне автотекста | generate-task-descriptions-by-template |
select SubcatId, AutoTaskTextTemplate from dbo.Subcategories where SubcatId = @SubcatId; |
| Категория «пропала» из нужного дерева | Сбита привязка к разделу или видимость | categories + subcategories |
select s.SubcatId, s.CategoryId, c.Name as CategoryName from dbo.Subcategories s left join dbo.Categories c on c.CategoryId = s.CategoryId where s.SubcatId = @SubcatId; |
| В пути категории остался разделитель на конце | У категории пустое название, а путь сохранён прежней версией | название категории на странице «Названия элементов» | select s.SubcatID, s.Description, s.CategoryID, s.FullPath from dbo.Subcategories s where s.SubcatID = @SubcatId; |
SQL-диагностика метамодели админки¶
Проверка, какими формами и полями управляется категория:
select
af.Alias,
af.Name,
do.FullObjectName,
afc.CountColumns,
afs.CountSections
from dbadmin.AdminForms af
left join (
select FormId, count(1) as CountColumns
from dbadmin.AdminFormSectionColumns
group by FormId
) afc
on afc.FormId = af.Id
left join (
select FormId, count(1) as CountSections
from dbadmin.AdminFormSections
group by FormId
) afs
on afs.FormId = af.Id
left join dbadmin.DbaObjects do
on do.Id = af.DbaObjectId
where af.Alias in (
'subcategories',
'categories',
'states',
'bp-roles',
'bp-roles-groups',
'bp-roles-steps',
'subcat-notes',
'subcat-state-hints',
'signatures',
'technical-works'
)
order by af.Alias;
Проверка зависимостей полей в форме subcategories:
select
dep.AdminFormSectionColumnId as ColumnId,
dep.DependsOnColumnId,
dep.OperationType,
dep.Value,
dep.DependencyRuleType
from dbadmin.AdminFormSectionColumnsDeps dep
where dep.FormId = (
select top 1 af.Id
from dbadmin.AdminForms af
where af.Alias = 'subcategories'
)
order by dep.AdminFormSectionColumnId;
Admin API — создание категорий и разделов¶
Создание раздела (Category)¶
Раздел создаётся запросом:
POST("/api/admin/categories", {
"CategoryName": "Название раздела" # НЕ "Name"!
})
Создание категории (Subcategory)¶
Категория создаётся запросом:
POST("/api/admin/subcategories", {
"SubcategoryName": "Название категории", # НЕ "Name"!
"CategoryID": category_id # Поле БД: CategoryId; в API принимается как CategoryID
})
Создание переходов (StateRoutes / Steps)¶
Переходы маршрута создаются запросом. Кроме полей из примера, обязательно поле StepDescription — название перехода: без него создание и изменение перехода отвечают 400 Bad Request.
POST("/api/admin/subcategories/steps", {
"SubcatID": subcat_id,
"StateID": state_id,
"HiddenStep": False # ОБЯЗАТЕЛЬНО — bool?, NULL → InvalidCastException
})
Системные steps создаются автоматически при создании категории (stateId:1 «Новая», stateId:2 «Завершена»). Повторный вызов с теми же stateId → 500.
Типичные ошибки Admin API категорий¶
Частые ошибки при работе с Admin API категорий:
| Проблема | Причина | Решение |
|---|---|---|
Name → 500 |
Поле называется CategoryName / SubcategoryName |
Использовать точные имена полей (см. примеры запросов выше) |
HiddenStep не передан → InvalidCastException |
bool? → NULL в БД → ошибка приведения типа |
Всегда передавать HiddenStep: false |
| 500 при создании step | Дубль stateId (системные steps уже созданы) | Проверять наличие перед созданием |
StepDescription не передан или пустой → 400 |
Название перехода обязательно при создании и изменении перехода | Передавать непустое StepDescription |
13. Дополнительные параметры (ДП) в категории¶
Дополнительные параметры (ДП) — настраиваемые поля задачи помимо системных: они определяют, какие данные собираются в категории, как они отображаются на форме и в карточке задачи и кто имеет к ним доступ.
Привязка ДП к категории и все их настройки описаны в профильном домене ДП — ext-params/admin.md → «Привязка ДП к категории».
14. Блоки «Используется» (БИ)¶
БИ отображают связанные задачи и объекты (письма, звонки, файлы) в карточке задачи.
В карточке задачи блок «Используется» выглядит как отдельный список связанных задач или объектов с собственной панелью инструментов и (при настройке) кнопкой «Создать».

Где настраивается:
- UI: настройки категории → «Блоки Используется»
- API: блоки формы
Таблицы БД: dbo.CustomTaskUsedAsEpBlockSettings, dbo.EpBlockSettingsToBlocks
Все блоки БИ категории собраны в списке: идентификатор, имя, порядок на форме и признаки сворачивания. Новый блок создаётся кнопкой «Создать».

Настройки блока¶
Параметры блока «Используется» (БИ):
| Параметр | Описание |
|---|---|
| ID | Присваивается автоматически при создании |
| Имя | Название блока |
| Порядок на форме | Общий порядок с блоками ДП (порядок 1 выше порядка 2) |
| Может сворачиваться / По умолчанию свернут | Управление раскрытием |
| Доступен по смарт-фильтру | Видимость блока по условиям (пользователь, параметры задачи). Недоступно при создании — задаётся на форме редактирования |
| Видимость | Скрыта / Только мобильный / Только веб / Отображать везде. Приоритет над смарт-фильтром. Недоступно при создании — задаётся на форме редактирования |
| Вид отображения | Таблица (стандартный список), Формы задач подряд (последовательность карточек), Галерея задач |
Новый блок создаётся в форме с полями «Имя», «Порядок на форме» и флагами сворачивания.

Существующий блок редактируется на вкладке «Редактировать блоки»: сверху — параметры блока, снизу — список его вкладок.

В виде отображения «Таблица» связанные задачи показываются стандартным списком.

В виде «Формы задач подряд» каждая связанная задача выводится отдельной карточкой без панели инструментов и ленты комментариев; ДП, ресурсы и вложения можно редактировать прямо из блока, как в форме задачи. Если в блоке одна таблица — задачи показываются раскрывающимися блоками с заголовком «имя БИ + номер»; если таблиц несколько — единой лентой с горизонтальными разделителями.

Если у категории-источника включено «Скрыть текст задачи» и задано «Название сущности», это название показывается вместо имени блока БИ. Если в категории-источнике задан «Текст кнопки постановки», он используется как надпись кнопки создания задачи из БИ.
Источники данных вкладки БИ¶
Вкладка БИ может брать данные из разных источников:
| Тип источника | Описание |
|---|---|
| Связанная категория | Категория с Lookup-ДП на данную. При создании из БИ — автозаполнение Lookup. В выпадающем списке доступны только категории, где уже есть такой Lookup-ДП (иначе сначала создайте его в категории-источнике) |
| Хранимая процедура SQL | Обязательные параметры: @UserID, @TaskID, @UserNameMode, @ShowAllTasks, @StartIndex, @EndIndex. Обязательные поля: TaskID, IsOverdue, StateID, PriorityID, IsClosed, IntColor, FinishWork, ParentTaskID. Опционально: TaskIdToDrillDown (int) — цель перехода при клике. Для корректной группировки/фильтрации переведите вкладку на «Произвольный источник» |
| Произвольный источник | ХП с произвольными колонками. @UserID обязательно, @TaskID опционально |
| Смарт-фильтр | Отбор задач из любых категорий. Поле «Категория» определяет куда ставить новые задачи |
| Существующая таблица | Повторное добавление вкладки из другого БИ. Одна таблица может быть в нескольких блоках, но в одном блоке — только один раз |
⚠️ БИ работает с уникальными TaskID — основной TaskID должен быть уникален для каждой строки набора данных (повторы допустимы только в колонке TaskIdToDrillDown).
PostgreSQL. Источник «Хранимая процедура SQL» на стенде PostgreSQL должен быть табличной функцией (RETURNS TABLE / SETOF), а не процедурой: платформа читает набор строк запросом вида select * from схема.имя(...). Процедура PostgreSQL (CREATE PROCEDURE) набор строк не возвращает, и вкладка с таким объектом не откроется. Обязательные параметры и колонки — те же, что в таблице выше. На Microsoft SQL Server вызов не меняется.
Новая вкладка добавляется на вкладке «Добавить таблицу в блок»: выбирают тип источника, блок, категорию и параметры отображения. После сохранения приложение возвращается на вкладку «Редактировать блоки».

Настройки вкладки¶
Параметры вкладки БИ:
| Параметр | Описание |
|---|---|
| Имя | Название вкладки; если не задано — берётся имя источника (только для SQL и Smart) |
| Тип | Тип источника данных вкладки. Выбирается из списка: «Связанная категория», «Смарт-фильтр», «Произвольный источник» — в том числе у уже созданной вкладки. При смене типа поле «Источник» переключается на соответствующий контрол, а значения источников других типов очищаются. Для вкладки на хранимой процедуре SQL тип не меняется; для вкладки типа «Существующая таблица» не заполняется |
| Показывать только активные | На вкладке только незавершённые задачи (только для связанных категорий) |
| Категории источники | Мультивыбор категорий; для оптимизации запросов данных |
| Показывать кнопку «Создать» | Да / Нет / Smart+TSql. Кнопка видна только пользователям с правом создавать задачи в категории |
| Пакетная обработка | Кнопка пакетной обработки на панели инструментов. Для SQL/Smart источников — ограниченный набор операций |
| Режим выбора | Выбор задач для пакетной обработки |
| Тип контента | Задача / Прочее (для SQL-источников) |
| Брать ссылку из | Колонка набора данных со ссылкой; по клику на строку открывается она вместо карточки задачи (только SQL) |
| Открывать ссылку в | По умолчанию (по профилю) / Новое окно / Модальное окно (только SQL) |
| Приоритетный режим таблицы | Прямое редактирование (двойной клик → edit, только при праве менять параметр) или Просмотр (клик → карточка). По умолчанию «Не указано» — применяется режим из РМ группы «Приоритет режима редактирования» |
| Не закрывать окно после создания | Задача остаётся в модальном окне |
| Видимость | Скрыта / Только мобильный / Только веб / Везде. Приоритет над смарт-фильтром видимости |
| ДП в категории-источнике | Ограничивает вкладку задачами, связанными через один выбранный дополнительный параметр категории-источника; не задан — задачи по всем полям ссылки. Действует только для источника «Связанная категория», задаётся через API администрирования |
Существующая вкладка редактируется в отдельном окне — те же параметры источника, кнопки «Создать», режима таблицы и видимости.
Сменить категорию-источник у существующей вкладки может только администратор обеих категорий — и той, на которую вкладка переводится, и прежней. Смена источника фиксируется в журнале изменений вкладки.

У каждой вкладки блока своя настройка таблицы: состав и порядок колонок, сортировка, группировка и фильтры запоминаются отдельно по вкладкам и восстанавливаются при возврате на вкладку. Колонки, которых нет в источнике вкладки, из сохранённой настройки не восстанавливаются — например, после смены категории-источника.
Это личный вид вкладки — пользователь настраивает его под себя. Кроме личного у таблицы блока есть общий вид: его задаёт администратор, и его по умолчанию видят все пользователи, у которых нет собственного сохранённого вида. При копировании категории переносится именно общий вид блока (см. «Копирование категории»), личные настройки пользователей — нет.
Несохранённые изменения настроек блока и вкладок¶
Настройки блока БИ и его вкладок защищены от потери правок. Пока на вкладке «Редактировать блоки» есть изменения — правленые параметры блока или заполненная форма добавления таблицы, — уход со страницы настроек, нажатие Esc и кнопка «Отмена» открывают окно «Сохранить изменения» с действиями «Сохранить», «Не сохранять» и «Отмена». «Сохранить» записывает параметры блока и, если менялась форма добавления таблицы, саму таблицу, и выполняет исходный переход только после успешного ответа сервера: при ошибке окно остаётся открытым с внесёнными данными. «Не сохранять» уходит без записи, «Отмена» возвращает в редактирование. Форма без изменений закрывается без вопроса.
Если форма добавления таблицы заполнена не полностью, «Сохранить» её не записывает: приложение открывает вкладку «Добавить таблицу в блок» с незаполненными полями и остаётся на странице настроек.
Сохранение по Ctrl+Enter из формы блока и подтверждение при удалении блока работают как прежде.
Форма быстрой постановки¶
Откуда открывается. Форма быстрой постановки вызывается из блока «Используется» (БИ), привязанного на категорию: в этом блоке на карточке задачи есть кнопка «Создать» (в интерфейсе открывается модальное окно «Задача»). Появится по ней краткая форма или полная — зависит от настройки блока и обязательных ДП категории (условия — ниже).
Флаг IsQuickCreateForm в CustomTaskUsedAsEpBlockSettings. Показывает краткую форму (системные поля + обязательные ДП). Недоступна если есть обязательные ДП типа Таблица или Multilookup. Только для БИ на категорию.
При включённой быстрой постановке кнопка «Создать» открывает краткую форму — только системные поля (в зависимости от настроек категории) и обязательные при создании ДП.

В выпадающем меню у кнопки «Создать» остаётся пункт «Полная форма» — для открытия полной карточки постановки.

Итоги (агрегаты)¶
CustomSetting DataSourceAggregates:
[{"type": "taskUsed", "id": 39, "gridTotalColumns": {"ExtParam1709": ["sum", "avg"]}}]
sum, avg, min, max. Для ДП — ключ ExtParam{ID}, для системных — имя параметра (overallPlan, overallFact).
Связь БИ-таблицы с блоком ДП¶
Одна таблица БИ (режим «Таблица») может быть встроена внутрь блока ДП — отображается рядом с полями. Порядок блоков ДП и БИ — общий.
Встраивание включается в настройках блока ДП опцией «Связь таблицы БИ с блоком ДП» (доступно только для БИ с видом отображения «Таблица»).

После связывания таблица БИ отображается внутри блока ДП рядом с его полями.

UI-переход к настройкам¶
Открыть настройки БИ можно из пользовательского интерфейса: ПКМ на блоке в карточке задачи → «Настройки» — откроется соответствующий раздел администрирования. Пункт «Настройки» в контекстном меню доступен только администраторам.

Аудит. Изменения блоков «Используется» записываются в журнал действий — найти записи можно в AdminSPA → Журналы → Общий лог. На создание, изменение и удаление блока приходится одна запись: в её описании — тип операции и имя блока, а в структурированной части — сам блок и, при изменении, значения изменённых полей до и после. Сохранение состава таблиц блока тоже попадает в журнал, причём и тогда, когда состав не изменился: в такой записи разбора изменений нет, только блок и перечень его таблиц. Если состав изменился, в структурированной части видно, какие связи добавлены и какие удалены.
15. Смарт-кнопки¶
Кнопки действий в карточке задачи и в статьях пространств.
Где настраивается:
- UI: настройки категории → вкладка «Кнопки»
- API: кнопки действий
Таблицы БД: контур TaskFormCustomButton*
Смарт-кнопки настраиваются в настройках категории на вкладке «Кнопки» — здесь их список и кнопка «Создать». По умолчанию кнопки выводятся в начале формы вместе с переходами по маршруту; их положение меняется опцией категории «Положение кнопок переходов и смарт-кнопок» (секция «Карточка задачи»).

Основные параметры кнопки¶
Основные параметры смарт-кнопки:
| Параметр | Описание |
|---|---|
| Имя | Текст кнопки (или tooltip при наличии иконки) |
| Описание | Всплывающая подсказка |
| Иконка | Из набора /spa/content-icons |
| Порядок | Порядок среди кнопок |
| Видимость | Скрыта / Только мобильный / Только веб / Отображать везде. Приоритет над всеми остальными настройками видимости |
| Отображать в «Других действиях» | Группировка в выпадающее меню. Доступно только при Видимость = «Только веб» / «Отображать везде». Название меню задаётся опцией категории «Другие действия» |
Новая кнопка создаётся кнопкой «Создать» — в окне свойств задают имя, описание, иконку, порядок, видимость, действие (JS/пакет/URL), права и связь с ДП/БИ.

Действие кнопки¶
Действие кнопки задаётся одним из вариантов:
| Вариант | Описание |
|---|---|
| JavaScript выражение | Скрипт при нажатии |
| Пакет действий | Глобальный или локальный пакет смарт-действий |
| URL | Произвольная ссылка / Форма новой задачи / Форма задачи / Раздел / Категория. FastReport: /reports/view/{id}/print-form. onlyCloseAfterCreate=true — закрыть модалку без редиректа (только для ссылок в модальном окне). Для «Форма новой задачи» — смарт-выражения: Категория (обяз.), Задача-источник/Подзадача/Связанная (опц.); ДП переносятся из задачи-источника |
| Открывать ссылку в | В текущем окне / В модальном окне / В новом окне — способ открытия URL |
⚠️ Если указаны и JS/пакет, и URL — сначала JS/пакет, затем URL. Ошибка JS → переход по URL не выполняется.
Режим недоступности¶
Поведение недоступной кнопки:
| Параметр | Описание |
|---|---|
| Сообщение пользователю | Текст или смарт-выражение при нажатии на недоступную кнопку |
| Смарт-фильтр активности | true → доступна, false → недоступна |
| Скрыть по смарт-фильтру | При false — кнопка полностью скрыта |
Права на кнопку¶
Доступ к кнопке:
- По умолчанию — только с правом «Исполнять». Робот1Ф всегда имеет доступ
- Матрица доступа — статусы × группы/роли/права
Матрица настраивается по кнопке «Настройка прав доступа»: статусы × группы/роли/права, иконка 👁 — просмотр, ✏️ — редактирование.

Связь с ДП и БИ¶
Кнопку можно привязать к полю ДП или таблице БИ:
- С ДП — кнопка рядом с полем (одна кнопка ↔ несколько ДП и наоборот). С иконками — друг за другом, без иконок — свёрнуты в «Действия». Для «Большой текст» — max 2 кнопки напрямую, с 3-й переносятся в «Действия»; длинный текст кнопки обрезается (полный — в подсказке)
- С таблицами БИ — кнопка в панели инструментов блока (одна кнопка ↔ несколько таблиц и наоборот)
С иконками кнопки выводятся рядом с ДП друг за другом.

Без иконок кнопки сворачиваются в меню «Действия».

Привязанная к таблице БИ кнопка отображается в панели инструментов блока.

Созданная кнопка появляется в списке; чтобы изменить её — кликните по строке (удаление — через контекстное меню строки).

Кнопки в пространствах¶
Доступны через иконку действий в статье. иконка по умолчанию из /spa/content-icons. Отделены от стандартных действий горизонтальной чертой. Кнопки можно сгруппировать в «Другие действия», как в карточке задачи.
![]()
Автоматически создаваемые кнопки¶
Пример: «Пройти опрос» при включении режима опросов, «Редактор» для категории-справочника опросов.
UI-переход к настройкам¶
Открыть настройки кнопки можно из пользовательского режима: ПКМ на кнопке в карточке задачи → «Настройки» (доступно только администраторам).

16. Опросы¶
Двухкатегорийная архитектура: справочник опросов + категория прохождения.
Где настраивается:
- UI: настройки категории → вкладка «Опросы»
- API: настройки опросов
Таблицы БД: dbo.Surveys, dbo.SurveyQuestions, dbo.SurveyResults, dbo.SurveyResultQuestions
⚠️ Не путать с опросами в сообщениях (чаты/соцсеть) — там таблицы Polls, PollsQuestions, PollsQuestionsAnswersOptions, PollsResponses.
Режим «Опросы» (категория-справочник)¶
Автосоздаётся смарт-кнопка «Редактор» с URL /spa/survey/creator/?surveyTaskId={surveyTaskId}. Настройки кнопки можно корректировать (видимость, статусы и т.д.).
Сохранить конфигурацию опроса может пользователь, у которого есть доступ к задаче-опросу и право «Администратор задач» в её категории. Одного права просмотра задачи для сохранения недостаточно.
Перенос между площадками. Утилита переноса конфигурации забирает только шаблон опроса: саму конфигурацию, список вопросов и задачу-шаблон, а также режим категории и связь с параметром выбора. Созданные опросы и результаты прохождения остаются на площадке-источнике и не переносятся. Вложенные в конфигурацию файлы и ссылки на задачи пересчитываются при импорте автоматически; задача, не попавшая в пакет, ищется на приёмнике по её идентификатору GUID, а если не находится — импорт продолжается, и в журнал миграции пишется предупреждение.
Режим «Прохождение опросов» (категория-исполнитель)¶
Требует ДП Lookup (источник — категория-справочник), указанный в «Выбор опроса».
| Параметр | Описание |
|---|---|
| Разрешить частичное прохождение | Автосохранение каждого ответа, возврат к прерванному месту. Если выключено — сохранение только по кнопке «Готово» |
| Опрос — настройка доступа | Матрица доступа к кнопке прохождения (статусы × группы/роли). По умолчанию — доступно всем |
| Результат — настройка доступа | Матрица доступа к блоку результатов и к чтению назначения опроса. По умолчанию — доступно всем, у кого есть доступ к задаче |
Анонимные опросы. Анонимность включается ДП-флажком: в системных настройках указывается ДП «Анонимный опрос», в категории у него ставится значение по умолчанию. ДП типа «Флажок» с таким названием заводится системной настройкой автоматически, а его ссылка хранится в Общих настройках приложения. Признак анонимности хранится не в самом ДП, а в значении по умолчанию его связи с категорией; скрытость — свойство той же связи, а не ДП: связь, которую админ-API создаёт сам при сохранении настроек опросов, помечается скрытой и на форме задачи не показывается, а привязанный к категории вручную ДП виден по настройкам своей связи, как любой другой. Если ДП в Общих настройках не указан, анонимность недоступна: категория работает в обычном режиме. Для анонимного режима нужен настроенный системный анонимный пользователь — без него ответ не принимается.
В анонимном режиме результат сохраняется без автора, поэтому на одну задачу может приходиться несколько ответов, а ограничение «один ответ на задачу» не действует. Ограничения на число ответов нет: каждое сохранение, включая промежуточное автосохранение при частичном прохождении, добавляет отдельную запись результата и не дописывается в предыдущую. Событие автоматизации после опроса выполняется от имени анонимного пользователя, поэтому смарты и уведомления респондента не видят. Общий блок результатов в задаче отдельный ответ не показывает: прочитать конкретный ответ может только тот, у кого есть право выставлять оценки; в самом ответе вместо автора отдаётся системный анонимный пользователь.
Отдельного переключателя в форме «Настройки опросов» нет: форма флаг не показывает и в запросе его не передаёт, а незаполненный флаг трактуется как выключенный — поэтому сохранение настроек опросов сбрасывает анонимность категории. Изменение флага пишется в журнал администрирования отдельной записью.
Кнопка «Пройти опрос» доступна только исполнителю. В результатах — только показанные вопросы с записанными ответами (включая пустые). Скрытые по условиям вопросы не выводятся.
Ограничения проверяются и на сервере, а не только видимостью кнопки. Пройти опрос и отправить ответ может исполнитель, назначенный ответственным по задаче. Назначение опроса и его результаты читает тот, у кого есть доступ к задаче и кому матрица «Результат — настройка доступа» даёт право не ниже чтения; ответственный исполнитель читает их всегда, а ненастроенная матрица никого не ограничивает. Матрица «Опрос — настройка доступа» действует на прохождение опроса.
События автоматизации¶
При работе с опросом доступны события автоматизации:
- «После завершения опроса»
- «После обновления результата опроса»
17. Права доступа к категории¶
Вкладка «Доступ» в настройках категории. Детальная матрица 12 прав — см.
../permissions/admin.md.
Где настраивается:
- UI: настройки категории → вкладка «Доступ»
- UI: настройки группы → «Права на категории»
Переходы блока «Доступ»: «По группам», «По правам» и «Журнал» — отображаются чипами. Первые два переключают режимы просмотра прав, поиск групп — по названию и ID. «Журнал» открывает журнал административных действий, отфильтрованный по этой категории: пользователь, сообщение, дата и время, затронутые объекты.

12 прав на категорию¶
Полный набор прав, выдаваемых группам на категорию:
| Право | Описание |
|---|---|
| Администратор задач | Менять любые параметры, удалять задачи/комментарии, принудительные переходы, редактировать пространства. Рекомендуется назначать владельцу бизнес-процесса, для которого создана категория |
| Администратор категории | Настройка категории, включая создание дополнительных параметров и их настройку в своей категории; недоступны удаление категории и изменение маршрута. Смарт-поиск, табличный вид. Создание параметра доступно и из карточки задачи этой категории — правый клик по полю → «Создать ДП» |
| Добавлять и менять акцептантов | Делегирование подписей, добавление акцептантов |
| Запретить экспортировать в Excel | Блокировка выгрузки |
| Исполнять | Работа с задачами, переходы по маршруту |
| Менять заказчика | Смена заказчика задачи |
| Редактировать исполнителей | Назначение/удаление исполнителей, трудозатраты за других |
| Пакетная обработка | Массовые действия над задачами |
| Переносить срок | Смена срока (при включённом ограничении в настройках) |
| Просмотр всех задач | Просмотр и комментирование всех задач |
| Просмотр зашифрованных задач | Доступ к тексту/ДП зашифрованных задач |
| Создавать задачи | Создание задач (пользователь = заказчик) |
Взаимодействие «Редактировать исполнителей» × «Ограничить удаление»¶
Совместное действие двух настроек:
| Редактировать исполнителей | Ограничить удаление | Результат |
|---|---|---|
| + | + | Можно удалить себя, можно добавлять |
| + | − | Можно добавлять и удалять любых |
| − | − | Только чтение |
| − | + | Только чтение |
SQL view доступа на просмотр¶
v2.265 Цефей+. View/таблица возвращает (TaskID, UserID). Имя хранится в dbo.Subcategories.TSQLAccessFunction. ⚠️ WITH (NOLOCK) обязательно. Права категории > SQL view.
Наследование руководителями¶
Право «Просмотр всех задач» может наследоваться руководителями двумя способами:
- CustomSetting
ForbidSubcatRightsInheritanceToDirector— наследование права «Просмотр всех задач» по группам - Общая настройка «Руководитель наследует право на просмотр задач» — по роли в задаче
Заместители¶
Получают все права замещаемого, кроме просмотра конфиденциальных задач и просмотра зашифрованных задач.
18. Настройки раздела (Category)¶
Раздел = папка для группировки категорий (
dbo.Categories).
Где настраивается:
- UI: режим администрирования → раздел
- API: разделы
Параметры раздела¶
Доступные параметры раздела:
| Параметр | Описание |
|---|---|
| Родительский раздел | Иерархия разделов |
| Стандартное представление | вид по умолчанию для всех категорий раздела (Лента, Таблица, Календарь, Канбан, Галерея, Иерархия, Диск, Проекты, Соц. сети и др.) |
| Дополнительный синдикат | Подключение портала к разделу |
| Модуль | Привязка к модулю. Новые категории наследуют модуль раздела |
Выбор родительского раздела осуществляется через выпадающий список в настройках раздела (вкладка «Основное»). Пункт списка показывает название раздела и его идентификатор в скобках — Название (ID); иерархия при этом не отображается, поэтому одноимённые разделы разных ветвей различаются только по идентификатору. Поиск по списку идёт по этой же строке, то есть и по названию, и по идентификатору. Текущий раздел в списке не предлагается.
Массовые действия с правами¶
Блок «Массовые действия» на вкладке «Основное» настроек раздела, кнопки «Права» и «Действия». Область применения — все категории раздела и всех вложенных подразделов; у самого раздела собственных прав нет, они выставляются на входящие в него категории.
Единственный способ массово настроить доступ при создании нового раздела:
- Кнопка «Права» → выбрать «Группа» + «Право» → Выдать (добавляет право всем вложенным категориям) или Отобрать (снимает). Подтверждения нет, изменение применяется сразу
- В списке «Право» доступны все стандартные права категории — тот же набор, что и при настройке прав отдельной категории, отсортированный по названию. Право «Просмотр зашифрованных задач» доступно только при наличии лицензии: без неё оно недоступно для выдачи, и попытка выдать его отклоняется
- Отобрать все права у всех групп — полный сброс, выполняется после подтверждения
Весь блок доступен только администратору с полными правами: методы админ-API, которые вызывают обе кнопки, отдают отказ доступа всем остальным, включая администратора категории. При выдаче и снятии права каждая категория раздела дополнительно проверяется на право «Администратор категории» — категории без него пропускаются без сообщения об ошибке, остальные обрабатываются; администратору с полными правами доступны все категории, поэтому пропусков не возникает. Итог пишется в журнал администрирования только при реальном изменении: хотя бы одно право выдано там, где его ещё не было, либо хотя бы одна запись права удалена. Если менять было нечего — право у групп уже стояло, а снимать оказалось нечего, — в журнал не попадает ничего. При реальном изменении на каждую затронутую группу пишется одна запись с перечнем выданных и снятых прав, списком обработанных категорий и списком пропущенных; условие проверяется на весь запрос целиком, поэтому запись появляется и по тем группам, у которых ничего не изменилось. В списке обработанных перечислены все категории раздела, доступные администратору по праву «Администратор категории», — в том числе те, где право у группы уже было или снимать было нечего; фактически изменённые категории журнал не выделяет.
Полный сброс прав. Кнопка «Отобрать все права у всех групп» журналируется не так, как выдача и снятие одного права: запись делается по каждой категории, где состав прав реально изменился, — и в текущем разделе, и во всех вложенных подразделах. Число записей по одной операции равно числу затронутых категорий во всём поддереве разделов, а не числу групп; у каждой записи указан выполнивший операцию. Категории, где снимать было нечего, записей не оставляют.
Кнопка «Действия» — массовое назначение персональных действий по всем категориям раздела: «Добавлять в исполнители», «Автоматическое подписание на комментарии», уведомления о поступлении новой задачи, о смене срока и об отклонении. Выбирается один пользователь или группа, кнопки «Выдать» и «Отобрать»; подтверждения нет. Сбой на отдельной категории обработку не прерывает — такие категории перечисляются в одном итоговом сообщении об ошибке.
Быстрые действия¶
Быстрые действия с разделом:
- Быстрое создание категорий в разделе
- Копировать в новый раздел (с вложенными категориями)
- Переименовать (контекстное меню)
19. Счётчики задач¶
Где настраивается:
- UI: настройки категории → Инструменты → Счётчики
| Настройка | Описание |
|---|---|
| Показывать количество новых задач | Синий индикатор в дереве (начальный статус). Кроме Справочников |
| Показывать количество просроченных | Красный индикатор в дереве + в Панели навигации (где пользователь = исполнитель) |
| Показывать количество всех задач | Серый индикатор в дереве. Кроме Справочников |
| Показывать количество в заголовках | Над списком задач — количество с учётом фильтров |
| Количество просмотров | Только для Новостей — счётчик просмотров новости |
Счётчики в дереве считаются не для всех типов категорий: пересчёт агрегированных счётчиков категории идёт по задачам категорий типа «Задачи» и «Новости». У категорий других типов включённые настройки счётчиков ни на что не влияют — индикаторы в дереве остаются пустыми.
20. Названия интерфейса¶
Названия элементов интерфейса настраиваются в AdminSPA на двух отдельных страницах с общим заголовком «Названия элементов интерфейса». Первая — administration/subcat-element-names/{subcatId}: название категории, название сущности и текст кнопки постановки. Вторая — administration/subcat-element-names-additional/{subcatId}: названия срока выполнения, даты начала работы и заказчика, текст назначения исполнителя при постановке, ссылка на текст родительской задачи, сообщение о создании задачи, тексты комментариев при добавлении одного и нескольких подписчиков, шаблон для текста напоминания. На каждую страницу ведут два пути: пункт «Основные настройки» или «Дополнительные настройки» в блоке «Настройки категории» и чип «Основные названия интерфейса» или «Прочие названия интерфейса» в блоке «Основные настройки» — пункт и чип открывают одну и ту же страницу. Изменения записываются кнопкой «Сохранить». У названия категории, названия сущности, текста кнопки постановки и названий срока выполнения, даты начала работы и заказчика рядом с полем есть кнопка локализации (иконка глобуса) — она открывает окно перевода на языки площадки.
Основные названия¶
Основные интерфейсные названия категории:
| Настройка | Описание | По умолчанию |
|---|---|---|
| Подсказка (тултип) | Всплывающая подсказка при наведении на категорию в дереве | — |
| Название сущности | Вместо «Задача» — «Документ», «Поручение» и т.д. | Задача |
| Текст кнопки постановки | Текст кнопки на НТФ | Поставить задачу |
| Название категории | Имя категории; при его изменении пересчитывается путь категории — см. ниже | — |
Название категории и путь. Название входит в путь категории — строку из названия раздела и названия самой категории. Путь показывается там, где выводится принадлежность задачи к категории: в колонке пути в списках задач, в письмах со ссылкой на задачу, в списках прав на категории. При сохранении страницы путь пересчитывается, только если название действительно изменилось; остальные названия на этой странице на путь не влияют. Пустое название даёт путь раздела без завершающего разделителя, и правило одинаково во всех случаях, когда путь собирается заново: при создании категории, при переименовании её раздела, при переносе категории в другой раздел и при синхронизации модуля с этой категорией. У категорий с заполненным названием вид пути не меняется. Переименование раздела пересобирает пути не только его категорий, но и категорий всех вложенных разделов. Отдельной операции «пересчитать все пути» нет: путь обновляется по перечисленным событиям, поэтому путь, сохранённый раньше с разделителем на конце, поправится при ближайшем из них. Название сущности в текстах интерфейса. Заданное «Название сущности» уходит клиенту в метаданных категории и подставляется вместо слова «Задача» — в частности, в уведомление об отсутствии доступа к задаче. Для русского интерфейса платформа дополнительно отдаёт название в дательном падеже. Дательная форма формируется только для однословных названий («Кейс» — «Кейсу», «Контакт» — «Контакту»); если название состоит из двух и более слов («Элемент справочника», «Задача на тестирование»), дательная форма не отдаётся вовсе и показывается обычный текст. Отсюда практический вывод: чтобы фраза вида «нет доступа к …» была грамматически верной, задавайте название сущности одним словом.
Прочие названия¶
Прочие настраиваемые названия и тексты:
| Настройка | Описание | По умолчанию |
|---|---|---|
| Название срока выполнения | Срок | |
| Название даты начала работы | Начало работы | |
| Текст назначения исполнителя | Системное сообщение при назначении | — |
| Ссылка на текст родительской | Заголовок текста родителя в подзадаче | — |
| Наименование исполнителя | Подпись роли в карточке. Это же наименование подставляется в сообщения о запретах при назначении и снятии исполнителей и при проверках действий с задачей | Исполнитель |
| Наименование заказчика | Подпись роли в карточке. Это же наименование подставляется в сообщение о запрете смены заказчика и в системный комментарий ленты о смене заказчика. Для Новостей → автоматически «Автор» | Заказчик |
| Сообщение о создании | Поступила новая задача | |
| Текст при добавлении подписчика (один) | Добавлен подписчик | |
| Текст при добавлении подписчиков (несколько) | Добавлены подписчики | |
| Шаблон напоминания | Текст напоминания, поддерживает вставки автогенерации | — |
Приоритет наименования роли. Имя роли берётся сначала из локализации категории (перевод для языка пользователя), затем из настройки «Наименование заказчика» или «Наименование исполнителя»; если не задано ни то, ни другое — подставляется стандартное «Заказчик» или «Исполнитель». Пустое значение и строка из пробелов переопределением не считаются. Правило одинаково для обеих ролей и действует всюду, где роль упоминается: в системных сообщениях, записях журнала и подписях интерфейса. Переопределённое имя выводится в кавычках, со стандартным именем текст остаётся прежним.
Роль в текстах карточки и формы создания задачи. Переименованная роль подставляется и в тексты интерфейса: подсказки в пустых полях заказчика и исполнителей на форме создания задачи, в том числе в мобильной версии, надпись о том, что пользователь в роли ещё не назначен, и подтверждения удаления исполнителя, добавления пользователей в роль и исключения пользователя из блока ресурсов. Как и в комментариях ленты, текст строится по отдельной формулировке с названием роли в кавычках — например, «Вы действительно хотите удалить пользователя в роли «Мастер»?». Такие формулировки заведены для русского и английского языков; на остальных языках, а также для непереименованной роли выводится стандартный текст. Название роли показывается как есть, разметка в нём не обрабатывается.
Роль в диалоге исполнителей на канбане. Диалог изменения исполнителей, открытый из контекстного меню карточки на канбане, тоже использует переименованную роль исполнителя: в заголовке окна, в надписи о том, что исполнитель ещё не назначен, и в подтверждении удаления исполнителя. Если наименование пустое или состоит из пробелов, выводятся стандартные тексты.
Роль в служебных комментариях ленты. Переименование доходит до шести событий: добавление пользователей в роль, смена ответственного, смена заказчика, снятие роли, внесение трудозатрат и изменение индивидуального плана. Подставляется не отдельное слово — комментарий строится по другой формулировке, с названием роли в кавычках. Такие формулировки заведены только для русского и английского интерфейса, а для трудозатрат — только для русского; на остальных языках комментарий остаётся стандартным. Переименованием не считается и значение, совпадающее со стандартным названием роли на любом языке системы: «Performer» или «Task owner» в полях наименования роли оставят комментарий в обычном виде.
21. Иерархический вид¶
Два метода настройки иерархии:
- По ДП Lookup: создать ДП Lookup (источник = сама категория) + ДП Галочка. В настройках иерархии указать «Лукап родителя» и «Чекбокс папки»
- По дереву подзадач: создать настройку без выбора ДП — иерархия соответствует дереву подзадач
Доп. параметры в гриде — список ДП для отображения в иерархическом представлении.
22. Новостные категории¶
Доступно при типе категории «Новости».
| Настройка | Описание |
|---|---|
| Наличие обложки | Обязательная при включении. Пропорция 2:3 |
| Отображать автора | Автоподстановка «Автор» в «Наименование заказчика» |
| Теги | Обязательные при включении. ДП «Новости - Теги» |
| Рубрика | Обязательная при включении. ДП «Новости - Рубрика» |
| Аннотация | Max 150 символов. ДП «Новости - Аннотация» |
По умолчанию все настройки включены.
23. Рекомендуемые категории¶
Список категорий, рекомендуемых для создания подзадач/связанных задач. Отображается перед полным списком. В проектном управлении — первая категория из списка становится целевой для новой подзадачи.
24. Подзадачи¶
Настройки поведения подзадач в категории:
| Настройка | Описание |
|---|---|
| Ставить только подзадачи | Задачи создаются только как дочерние |
| Отклонять дочерние при отклонении родительской | Каскадное отклонение |
| Для завершения требуется завершить подзадачи | Блокировка завершения |
| Фиксировать смену статусов дочерних | Сообщение в родительскую при смене статуса |
| Срок зависит от дочерних/родительских | Дочерняя не позже родительской |
| Копировать подписчиков в подзадачи | Автокопирование подписчиков |
25. Повторения задач¶
Настройки материализации повторяющихся задач.
| Параметр | Описание |
|---|---|
| Включить материализацию повторений | Создание цепочек задач. Опорная дата = дата начала работы. При перематериализации: будущие задачи корректируются, прошлые — нет |
| Отображать в задаче (Смарт) | 1 = показать блок повторений, 0 = скрыть |
| Дата начала / Дата окончания (Смарт) | даты по умолчанию повторения |
| Право редактировать повторение (Смарт) | 1 = можно менять настройки, 0 = нельзя |
| Порядок повторений | Порядок блока относительно ДП |
| Стилизация календаря (Смарт) | Набор данных: datetime2, color, title |
| Срок (Смарт) | срок по умолчанию для каждого экземпляра |
| Скрыть выбор даты окончания серии | Убрать элемент выбора окончания («Никогда» / дата / после N повторений). Действует в карточке задачи; на форме создания задачи выбор окончания серии доступен всегда |
| Скрыть выбор срока | Убрать выбор типа срока задач серии («В тот же день» / «Относительный» / «Ко времени»); срок тогда рассчитывается как «В тот же день». Действует в карточке задачи; на форме создания задачи выбор типа срока доступен всегда |
Материализация при переносе с нерабочих дней (с 2.268.332). Если в правиле повторения используется перенос с нерабочего дня (настройка «При попадании на нерабочий день» = «Перенести на ближайший рабочий день»), материализация включается принудительно, независимо от значения параметра «Включить материализацию повторений» в категории. Механизм переноса реализован только в материализованной ветке исполнения, бэк-валидация ValidateRecurrences отклоняет такие расписания при отключённой материализации. В остальных случаях, когда фронт не передаёт isMaterializationEnabled, бэк подставляет значение из настройки категории (Subcategories.IsRecurrenceMaterializationEnabled). Глубина материализации задаётся пользовательской настройкой RecurrenceTasksMaterializationDays (по умолчанию 365 дней).
Доступность переноса в интерфейсе. Если настройка «Включить материализацию повторений» отключена, для новых правил повторения чекбокс «Переносить на рабочий день» не отображается. Повторение сохраняется без переноса и не включает материализацию. Исключение — правило, в котором перенос был сохранён ранее: чекбокс остаётся доступным, чтобы существующая настройка не потерялась. Пока для такого правила выбран перенос, материализация включается принудительно.
26. Форма создания задачи (НТФ)¶
Настройки карточки создания новой задачи.
| Параметр | Описание |
|---|---|
| Не использовать форму создания | Мгновенное создание без НТФ. Недоступно если: есть обязательные ДП, текст обязателен без default, срок обязателен без default, исполнитель обязателен |
| Разрешить назначать приоритет | Выбор приоритета на форме создания задачи и его установка у уже созданной задачи: кнопка «Приоритет» в тулбаре карточки, контекстные меню в списках и лентах, мобильное приложение. При выключенной настройке приоритет показывается, но не меняется; запрос на его смену сервер отклоняет. Клиентские места перечислены в Работа с задачами › Приоритет |
| Разрешить добавление подписчиков | Поле «Подписчики» на НТФ |
| Разрешить указывать получателей уведомлений | Поле «Уведомить» на НТФ |
| Разрешить устанавливать повторения | Кнопка «Параметры времени» на НТФ |
| Разрешить устанавливать напоминания | Кнопка «Напоминания» на НТФ |
| Разрешено устанавливать дату начала | Поле «Начало работы» на НТФ |
| Заполнять дату начала текущим временем | Автозаполнение при создании |
| Отображать кнопку «Закрепить как чат» | Пункт в карточке и меню «Участники» |
| Лимит вложений | Суммарный размер файлов (байты). Автоформатирование: байты → КБ → МБ → ГБ |
| Количество колонок доп.параметров (НТФ) | По умолчанию = 3. Влияет на «Количество занимаемых колонок» ДП |
Совместимость с режимом «Не использовать форму создания». Когда форма создания отключена, настройки, требующие ввода при постановке задачи, сохранить нельзя: проверка выполняется до записи и на старой странице настроек категории, и на страницах AdminSPA «Участники» и «Текст».
| Страница настроек | Сочетание, которое отклоняется |
|---|---|
| Участники | Режим исполнителей «обязателен» (PerformerMode = Must) |
| Текст | Любой режим текста, кроме «Текст может быть пустым» (SubcatTextMode = Free), при пустом DefaultText |
Ограничение по тексту действует и для режимов «Запретить вносить текст задачи» и «Заблокировать изменение текста задачи»: непустой текст по умолчанию нужен для всех режимов, кроме «Текст может быть пустым». Сообщение об отказе называет свойство «Не использовать форму создания задачи» и требование — назначение исполнителя не должно быть обязательным либо текст задачи должен быть необязательным или задан по умолчанию. Запрос отклоняется целиком, остальные поля страницы не сохраняются. Чтобы сохранить такие значения, сначала снимите флаг «Не использовать форму создания» или задайте параметры, не требующие ввода на форме. На выполнение уже созданных задач ограничение не влияет.
27. Прочие настройки¶
Прочие настройки категории:
| Параметр | Описание |
|---|---|
| Тип поиска | Вхождение / Полнотекстовый / Полное совпадение / Обрамлять справа / Обрамлять слева |
| Искать в ДП по умолчанию | режим по умолчанию поиска «в полях» |
| Ограничить просмотр истории | Нет / Согласно доступам на редактирование / Смарт-выражение |
| Частота обновления грида (сек) | Автообновление списка. Не чаще 30 сек |
| Напоминание за N дней | Автосоздание напоминания подписчикам |
| Использовать триграмм | Нечёткий поиск с учётом опечаток. Минимум 3 символа. SP OnChangeSubcatUseTrigramSearchF (MS SQL only) |
| Напоминание 25%/50%/75%/в день окончания | Процентные напоминания |
| Скрыть быстрое создание в ДП | Блокировка быстрой постановки в Lookup/Multilookup |
| Скрыть кнопку создания | Блокировка создания во всех представлениях |
CustomSettings для триграмм:
Поиск при выключенном триграмме. Снятая галка не отключает поиск в таблице: текст ищется по денормализованной таблице категории, по колонке с текстом задачи, с приведением «ё» к «е» и экранированием служебных символов. Триграммы такой категории не строятся и удаляются при снятии галки, поэтому нечёткий поиск с учётом опечаток не работает — совпадение идёт по подстроке. Ограничение в три символа относится к триграммному поиску; в интерфейсе запрос пока отправляется начиная с трёх символов независимо от настройки.
UseTrigramInSimpleSearch— нечёткий поиск в быстром поискеFilterChain.MaxTrigramCountForTrigramSearch— max триграмм (по умолчанию: 100000)FilterChain.MinSubcatSizeForTrigramSearch— min размер категории (по умолчанию: 100000)
28. Представления категории¶
Включение/отключение представлений и выбор представления по умолчанию.
⚠️ Между доменами: масштабы Ресурсов (7 масштабов) и Календаря (6 масштабов) + флаг «Отображать в терминальном статусе» настраиваются в календаре. Здесь — только включение/отключение и выбор представления по умолчанию.
| Параметр | Описание |
|---|---|
| Включение представлений | Активация переключателей для каждого типа (Таблица, Лента, Канбан, Календарь и т.д.) |
| Представление по умолчанию | Кнопка ★ на блоке. Вступает в силу после перезагрузки страницы |
| Закреплять по умолчанию как чат | Задачи автоматически приравниваются к чатам |
Для блока «Таблица» — переход к настройкам табличного вида (см. ниже).
Настройки табличного вида категории¶
Доступны через блок «Таблица» представлений категории. Настройки определяют дефолтный вид списка задач для всех пользователей.
Изменения вступают в силу после сброса пользователем настроек на вид по умолчанию.
Общие настройки¶
Общие настройки табличного вида:
| Параметр | Описание |
|---|---|
| Отбор по умолчанию | Преднастроенный отбор категории, применяемый при открытии списка |
| Тип статуса | Все / Активные / Завершённые / Отклонённые. С 2.268.363 значение «Все» применяется корректно при открытии грида — раньше оно автоматически подменялось дефолтным «Активные». С 2.268.366 (#2097422, ч.2) также корректно сохраняется ручной выбор «Все» в пользовательских настройках грида (раньше null терялся при сериализации). См. ../grids/business.md § «Системные отборы по статусу» |
| Группировать по | Одно или несколько полей для дефолтной группировки |
| Группировать одной строкой | Склеивает группу в одну строку (по умолчанию вкл) |
| Позиция закрепления | Слева / Справа — для столбцов с активной опцией «Закрепить столбец» |
| Скрыть невидимые поля | Скрывает поля без видимости по умолчанию |
Кнопки: «Открыть предпросмотр» (проверка изменений до сохранения), «Сбросить на рекомендуемые» (Выравнивание/Ширина/Тип фильтра в дефолт), «Сбросить» (откат изменений и колонок с «Видимостью по умолчанию» до предыдущего сохранения для всех), «Сбросить порядок как в задаче» (выстраивает колонки в том порядке, в каком поля расположены в карточке задачи: сначала системные поля, затем дополнительные параметры по порядку следования — шапка, далее блоки слева направо и сверху вниз, каждый параметр по первому появлению). После сброса порядок колонок можно менять вручную.
Колонки табличного вида¶
В списке столбцов на экране настройки табличного вида (и для категории, и для ресурсов) идентификатор и тип дополнительного параметра выведены отдельными колонками, рядом с именем. Это упрощает поиск нужного столбца, когда в категории есть одноимённые или похожие поля.
Прямо в шапке этой таблицы есть постоянные фильтры: поля «Код» и «Имя» отбирают строки по подстроке системного кода поля и по подстроке названия колонки, регистр не учитывается — например, «1678» оставит строку с кодом ExtParam1678, а «дата» — колонки, в названии которых есть это слово. Рядом с полями — кнопка со значком глаза («Скрыть невидимые поля»): она оставляет только поля с включённой видимостью по умолчанию, повторное нажатие снимает отбор. Отбор идёт в браузере по мере ввода, без запроса к серверу; порядок колонок от него не сбрасывается, а перетаскивать строки можно и по отфильтрованному списку. Фильтры есть на экранах настройки колонок категории и ресурсов; на других экранах с этой же таблицей шапка не менялась.
Перетаскивание при активном фильтре. Перенос видимой строки меняет положение колонок в общем порядке: скрытые строки сохраняются, а их взаимный порядок не нарушается. После сохранения и повторного открытия экрана порядок колонок совпадает с тем, что был виден при перетаскивании, а после очистки фильтра все строки показываются в этом же согласованном порядке. На экранах, где фильтров в шапке нет, перетаскивание работает как прежде.
Дополнительные настройки таблицы¶
«Больше настроек»:
| Параметр | По умолчанию | Поведение |
|---|---|---|
| Можно менять ширину столбцов | Вкл | Перетаскивание угла столбца. Установленная ширина сохраняется индивидуально для каждого пользователя |
| Можно менять порядок столбцов | Вкл | Перемещение заголовка мышью. Сохраняется индивидуально для каждого пользователя |
| Сохранять пользовательские настройки | Вкл | При повторном входе таблица открывается с пользовательскими настройками. При экспорте в Excel учитывается тоже: вкл = пользовательские, выкл = дефолт |
| Можно включать фильтры | Вкл | Кнопка фильтрации + пункт «Фильтровать по значению» в контекстном меню. Панель по умолчанию раскрыта |
| Можно включать группировку | Вкл | Кнопка группировки + пункт «Группировать» в контекстном меню. Если группировка задана — раскрыта; иначе свёрнута |
| Можно включать доп. поле столбца | Выкл | Кнопка «Показать меню» в панели; иначе — в меню действий |
| Переносить заголовки по строкам | Вкл | Полные заголовки с переносом; иначе обрезаются многоточием |
С версии 2.268 быстрая фильтрация по аватарке исполнителя включена по умолчанию (доп. настройки не требуются).
Доступ по группам к колонкам¶
При настройке доступа по группам к колонкам виртуальные группы (например, «Подписчики задач (всем)») не применяются — нужно использовать обычные или связанные группы.
29. Блоки ДП и группы блоков¶
Настройки блоков ДП и групп блоков (список, создание и редактирование блока, цвет, смарт-фильтры, группы) — в ext-params/admin.md → «Блоки ДП и группы блоков». Здесь — связь с БИ.
Связь БИ-таблицы с блоком ДП¶
Одна таблица БИ (вид «Таблица») может быть встроена в блок ДП. Порядок блоков ДП и БИ — общий (блок с порядком 1 выше блока с порядком 2). Привязка хранится в ExtParamsInSubcatToBlocks.
Группы блоков ДП¶
Блоки объединяются в группы. Порядок внутри группы — по Порядок на форме. Группа связывается с категорией через страницу «Группы блоков ДП».
Смарт-фильтры блоков¶
Видимостью блоков можно управлять смарт-фильтрами:
| Фильтр | Контекст |
|---|---|
| Сворачивать по смарт-фильтру | МТФ: true = свёрнут |
| Скрывать по смарт-фильтру | МТФ: true = скрыт |
| Сворачивать при постановке | НТФ: true = свёрнут |
| Скрывать при постановке | НТФ: true = скрыт |
Контекстный параметр @eventParam1 (WhenOpenTask=64): 0=Undefined, 1=Spa, 2=Mobile, 3=Conference.
30. ДП на мобильном¶
Ключевые принципы настройки ДП с учётом мобильного приложения:
- ДП должны быть сгруппированы в тематические блоки
- Порядок — по ходу заполнения
- Видимость — по правам и логике процесса
- Обязательность — на каждом переходе хотя бы один ДП
- Не требовать много параметров при создании — использовать статус «Подготовка» с автопереходом
Наследование значений из задачи-источника¶
При создании из контекста (БИ, Lookup, Multilookup, подзадачи) — совпадающие ДП наследуют значения. Отключение — опция «Не копировать значения из задачи-источника» в настройках ДП.
31. Автосоздание подзадач на переходах¶
Настройка подзадач, создаваемых при переходе по маршруту.
Где настраивается:
- API: автоподзадачи на переходах
- См. также:
transition-settings-reference.md(поляStatesRoutesSubtask*)
Основные параметры подзадачи на переходе¶
Основные параметры автосоздаваемой подзадачи:
| Параметр | Описание |
|---|---|
| Текст задачи | С вставками $Ext{ID} из родительской задачи |
| Срок задачи | На основе поправки срока |
| Имя параметра | Условное создание: если ДП родителя = значение |
| От кого | От исполнителя / От заказчика / От нажавшего кнопку |
| Связанная задача | Не дочерняя, а связанная (отключает автопереход по завершении подзадач) |
| Копировать подписчиков | Из родительской |
| Переносить вложения | Все файлы из родителя |
| Каждому исполнителю — копию | Отдельная подзадача на каждого |
Исполнители подзадачи¶
Исполнители подзадачи определяются одним из способов:
- Исполнители из группы
- Назначить исполнителем заказчика родительской
- Назначать роль заказчика (по группе)
- Копировать исполнителей
Параметры подзадачи¶
Для каждого ДП — источник: Автоматически / Фиксированное значение / Из ДП родителя.
CustomSettings — глобальные ключи поведения категорий¶
Глобальные ключи CustomSettings, влияющие на поведение категорий:
| Ключ | Тип | Назначение |
|---|---|---|
ExtendedSubcatSettings |
JSON | Расширенные настройки категории (per-SubcatID): отключить вопросы (commentQuestionsAllow=false) и/или требование комментария при «Вопрос не мне» (commentNotMeAnswerRequired=false). Формат: {"$SUBCAT_ID":{"commentQuestionsAllow":bool,"commentNotMeAnswerRequired":bool}} |
FromUtpTableFirstOrderSubcats |
array | ID категорий, для которых в SQL-запросе списка задач предикат проверки прав ставится первым в FROM — оптимизация для крупных таблиц с дорогостоящими JOIN |
CalendarPopupMenuSubcats |
array | ID категорий, попадающих в контекстное меню календарных категорий для быстрой постановки задачи. Если ключ не задан — в меню стандартный набор (Событие в календаре, Задача в категории, все календарные категории) |
Последовательность действий при переходе по маршруту¶
При выполнении перехода система последовательно выполняет 38 шагов, в том числе:
- Проверка статуса подзадач (если требуется).
- Проверка прав пользователя.
- Проверка динамических подписей.
- Выполнение коннекторов и смартов «перед сменой статуса».
- Проверка плановых трудозатрат (если назначаются исполнители).
- Мультизавершение (если включено).
- Запрос подписей (задача переходит в «На подписи»).
- Выполнение перехода и запись в журнал.
- Генерация текста задачи (по шаблону), сброс срока.
- Комментарий о переходе, email-рассылка уведомлений.
- Постановка подзадач на переходе.
- Выполнение хранимых процедур.
- Смарты «После перехода» и «После изменения статуса».
- Обновление денормализации.
Принудительная смена статуса (через редактирование поля «Статус») не выполняет переход по маршруту и пропускает все автоматизации. Доступна только пользователям с правами администратора категории.
Связи с другими доменами¶
Категория связана с другими доменами системы:
| Домен | Связь |
|---|---|
| Задачи | Категория — шаблон для создания задач; определяет маршрут, ДП, представления, права |
| Дополнительные параметры | Привязка ДП к категории с индивидуальными настройками (имя, обязательность, блок) |
| Подписи | Подписи на переходах маршрута; настройки отзыва и делегирования через подписи |
| Маршруты / Статусы | Маршрут жизненного цикла задач; автопереходы, альтернативные переходы |
| Смарт-логика | Смарты на переходах, смарт-доступ, смарт-выражения для исполнителей/подсказок |
| Комментарии | Настройки ленты сообщений на уровне категории |
| Пользователи и группы | Права доступа на категорию выдаются группам; роли определяют доступ к задачам |
| Уведомления | Оповещения при переходах, просрочках, изменениях |
| Почта | Настройки почтовых ящиков категории |
| Файлы | Настройки вложений, шаблоны файлов |
| Порталы | Раздел может отображаться как портал (дополнительный синдикат) |
| Проекты | Проектные задачи, рекомендуемые категории для подзадач |
| Календарь | Категории типа «Календарь» отображаются в календарях пользователей |
| Чат | Категории типа «Чаты/каналы» для мессенджера |
| Отчеты | Рекомендуемый срок, исключение из отчетов о просрочке |
| Интеграции | Синхронизация с 1С, коннекторы, хранимые процедуры |
Связанные документы¶
См. также:
- Справочник переходов ЖЦ — полный справочник полей переходов жизненного цикла (
StatesRoutesInSubcat) - Типы категорий и бизнес-правила
- Настройка ДП — общие настройки ДП, типы, блоки ДП
- Форма задачи — формы задач (НТФ/МТФ)
- Права доступа — матрица прав на категорию (12 прав)
- Смарт-действия — пакеты действий до/после переходов
- Календарь — масштабы Календаря и Ресурсов, терминальный статус