Подписи — Администрирование¶
Обзор¶
Домен signatures охватывает настройку подписей (согласований), типов резолюций, привязку подписей к шагам маршрута и подключение ЭЦП (КриптоПро, DSS). Администрирование использует:
- Автоадминка (dbadmin) -- 5 форм (подписи, резолюции, группы подписей, КриптоПро, DSS)
- Кастомная форма AdminSPA -- выбор плагина ЭЦП (
/spa/administration/eds-plugin-settings, v2.268+) - Admin API -- 3 контроллера (управление подписями, привязка к шагам маршрута, настройка плагина ЭЦП)
Механизмы администрирования¶
Автоадминка (dbadmin)¶
| Alias формы | Название | Таблица БД | Полей | Секций | Папка |
|---|---|---|---|---|---|
signatures |
Подписи | dbo.Signatures | 3 | 1 | Категории и процессы |
signature-resolution-types |
Типы резолюций | dbo.SignatureResolutionTypes | 13 | 1 | Служебное |
equal-users-for-signature |
Подписи группы | dbo.EqualUsersForSignature | 6 | 1 | Служебное |
cryptopro-verification-centers |
КриптоПро | dbo.CryptoProCertificationCenters | 6 | 1 | Подключения |
dsscryptopro-service-settings |
Сервис DSSCryptoPro | dbo.DSSCryptoProCredentials | 14 | 1 | Подключения |
Кастомная форма AdminSPA¶
| Страница | Роут | Назначение |
|---|---|---|
| КриптоПро: Выбор плагина | /spa/administration/eds-plugin-settings |
Выбор плагина ЭЦП: CryptoPro / RuToken / DefineOnClient (v2.268+) |
Admin API контроллеры¶
| Контроллер | Маршрут | Методы | Назначение |
|---|---|---|---|
| SignaturesController | /api/admin/signatures |
GET, POST, DELETE | CRUD подписей, привязка резолюций |
| StepSignatureController | /api/admin/subcat/step/signatures |
GET, POST, DELETE | Подписи на шагах маршрута, SQL-маршруты |
| EdsPluginController | /api/admin/eds/plugin |
GET, PUT | Настройки плагина ЭЦП (глобально, по категории, по группе) |
Подробная спецификация эндпоинтов -- см. backend.md разделы 1.3--1.4.
Ключевые настройки¶
Подписи (Signatures)¶
Где настраивается: автоадминка -> форма signatures / Admin API -> SignaturesController
Таблица БД: dbo.Signatures
Подпись -- базовая сущность согласования. Форма содержит всего 3 поля (имя, описание, тип), основная настройка идёт через Admin API. В UI карточки задачи должностные и личные подписи запрашиваются на разных вкладках (см. business.md секция «Должностные и личные»).
| Эндпоинт | Назначение |
|---|---|
POST /api/admin/signatures |
Создание подписи |
GET /api/admin/signatures/{id} |
Карточка подписи |
GET /api/admin/signatures/{id}/resolutions |
Список привязанных резолюций |
POST .../resolutions/add |
Привязать резолюцию |
POST .../resolutions/remove |
Отвязать резолюцию |
GET .../subcategories |
Где используется подпись |
Типы резолюций (SignatureResolutionTypes)¶
Где настраивается: автоадминка -> форма signature-resolution-types
Таблица БД: dbo.SignatureResolutionTypes
13 полей, определяющих поведение каждого типа решения (Согласовано, Отклонено, На доработку и т.д.):
| Группа полей | Что контролирует |
|---|---|
| Имя, описание | Отображение в UI |
| Тип действия | Accept / Reject / Delegate / Escalate и т.д. |
| Цвет, иконка | Визуальное оформление |
| Требует комментарий | Обязательность текста при резолюции |
| Влияет на статус | Автоматический переход задачи при резолюции |
Эффект в runtime: проверяется SignatureResolutionConfigurationService при обработке резолюции в TaskSignaturesController.
Подписи на шагах маршрута (StepSignatures)¶
Где настраивается: Admin API -> StepSignatureController
Маршрут: /api/admin/subcat/step/signatures
Привязка подписей к переходам между статусами (шагам маршрута). Ключевые возможности:
| Эндпоинт | Назначение |
|---|---|
GET .../step/{stepId}/id/{stepSignatureId} |
Детальная настройка подписи на переходе |
POST /api/admin/subcat/step/signatures |
Добавление подписи на переход |
GET .../route-from-sql |
SQL-маршрут (динамическое определение акцептантов) |
POST .../route-from-sql |
Обновление SQL-маршрута |
POST .../step/{stepId}/add-owner-signature |
Быстрое добавление подписи заказчика |
Связь с categories: привязка подписей к маршрутам -- часть настройки категории, но управляется отдельным контроллером.
Справочник body-форматов¶
Создание шаблона подписи (POST /api/admin/signatures):
DTO: SignatureCreateRequestDto — всего 2 поля.
{ "name": "TM_Signature", "canBeDynamic": true }
Ответ: { "data": 2460 } — ID созданной подписи.
Обновление шаблона (POST /api/admin/signatures/{id}):
DTO: SignatureDto (полный DTO, аналогичный ответу GET). Ключевые поля:
{
"id": 2460,
"description": "TM_Signature",
"canBeDynamic": true,
"acceptorsEvalutionBaseUser": "Owner",
"acceptorsEvalutionMethod": "ByGroup",
"actionIfNotSigned": 0,
"signatureAcceptorsByGroups": [
{ "groupId": 2085, "aceptorUsers": [], "aceptorGroups": [] }
]
}
Ответ: 204 No Content.
Привязка подписи к шагу маршрута (POST /api/admin/subcat/step/signatures):
DTO: StepSignaturePayloadDto — 30+ полей. Минимальный рабочий body:
{
"StepId": 216570,
"SignatureId": 2460,
"IsNecessary": true,
"SignatureOrder": 1,
"Enabled": true,
"AcceptorsEvalutionBaseUser": 0,
"Description": "",
"IsSignRestriction": false,
"IsSignInfo": false,
"IsOwnerSignature": false,
"IsEds": false,
"StepsIfNotSigned": [],
"StepSignExtParamsIdForRestriction": [],
"StepSignExtParamsIdForInfo": [],
"StepSignatureConditions": [],
"EdsSignSettings": []
}
Ответ: 200 OK с полным StepSignatureDto (+ поле id — stepSignatureId).
Gotchas:
- StepId — это PK из таблицы StatesRoutesInSubcat (не StateID!). Поиск: SELECT StepID, StateID, StateNextID, StepDescr FROM StatesRoutesInSubcat WHERE SubcatID = X
- AcceptorsEvalutionBaseUser — число (0=Owner, 1=Performer, 2=ResponsiblePerformer, 3=Requester, 4=SmartExpression), не строка
- SignatureOrder — этап согласования (1-based). Несколько подписей на одном шаге с разными order = последовательное согласование
- IsNecessary: true — подпись обязательна (блокирует переход до получения)
- Массивы StepsIfNotSigned, StepSignExtParamsIdForRestriction и т.д. можно передавать пустыми []
- С 2.267: вместо плоского массива StepSignExtParamsIdForRestriction используется stepExtParamRestrictions: [{ extParamId, isRequiredForSign, isReadOnlyOnSign }]. Два независимых флага:
- IsRequiredForSign (default = 1) — ДП обязателен к заполнению перед акцептом подписи (старое поведение, сохранено для всех существующих записей).
- IsReadOnlyOnSign (default = 0) — ДП блокируется (становится readonly) на время, пока на шаге активна подпись.
- Флаги независимы: один ДП может быть одновременно обязательным к заполнению и блокируемым при подписи (сценарий «заполнить → отправить на подпись → заморозить»). Хранение: колонки IsRequiredForSign и IsReadOnlyOnSign в таблице dbo.StepSignExtParamRestrictions.
- Идемпотентность: API не проверяет дубли — при повторном POST создаст дублирующую привязку. Проверяйте через GET ?stepId=X
Runtime: IsWaitingSign и параллельные подписи (v2.268.104)¶
Флаг IsWaitingSign на задаче определяет, ожидает ли задача подписи. Логика сброса при выполнении шага:
- До 2.268.104:
IsWaitingSign = falseпри завершении любого шага подписи — даже если на других шагах оставались активные подписи. Это приводило к некорректному состоянию задачи. - С 2.268.104:
IsWaitingSignсбрасывается только если нет активных подписей на других шагах. Проверка:hasActiveSignaturesExceptStepвTaskActionService.ExecuteStepAction().
Сценарий: задача на маршруте с параллельными подписями (несколько StepSignature с разными SignatureOrder или на разных шагах). При завершении одной подписи остальные продолжают удерживать задачу в состоянии «ожидание подписи».
Подписи группы (EqualUsersForSignature)¶
Где настраивается: автоадминка -> форма equal-users-for-signature
Таблица БД: dbo.EqualUsersForSignature
Определяет, какие пользователи из группы могут подписывать за друг друга (взаимозаменяемость подписантов). 6 полей: SignatureId, GroupId, UserId, настройки доступа.
КриптоПро (CryptoProCertificationCenters)¶
Где настраивается: автоадминка -> форма cryptopro-verification-centers
Таблица БД: dbo.CryptoProCertificationCenters
Подключение к удостоверяющим центрам КриптоПро для электронной подписи. 6 полей: URL, сертификат, настройки подключения.
DSS КриптоПро (DSSCryptoProCredentials)¶
Где настраивается: автоадминка -> форма dsscryptopro-service-settings
Таблица БД: dbo.DSSCryptoProCredentials
Подключение к сервису облачной ЭЦП КриптоПро DSS. 14 полей:
| Параметр | Описание |
|---|---|
| Сервис | Предварительно созданный сервис с типом DSSCryptoPro (страница Сервисы) |
| SignServer | Сервер подписания |
| StsAppName | Сервер регистрации |
| Host | Стенд |
| Auth with password | Тип аутентификации: One-factor authentication with password (логин + пароль) или Two-factor authentication with MyDSS (логин + код на привязанный телефон). При 2FA при смене устройства требуется перевыпуск. |
| ClientId | ID клиента |
| ClientSecret | Секретный код клиента |
| Waiting sign time | Максимальное время ожидания подтверждения подписи с телефона при двухфакторной аутентификации, секунды. При превышении транзакция прерывается. |
Порядок подключения (4 шага): установить и настроить DSSCryptoPro по документации производителя → создать сервис в 1Форме → заполнить параметры подключения → указать сервис в настройках подписи на переходе.
PayControl¶
Owner: ../integrations/admin.md — параметры сервиса (system_id, Server Signer API, ДП пользователя) описаны там.
Здесь — только то, что не покрыто интеграциями: перерегистрация при утере телефона. Перевыпуск сертификата по истечении срока, утеря смартфона или переустановка приложения 1F Mobile — через API PayControl (обновление ключа server_signer: true на сервере PayControl вручную).
Подробнее — раздел PayControl в integrations/admin.md.
Контур.Облако (УКЭП без локального токена)¶
Owner: ../integrations/admin.md — подключение и параметры описаны там.
Позволяет подписывать документы УКЭП или НЭП без локального носителя; подтверждение — SMS-кодом.
Подробнее — раздел Контур.Облако в integrations/admin.md.
Настройка рабочего места пользователя для ЭЦП¶
КриптоПро (токен КриптоПро):
- Плагин КриптоПро — установить и включить в браузере
- КриптоПро CSP — криптопровайдер
- Корневой сертификат УЦ, выдавшего ЭП — установить в доверенные корневые центры сертификации
РуТокен:
- Плагин РуТокен — установить и включить в браузере
- Корневой сертификат УЦ, выдавшего ЭП
Выбор на клиенте: если выбран плагин «Определять на клиенте» — в момент подписания у пользователя запрашивается, какой плагин использовать. Требуется установка обоих плагинов.
Источник: admin.md (порядок настройки), admin.md
JS API КриптоПро и смарт-автоматизация для сертификатов¶
УЦ КриптоПро управляет сертификатами (выдача, проверка, отзыв, приостановка, возобновление). Серверные действия автоматизируются смарт-действиями, клиентские (считывание токена) — JS API.
Смарт-действия (CryptoPro CA)¶
| Смарт-действие | Назначение | Ключевые параметры |
|---|---|---|
| Issue certificate | Выпуск сертификата | ID CA, ID ДП с GUID пользователя в УЦ, ID ДП со строкой запроса, ID ДП с Request ID, ID ДП для записи сертификата |
| New or update user | Привязка сертификата к пользователю 1Формы | ID CA, ID ДП с XML данными пользователя, Task number |
| Pause certificate | Приостановка сертификата | ID CA, ID ДП с сертификатом (base64), дата начала/конца, причина |
| Resume certificate | Возобновление сертификата | ID CA, ID ДП с сертификатом |
| Revoke certificate | Отзыв сертификата | ID CA, ID ДП с сертификатом, дата отзыва, причина |
| Get Thumbprint | Получение отпечатка подписи | ID ДП с сертификатом, ID ДП для записи отпечатка |
JS API (выполняется на клиенте)¶
| Метод | Что делает | Параметры |
|---|---|---|
tcCryptoLogic.newRequest(taskId, RequestString_EP_ID, Request_EP_ID, {extParamsId:{ContainerName: 'Container_EP_ID'}}) |
Создать запрос на сертификат | ID ДП со строкой запроса, ID ДП для записи Request, ID ДП с названием носителя |
tcCryptoLogic.installCertificate(taskId, Certificate_EP_ID) |
Записать сертификат на носитель | ID ДП с сертификатом |
tcCryptoLogic.changePin(thumbprint_EP_ID) |
Сменить PIN-код (CryptoPro) | ID ДП с отпечатком. Для RuToken — без параметров |
Формат XML данных о пользователе (для Issue certificate / New or update user):
<ProfileAttributesChange>
<From>
<Attribute Oid="2.5.4.3" Value="Иванов Иван Иванович"/>
<Attribute Oid="2.5.4.4" Value="Иванов"/>
<Attribute Oid="2.5.4.42" Value="Иван Иванович"/>
<Attribute Oid="1.2.840.113549.1.9.2" Value="29U6MCO"/>
<Attribute Oid="2.5.4.10" Value="ООО Ромашка"/>
<Attribute Oid="2.5.4.12" Value="Заместитель директора"/>
</From>
<To>
<!-- аналогично для целевых значений -->
</To>
</ProfileAttributesChange>
Формат атрибутов сертификата:
[
{"rdn": "commonName", "cpn": "CN", "value": "ИвановИИ"},
{"rdn": "surname", "cpn": "SN", "value": "Иванов"},
{"rdn": "givenName", "cpn": "G", "value": "Иван Иванович"},
{"rdn": "organizationName", "cpn": "O", "value": "ООО Ромашка"},
{"rdn": "title", "cpn": "T", "value": "Директор"},
{"rdn": "emailAddress", "cpn": "E", "value": "ivanov@romashka.ru"}
]
Источник: admin.md
Выбор плагина ЭЦП¶
Где настраивается: AdminSPA → /spa/administration/eds-plugin-settings (v2.268+)
Три уровня настройки: 1. Глобальный -- плагин по умолчанию для всей системы 2. По категории -- переопределение для конкретных категорий 3. По группе -- переопределение для групп пользователей
Варианты плагинов: CryptoPro, RuToken, DefineOnClient (определить на клиенте).
Удаление записей (категории или группы из списка) выполняется мгновенно, отдельным запросом — без нажатия «Сохранить».
Admin API:
| Эндпоинт | Назначение |
|---|---|
GET /api/admin/eds/plugin |
Получить текущие настройки плагина: плагин по умолчанию, настройки для категорий и групп |
PUT /api/admin/eds/plugin |
Полностью заменить настройки категорий и групп (full replace) |
До v2.268 настройка выполнялась через EntityEditor (/spa/administration/entity/cryptoProPlugin); этот механизм упразднён.
SignaturesGridSettings — настройка колонок списка подписей¶
Версии: v2.256 Феникс — v2.265 Цефей. С v2.266 — нативная настройка колонок.
Где настраивается: пользовательский ключ SignaturesGridSettings (SettingsCustom)
Формат ключа:
{"columns":[{"key": "...", "type": "...", "isHidden": true/false}]}
Механика isHidden¶
isHidden: false— колонка отображаетсяisHidden: true— колонка скрыта даже из меню «доступных колонок» (недоступна для включения пользователем)
Тип extparam¶
Для вывода значений ДП в список подписей: в качестве type указать "extparam", в key — ID нужного ДП. Работает для обычных ДП; информационные ДП (отображаются серыми блоками под строкой) этим не управляются.
Системные колонки¶
| key | Колонка | type |
|---|---|---|
taskText |
Текст задачи | general |
signatureReason |
Причина запроса подписи | general |
signatureOrderedTime |
Срок | general |
description |
Описание | general |
signatureAndText |
Подпись и текст задачи | general |
signatureAcceptants |
Согласующие | general |
signatureInitializeDate |
Дата запроса | general |
subcatName |
Категория | general |
ownerName |
Заказчик | general |
responsiblePerformer |
Исполнитель | general |
requestorName |
Запросивший подпись | general |
timeToSign |
Время на подпись | general |
actions |
Действия | general |
commentsFromMeCount |
Вопросы от меня | general |
commentsToMeCount |
Вопросы мне | general |
isAnyUnAnswered |
Мои вопросы | general |
taskId |
Номер задачи | general |
taskState |
Статус | general |
activeSubtasks |
Активных подзадач | general |
totalSubtasks |
Всего подзадач | general |
subtasksRes |
Подзадачи | general |
taskPriority |
Приоритет | general |
{ExtParamId} |
Любой ДП (ID задаётся в key) | extparam |
Источник: admin.md
Совмещение статической и динамической подписи¶
Одна и та же подпись может быть одновременно статической и динамической: на переходе она запрашивается как статическая (привязана к шагу), но в рамках того же перехода допускается запросить её динамически.
При отклонении динамической подписи параметр «Прерывать согласование на переходе, если подпись отклонена» (блок «Динамическая подпись» в настройках подписи) определяет поведение:
- Прервать — всё согласование на переходе останавливается
- Продолжить — остальные подписи на переходе продолжают выполняться
Оба типа маршрутов (статический и динамический) детально описаны в business.md секции «Статическая подпись» и «Динамическая подпись», а также в backend.md.
Сводная матрица настроек подписей (~25 тем)¶
Таблица группирует все параметры подписей по функциональным задачам, а не по форме настройки. Колонки: Где настраивается, Область действия (подпись/переход/группа/категория), Смарт-события и смарт-действия.
| Тема | Где настраивается | Область | Смарт-события / смарт-действия |
|---|---|---|---|
| Акцептанты | Подпись → блок «Акцептанты» | Подпись | — |
| Акцептанты на переходе | Настройки подписи на переходе, колонка «Акцептанты» | Переход | — |
| Акцептанты динамической подписи | Подпись → блок «Динамическая подпись», параметр «Акцептант определяется по» | Подпись | — |
| Акцептанты от имени группы | Группа → вкладка «Подписи» | Подпись\Группа | — |
| Изменение списка акцептантов | Группа → вкладка «Права на категорию» / Категория → вкладка «Доступ» | Категория\Группа | — |
| Предупреждение при пустом акцептанте | Подпись → параметр «Не слать ошибку, если акцептант не указан» | Подпись | — |
| Добавление в подписчики | Подпись → параметр «Добавлять в подписчики акцептанта» | Подпись | Смарт-действие: «Добавить акцептанта динамической подписи» |
| Срок подписи | Подпись → блок «Срок», параметры «Минимальное время» и «Время по умолчанию» | Подпись | — |
| Срок на конкретном переходе | Настройки подписи на переходе, колонка «На подписание» | Переход | — |
| Обязательность срока | Подпись → блок «Срок», параметр «Срок обязателен» | Подпись | — |
| Изменение срока | Подпись → блок «Срок», параметр «Срок можно менять» | Подпись | Смарт-событие: «После истечения срока подписи» |
| Доступные резолюции | Подпись → блок «Резолюции» | Подпись | — |
| Запрос подписи на переходе | Настройки маршрута категории, колонка «Подписи» | Категория | Смарт-событие: «Перед запросом подписи на переходе» |
| Обязательность подписи на переходе | Настройки подписи на переходе, колонка «Обязательна» | Переход | — |
| Причина запроса подписи | Настройки подписи на переходе, колонка «Причина» | Переход | — |
| Причина для динамической подписи | Подпись → блок «Динамическая подпись», параметр «Причина запроса для динамической подписи обязательна» | Подпись | — |
| Изменение причины | Настройки подписи на переходе, колонка «Причину запроса подписи можно менять» | Переход | Смарт-действие: «Изменить причину динамической подписи» |
| Комментарий при акцепте | Подпись → параметр «Запрашивать комментарий при подписании» | Подпись | — |
| Комментарий на переходе | Настройки подписи на переходе, колонка «Запрашивать комментарий при подписании» | Переход | — |
| Обязательность причины у резолюции | Резолюция → параметр «Обязательна причина» | Резолюция | События: «Перед акцептом/делегированием/отклонением/удалением подписи» |
| Эскалирование | Подпись → параметр «Можно эскалировать» | Подпись | События: «Перед эскалированием», «После эскалирования динамической подписи» |
| Эскалирование на переходе | Настройки подписи на переходе, колонки «Можно эскалировать», «Эскалировать, когда просрочена» | Переход | — |
| Подпись начальника | Подпись → блок «Подпись начальника» | Подпись | — |
| Отзыв подписи | Категория → параметры «Разрешить исполнителям отзывать...» | Категория | Смарт-действие: «Отозвать запрошенную подпись». События: «Перед/После отзыва подписи» |
| Динамическая подпись | Подпись → блок «Динамическая подпись», параметр «Может быть динамической» | Подпись | Смарт-действия: «Запросить динамическую подпись», «Запросить подпись пользователя». События: «Перед/После запроса динамической подписи» |
| Право запрашивать динамическую подпись | Группа → вкладка «Специальные права», параметр «Запрашивать динамическую подпись» | Группа | — |
| Право создавать динамическую подпись | Группа → вкладка «Специальные права», параметр «Создавать динамическую подпись» | Группа | — |
| Повторный запрос подписи | Подпись → параметр «Не запрашивать повторно» | Подпись | — |
| Повторный запрос на переходе | Настройки подписи на переходе, колонка «Не запрашивать повторно» | Переход | — |
| Отдельная копия каждому акцептанту | Настройки подписи на переходе, колонка «Каждому акцептанту отдельную копию» | Переход | — |
| Условия запроса | Настройки подписи на переходе, колонки «Обязательные ДП», «Условия запроса» | Переход | — |
| Последовательность подписей | Настройки подписи на переходе, колонка «Этап согласования» | Переход | — |
| Действие при отклонении | Настройки подписи на переходе, колонки «При отклонении», «В статус если отклонена», «При отклонении выполнить переход» | Переход | — |
| Действие при отклонении динамической | Подпись → блок «Динамическая подпись», параметр «Прерывать согласование...» | Подпись | — |
| SQL-процедура на переходе | Настройки подписи на переходе, колонка «Процедура» | Переход | — |
| Активность подписи | Настройки подписи на переходе, колонка «Активна» | Переход | — |
Источник: admin.md (строки 411–828)
CustomSettings — прочие ключи подписей¶
| Ключ | Тип | Назначение |
|---|---|---|
IsOldSignTicker |
bool | Если true — клик на индикатор подписей в SPA открывает старый список подписей (legacy-grid). Используется при переходе на новый интерфейс для совместимости |
appsettings.json — серверная криптография подписей¶
| Ключ | Default | Назначение |
|---|---|---|
DecodeEdsSignatures |
true |
Серверная криптографическая верификация подписей ЭЦП при акцепте (выполняется SignedCms.Decode() + CheckSignature() из System.Security.Cryptography.Pkcs). Только для КриптоПро / РуТокен (EbdsTypes.CryptoProRuToken). Для DSS КриптоПро и Контур.Облако серверная проверка не выполняется (верификация на стороне облачного провайдера). При ошибке возвращается Eds_CryptographicException. ⚠️ Отключать (false), если на сервере не установлен КриптоПро CSP или недоступны корневые сертификаты УЦ — иначе акцепт упадёт |
Типичные ошибки настройки¶
| Симптом | Причина | Где проверить | SQL-диагностика |
|---|---|---|---|
| «Подпись недоступна» на переходе | Подпись не привязана к шагу маршрута | StepSignatureController | select ss.*, s.Name from dbo.StepSignatures ss inner join dbo.Signatures s on ss.SignatureId = s.SignatureID where ss.StepId = {stepId} |
| «Нет доступных резолюций» | К подписи не привязаны типы резолюций | SignaturesController -> resolutions | select s.Name, srt.* from dbo.SignatureResolutions sr inner join dbo.Signatures s on sr.SignatureId = s.SignatureID inner join dbo.SignatureResolutionTypes srt on sr.ResolutionTypeId = srt.Id where s.SignatureID = {id} |
| ЭЦП не работает | Неверные настройки КриптоПро / DSS | Формы cryptopro-verification-centers, dsscryptopro-service-settings |
select * from dbo.CryptoProCertificationCenters; select * from dbo.DSSCryptoProCredentials |
| Подпись требует комментарий, но нет поля | Тип резолюции требует комментарий | Форма signature-resolution-types |
select * from dbo.SignatureResolutionTypes where Id = {resTypeId} |
| Динамическая подпись не появляется | Неверный SQL-маршрут или не настроена видимость | StepSignatureController -> route-from-sql | select * from dbo.StepSignatures where StepId = {stepId} and IsDynamic = 1 |
Связанные документы¶
docs/domains/signatures/backend.md-- backend-архитектура (контроллеры, сервисы, runtime подписей)docs/domains/categories/admin.md-- настройка маршрутов (подписи привязываются к шагам категории)docs/platform/backend/admin-architecture.md-- общая архитектура администрированияdocs/reference/database/dbadmin-forms-map.md-- карта всех форм автоадминки