Skip to main content

Сервис DockindStructure

Сервис предназначен для управления структурой информационных объектов (DocKind) в системе. Он позволяет настраивать атрибуты типов документов: основные свойства, статусы, реквизиты, функции, действия, права доступа, а также переименовывать документы определённого типа.

Зависимости

  • QueriesHelper — выполнение SQL-запросов и вызов хранимых процедур.
  • OraLongTransactions — управление длительными транзакциями.
  • SysProcesses — запуск фоновых процессов бизнес-логики (используется для отложенного обновления имён документов).

События

  • onChanged — генерируется при любом изменении структуры информационного объекта. Полезно для сброса кэшей или оповещения других компонентов системы.

Запросы

Все запросы выполняются через HTTP POST (если в схеме указано "http": "POST"), либо доступны только внутренне (если "http": null). Почти все запросы требуют авторизации ("anonymous": false), административные методы отмечены флагом "needAdmin": true.

getInfo

Получить идентификатор и описание типа документа по его системному имени.

Параметры запроса:

Поле Тип Обязательное Описание
docKind string да Системное имя типа документа

Ответ:

Поле Тип Описание
id number Идентификатор типа (DOCKIND_ID)
description string Человекочитаемое описание

Ошибки:

  • ComplexError("Не найден тип документа ...") — если указанный тип не существует.

setMain

Обновить основные атрибуты типа документа: описание, родительскую папку. Переименование (изменение oldDocKind на newDocKind) запрещено.

Параметры запроса:

Поле Тип Обязательное Описание
oldDocKind string нет Текущее системное имя (должно совпадать с newDocKind, если указано)
newDocKind string да Новое системное имя (не может отличаться от oldDocKind)
description string нет Новое описание
parentId number нет ID родительской папки (категории)

Примечания:

  • Требует прав администратора (needAdmin: true).
  • Выполняется в рамках сессии (session передаётся из контекста).

getStatuses

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

Параметры запроса:

Поле Тип Обязательное Описание
docKind string условно Системное имя типа. Используется, если не передан docKindId.
docKindId number условно ID типа. Если указан, docKind игнорируется.
session object нет Сессия пользователя (автоматически подставляется при HTTP-вызове).

Ответ: Массив объектов со следующими полями:

Поле Тип Описание
EVENT_ID number Уникальный идентификатор статуса
EVENT_NAME string Системное имя статуса
EVENT_DESCR string Отображаемое описание
COLOR_NAME string Название цвета (может быть null)
COLOR_CODE string Код цвета в формате Delphi (например, $00D6FED6)

setStatuses

Изменить набор статусов типа документа: удалить, обновить существующие, добавить новые, установить порядок. Операция обёрнута в транзакцию.

Параметры запроса:

Поле Тип Обязательное Описание
docKind string условно Системное имя типа (если не указан docKindId).
docKindId number условно ID типа.
deleteIds array of number нет Список ID статусов, которые необходимо удалить.
statuses array нет Массив статусов для добавления/обновления. Каждый объект содержит:
· EVENT_ID (number, <0 для новых),
· EVENT_NAME (string),
· EVENT_DESCR (string),
· COLOR_NAME (string),
· COLOR_CODE (string).
newOrder array of number нет Новый порядок ID статусов (включая только что созданные).
session object нет Сессия пользователя.
trxId string нет Идентификатор внешней транзакции (для встраивания в более крупные операции).

Требования: needAdmin: true.


getProps

Получить все реквизиты (свойства) типа документа.

Параметры запроса:

Поле Тип Обязательное Описание
docKind string условно Системное имя типа.
docKindId number условно ID типа.
session object нет Сессия пользователя.

Ответ: массив объектов реквизитов (структура зависит от БД).


setProps

Массовое изменение реквизитов типа документа: удаление, создание/обновление, установка порядка. Внутри транзакции последовательно обрабатываются все переданные свойства.

Параметры запроса:

Поле Тип Обязательное Описание
docKind string да Системное имя типа.
props array нет Массив объектов свойств для вставки/обновления. Каждый объект должен содержать поля согласно PKG_KIND_PROPERTIES_CS.UPDATE_PROPERTY (см. описание отдельных полей в setProperty). Если у свойства указаны Statuses, они также обновляются.
deleteIds array of number нет ID реквизитов, подлежащих удалению.
statuses (Не используется в текущей реализации, оставлен для совместимости)
session object нет Сессия.
trxId string нет Внешняя транзакция.

Детали полей объекта свойства (property):

  • DOCPROP_KIND — тип реквизита (number).
  • DOCPROP_ID — ID реквизита (number, для существующих).
  • DOCPROP_FPATH, DOCPROP_PRESENTATION, DOCPROP_SQL, DOCPROP_OBJECT, DOCPROP_DESCR, DOCPROP_NAME, DOCPROP_SCRIPT, DEFAULT_VALUE, DOCPROP_PRESENTATION_OPTIONS — строковые атрибуты (CLOB).
  • DOCPROP_UNIQUE, DOCPROP_MULTI — булевы флаги (передаются как 1/0).
  • DOCPROP_RULE_CHILD, DOCPROP_RULE_PARENT, DOCPROP_REPEAT, DOCPROP_TREE_KIND, DOCPROP_RULE, DOCPROP_VALID, DOC_FORMAT — числовые поля.
  • RefLinks — опциональный массив объектов { DocKindId, XmlFilter }, перед отправкой сериализуется в JSON.
  • Statuses — массив объектов вида { eventId, required, visible, writable } для настройки доступности реквизита в разных статусах.

Требования: needAdmin: true.


getFunctions

Получить список функций (триггеров/обработчиков), привязанных к типу документа.

Параметры запроса:

Поле Тип Обязательное Описание
docKind string условно Системное имя типа.
docKindId number условно ID типа.
session object нет Сессия.
trxId string нет Транзакция.

Ответ: массив объектов функций. Каждый объект содержит:

  • DOCEVENTKIND_IDS, DOCPROP_IDS, DK_ACTION_IDS — массивы чисел, полученные парсингом строк с разделителем ,.
  • Прочие поля, возвращаемые БД.

Требования: needAdmin: true.


setFunctions

Обновить перечень функций типа документа. Предварительно для каждой функции вида schema.name создаётся заглушка в БД (если ещё не существует).

Параметры запроса:

Поле Тип Обязательное Описание
docKind string условно Системное имя типа.
docKindId number условно ID типа.
funcs array нет Массив объектов функций (формат определяется БД). Поле db_function обязательно должно иметь вид schema.function_name.
deleteIds array of number нет ID функций для удаления.
notValidateFuncs boolean нет Если true, пропустить проверку формата db_function.
session object нет Сессия.
trxId string нет Транзакция.

Требования: needAdmin: true.


setActions

Управление действиями (actions), доступными для типа документа. Поддерживает добавление, обновление, удаление и изменение порядка.

Параметры запроса:

Поле Тип Обязательное Описание
docKind string условно Системное имя типа.
docKindId number условно ID типа.
deleteIds array of number нет ID действий для удаления.
actions array нет Массив объектов действий. Каждый объект должен иметь поле changed (boolean). Если changed === true, объект будет передан в БД для вставки/обновления. Если false, используется только его id для сохранения порядка.
session object нет Сессия.
trxId string нет Транзакция.

Требования: needAdmin: true.


setNames

Запускает процесс обновления имён всех документов заданного типа (например, после изменения правил формирования наименования). Выполняется немедленное сохранение новых правил именования и создание фонового процесса через сервис SysProcesses.

Параметры запроса:

Поле Тип Обязательное Описание
docKind string условно Системное имя типа.
docKindId number условно ID типа.
names object да Новые правила формирования имён (структура определяется логикой БД).
session object нет Сессия.
trxId string нет Транзакция.

Требования: needAdmin: true.


updateDockindNames

Служебный метод, вызываемый фоновым процессом. Последовательно обновляет описания (DESCR) всех документов, принадлежащих указанному типу. Может выполняться долго, поэтому не должен вызываться напрямую из HTTP (хотя endpoint открыт).

Параметры запроса:

Поле Тип Обязательное Описание
dockindId number нет ID типа документа. Если не указан, будет ошибка.

Требования: needAdmin: true.


setPermissions

Управление правами ролей на тип документа: создание, доступ к статусам и реквизитам.

Параметры запроса:

Поле Тип Обязательное Описание
docKind string условно Системное имя типа.
docKindId number условно ID типа.
roles array нет Массив объектов прав ролей. Каждый объект: id (роль), creation (0/1), statuses (структура прав на статусы), properties (права на реквизиты).
deleteRoleIds array of number нет ID ролей, для которых нужно удалить все права на данный тип.
session object нет Сессия.
trxId string нет Транзакция.

Требования: needAdmin: true.


getIdByName

Получить числовой идентификатор типа документа по его системному имени.

Параметры запроса:

Поле Тип Обязательное Описание
docKind string да Системное имя типа.

Ответ: число (RESULT) — идентификатор.


getNameById

Получить системное имя типа документа по его ID.

Параметры запроса:

Поле Тип Обязательное Описание
docKindId number да ID типа.

Ответ: строка — системное имя.