Перейти к содержанию

Смарт-действия ЭДО: Диадок и СБИС

Документ охватывает все смарт-действия, связанные с электронным документооборотом через Диадок и СБИС. Расположение файлов: core/TCClassLib/Smart/Actions/StandardActions/ Группа действий: ActionGroupTypes.WorkWithEdm — «Работа с ЭДО»

Терминология. Интеграция настраивается для конкретного клиента. Все стороны, с которыми клиент обменивается документами — это контрагенты, независимо от направления передачи.


Архитектурный паттерн

Все смарт-действия реализуют интерфейс IStandardAction и регистрируются через атрибут [StandardAction(StandardAction.ХХХ)].

Действия делятся на два паттерна исполнения:

Синхронные — немедленно вызывают IEdocumentService / IEdocumentSbisService через IoC-контейнер и возвращают результат. Используются для операций чтения, генерации файлов и проверки статусов.

Через очередь — помещают событие в очередь через QueueEventsService и возвращают управление. Используются для отправки документов и подписей — операций, требующих гарантированной доставки и повторных попыток при сбое.

Провайдер Метод очереди Сервис
Диадок AddNewEventToEdocumentsQueue IEdocumentService (TCInterfaces.Edocument)
СБИС AddNewEventToEdocumentsSbisQueue IEdocumentSbisService (Valhalla.Interfaces.Edocument)

МЧД во всех операциях подписания. Параметр МЧД типа string присутствует почти во всех действиях, связанных с подписью. Передаётся как JSON, десериализуется в EdocumentMchd. Поддерживает подписание по машиночитаемой доверенности (63-ФЗ).

Async через Task.Run. Действия сохранения печатных форм и архивов используют Task.Run(...).Result — синхронная обёртка над async-методами сервиса, необходимая для совместимости с синхронным движком смарт-действий. Паттерн задокументирован в комментариях: // Use Task.Run to avoid deadlocks.

Порядок параметров фиксирован. Во всех файлах стоит комментарий:

// Добавлять ActionParameter только в конец массива! Индекс параметра имеет значение.
// При добавлении нового required-параметра упадут существующие смарт-действия.


Диадок

MCP-группа: EdiDiadoc = 16 («ЭДО Диадок») Тип сервиса: ServiceType.Diadoc = 7 Таблица учётных данных: DiadocServiceCredentials Фоновая синхронизация: SyncEdocumentsFromDiadocJob


Диадок — Отправить электронный документ

Enum: SendEdocument = 113 Файл: StandartActionSendEdocument.cs Исполнение: очередь (AddNewEventToEdocumentsQueue)

Что делает и зачем: Отправляет файл из хранилища 1Ф контрагенту через Диадок. Основная точка входа для исходящего документооборота. Поддерживает счета-фактуры, УПД, акты и неформализованные документы. Можно запросить ответную подпись от контрагента.

# Параметр Тип Обяз. Описание
0 ID файла FileFromLibrary Ссылка на файл в хранилище 1Ф, который будет отправлен контрагенту. Для формализованных документов (УПД, СФ) должен быть корректный XML в формате ФНС; для неформализованных — любой формат
1 ИНН контрагента string ИНН организации-получателя. Используется Диадок для поиска ящика контрагента и маршрутизации документа
2 КПП контрагента string КПП организации-получателя. Совместно с ИНН однозначно определяет юридическое лицо или его обособленное подразделение
3 Нужна ли ответная подпись bool Если true — документ отправляется с требованием ответной подписи от контрагента. Актуально для актов, УПД и других двусторонних документов
4 Тип документа string Тип документа по классификатору Диадок (например: UniversalTransferDocument, Invoice, Nonformalized). Определяет схему валидации и правила маршрутизации в ЭДО
5 Сумма decimal Сумма документа. Обязательна для счетов-фактур и платёжных документов; подставляется в метаданные при отправке
6 ID сервиса int? Идентификатор настройки подключения к Диадок из справочника сервисов 1Ф. Если не указан — используется настройка по умолчанию из конфигурации
7 Уникальный идентификатор организации string BoxId ящика отправителя в системе Диадок. Используется когда у организации несколько ящиков (разные юридические лица или подразделения). Если не указан — берётся ящик из настроек сервиса
8 Подпись string Электронная подпись документа в формате Base64 (CMS/PKCS#7). Если не передана — используется подпись, сформированная на стороне 1Ф (если была). Заполняется только при серверном подписании вне 1Ф
9 МЧД string Машиночитаемая доверенность в формате JSON (EdocumentMchd). Передаётся когда сотрудник подписывает документ по доверенности, а не собственной ЭП
10 Номер договора string Номер договора, к которому относится отправляемый документ. Заполняется в реквизитах документа для привязки к договорной базе
11 К договору string Номер основного договора при отправке приложений и дополнений к нему. Позволяет Диадок связать документ с родительским договором
12 От (к договору) string Дата основного договора в строковом формате. Используется совместно с параметром «К договору» для полной идентификации договора в реквизитах
13 Исходный ящик string BoxId ящика, от имени которого отправляется документ. Актуален при роуминге или наличии нескольких зарегистрированных ящиков у одной организации
14 Дата документа string Дата составления документа в строковом формате. Подставляется в метаданные при отправке, если не содержится в XML-файле документа
15 Код валюты string Цифровой код валюты по классификатору ОКВ (например: 643 — рубль, 840 — доллар США). Используется при формировании счетов-фактур

Диадок — Получить документ

Enum: ReceiveMissedDocDiadoc = 150 Файл: StandartActionReceiveMissedDocsDiadoc.cs Исполнение: синхронный → IEdocumentService.GetDocument Возвращает: ничего

Что делает и зачем: Принудительно скачивает конкретный документ от контрагента из Диадок по идентификаторам сообщения и сущности. Нужен когда документ не прилетел автоматически через фоновую синхронизацию — например, из-за сбоя, или когда требуется получить исторический документ вручную.

# Параметр Тип Обяз. Описание
0 MessageId string Идентификатор сообщения в системе Диадок (GUID). Каждый обмен документами между ящиками образует сообщение; MessageId — его уникальный идентификатор
1 EntityId string Идентификатор конкретной сущности внутри сообщения (GUID). Сообщение может содержать несколько сущностей (файл документа, подписи, извещения); EntityId указывает на нужную
2 ServiceId int? Идентификатор настройки подключения к Диадок

Диадок — Получить контрагентов

Enum: GetCounteragents = 164 Файл: StandartActionGetCounteragents.cs Исполнение: синхронный → IEdocumentService.GetCounterAgents Возвращает: string (JSON-массив)

Что делает и зачем: Возвращает список контрагентов, зарегистрированных в ящике Диадок. Используется для наполнения справочников в 1Ф, проверки наличия ЭДО-подключения с контрагентом перед отправкой документа.

# Параметр Тип Обяз. Описание
0 ID сервиса int Идентификатор настройки подключения к Диадок. Обязателен — при нескольких ящиках нужно явно указать из какого запрашивать список контрагентов

Диадок — Сохранить контент электронного документа

Enum: SaveEdocumentContentByLink = 114 Файл: StandartActionSaveEdocumentContentByLink.cs Исполнение: синхронный, контекст EdocumentLinkIEdocumentService.SaveEdocumentContentByLink Возвращает: FileFromLibrary

Что делает и зачем: Скачивает XML/бинарное содержимое электронного документа от контрагента из Диадок и сохраняет его как файл в хранилище 1Ф. Результат — ссылка на файл, которую можно прикрепить к задаче или карточке.

# Параметр Тип Обяз. Описание
0 ID ссылки на электронный документ int Идентификатор записи EdocumentLink — внутренней ссылки, связывающей документ в Диадок с объектами системы 1Ф. Через неё определяются MessageId, EntityId и другие реквизиты для скачивания
1 ID сервиса int? Идентификатор настройки подключения к Диадок

Диадок — Сохранить печатную форму электронного документа

Enum: SaveEdocumentPrintFormByLink = 115 Файл: StandartActionSaveEdocumentPrintFormByLink.cs Исполнение: синхронный (async через Task.Run), контекст EdocumentLink Возвращает: FileFromLibrary

Что делает и зачем: Скачивает PDF-печатную форму документа из Диадок и сохраняет в хранилище 1Ф. Нужен когда к карточке задачи или документа необходимо приложить человекочитаемую версию ЭД.

# Параметр Тип Обяз. Описание
0 ID ссылки на электронный документ int Идентификатор записи EdocumentLink. Диадок генерирует печатную форму на своей стороне по данным из XML
1 ID сервиса int? Идентификатор настройки подключения к Диадок

Диадок — Сохранить архив с файлами подписей электронного документа

Enum: SaveEdocumentArchiveFormByLink = 127 Файл: StandartActionSaveEdocumentArchiveFormByLink.cs Исполнение: синхронный (async через Task.Run), контекст EdocumentLink Возвращает: FileFromLibrary (ZIP-архив)

Что делает и зачем: Скачивает ZIP-архив с файлом документа и всеми подписями к нему. Флаг «Весь документооборот» (true по умолчанию) выгружает полную цепочку: оба титула, извещения, подписи всех сторон. Нужен для долгосрочного архивного хранения ЭД.

# Параметр Тип Обяз. Описание
0 ID ссылки на электронный документ int Идентификатор записи EdocumentLink
1 ID сервиса int? Идентификатор настройки подключения к Диадок
2 Весь документооборот bool? Если true (по умолчанию) — в архив включается полный документооборот: файлы обеих сторон, все служебные документы (извещения, титулы, подписи). Если false — только основной файл с подписями

Диадок — Сохранить контент аннулирования электронного документа

Enum: SaveRevocationFile = 143 Файл: StandartActionSaveRevocationFile.cs Исполнение: синхронный, контекст EdocumentLinkIEdocumentService.SaveRevocationFile Возвращает: FileFromLibrary

Что делает и зачем: Скачивает и сохраняет в хранилище 1Ф файл аннулирования, присланного контрагентом. Используется как подготовительный шаг перед ответом на запрос аннулирования — после этого файл передаётся в действие «Отправить подписанный файл об аннулировании».

Примечание. Рекомендуется вызывать в обработчике события change Диадок: именно в нём приходит уведомление о том, что контрагент инициировал аннулирование.

# Параметр Тип Обяз. Описание
0 ID ссылки на электронный документ int Идентификатор записи EdocumentLink документа, по которому контрагент прислал запрос аннулирования
1 ID сервиса int? Идентификатор настройки подключения к Диадок

Диадок — Сгенерировать пустой xml титул покупателя для документа

Enum: GenerateXmlBuyerTitle = 131 Файл: StandartActionGenerateXmlBuyerTitle.cs Исполнение: синхронный → IEdocumentService.GenerateBuyerTitleXml Возвращает: FileFromLibrary (пара ID файла + ID версии)

Что делает и зачем: Создаёт XML-файл ответного титула покупателя для УПД или акта — заготовку для подписи со стороны клиента. Параметры JSON позволяют подставить реквизиты организации. Используется в двустороннем документообороте, когда клиент должен сформировать и подписать свою часть.

# Параметр Тип Обяз. Описание
0 ID файла FileFromLibrary Ссылка на исходный документ контрагента (УПД или акт), для которого генерируется ответный титул. На основании его структуры Диадок формирует схему титула
1 ID сервиса int? Идентификатор настройки подключения к Диадок
2 Параметры для титула в формате JSON string JSON-объект с реквизитами клиента для заполнения полей титула (ИНН, наименование, ФИО и должность подписанта, дата принятия)
3 Параметры для титула в формате JSON (формат 970) string JSON-объект с реквизитами для титула по формату приказа ФНС № ЕД-7-26/970@ (действует с 2023 года). Используется когда документ контрагента создан в новом формате

Диадок — Сгенерировать xml титул для документа

Enum: GenerateXmlTitle = 132 Файл: StandartActionGenerateXmlTitle.cs Исполнение: синхронный → IEdocumentService.GenerateTitleXml Возвращает: FileFromLibrary (пара ID файла + ID версии)

Что делает и зачем: Аналог предыдущего, но принимает уже готовый XML-файл с данными вместо JSON-параметров. Используется когда XML-данные для титула формируются отдельным шагом автоматизации.

# Параметр Тип Обяз. Описание
0 ID файла FileFromLibrary Ссылка на исходный документ контрагента, для которого генерируется XML-титул
1 ID xml файла FileFromLibrary Ссылка на XML-файл с данными для заполнения титула. Должен соответствовать схеме XSD ответного титула Диадок
2 ID сервиса int? Идентификатор настройки подключения к Диадок

Диадок — Ответить титулом на электронный документ

Enum: AttachTitleSignature = 133 Файл: StandartActionAttachTitleSignature.cs Исполнение: очередь

Что делает и зачем: Подписывает сформированный XML-титул и отправляет его контрагенту в ответ на полученный документ. Завершающий шаг двустороннего документооборота — клиент подтверждает приёмку товара или услуги.

# Параметр Тип Обяз. Описание
0 ID файла FileFromLibrary Ссылка на исходный документ контрагента, на который отправляется ответный титул
1 ID xml файла титула FileFromLibrary Ссылка на XML-файл ответного титула, сформированный действием «Сгенерировать xml титул»
2 ID сервиса int? Идентификатор настройки подключения к Диадок
3 Подпись string Электронная подпись XML-файла титула в формате Base64 (CMS/PKCS#7 detached)
4 МЧД string Машиночитаемая доверенность в формате JSON

Диадок — Создать файл отказа от подписи

Enum: GenerateRejectionSignature Файл: StandartActionGenerateRejectionSignature.cs Исполнение: синхронный → IEdocumentService.GenerateRejectionSignature Возвращает: FileFromLibrary

Что делает и зачем: Формирует XML-файл отказа от подписи документа — когда клиент не согласен подписывать документ контрагента. Результат передаётся в действие «Отправить подписанный отказ от подписи».

# Параметр Тип Обяз. Описание
0 ID файла FileFromLibrary Ссылка на документ контрагента, от подписи которого отказывается клиент
1 Причина отказа string Текстовое обоснование отказа от подписания (например: «Не соответствует условиям договора», «Обнаружены ошибки в реквизитах»). Отображается контрагенту при получении отказа
2 ID сервиса int? Идентификатор настройки подключения к Диадок

Диадок — Отправить подписанный отказ от подписи

Enum: AttachRejectionSignature Файл: StandartActionAttachRejectionSignature.cs Исполнение: очередь Используется совместно с: «Диадок — Создать файл отказа от подписи»

Что делает и зачем: Подписывает XML-файл отказа и отправляет его контрагенту. Контрагент получает уведомление, что его документ не будет подписан.

# Параметр Тип Обяз. Описание
0 ID файла FileFromLibrary Ссылка на исходный документ контрагента, от подписи которого отказывается клиент
1 ID файла отказа FileFromLibrary Ссылка на XML-файл отказа, сформированный действием «Создать файл отказа от подписи»
2 ID сервиса int? Идентификатор настройки подключения к Диадок
3 Подпись string Электронная подпись XML-файла отказа в формате Base64
4 МЧД string Машиночитаемая доверенность в формате JSON

Диадок — Создать файл отказа от подписи (Universal)

Enum: GenerateRejectionSignatureUniversal = 206 Файл: StandartActionGenerateRejectionSignatureUniversal.cs Исполнение: синхронный → IEdocumentService.GenerateRejectionSignatureUniversal Возвращает: FileFromLibrary

Что делает и зачем: Расширенная версия базового действия. Принимает явный отпечаток сертификата, что позволяет указать конкретный ключ подписи при наличии нескольких сертификатов.

# Параметр Тип Обяз. Описание
0 ID файла FileFromLibrary Ссылка на документ контрагента, от подписи которого отказывается клиент
1 Причина отказа string Текстовое обоснование отказа. Необязателен, но рекомендуется для информирования контрагента
2 Отпечаток сертификата string Отпечаток (thumbprint) сертификата ЭП в формате HEX — указывает каким ключом формируется файл отказа
3 ID сервиса int? Идентификатор настройки подключения к Диадок

Диадок — Отправить подписанный отказ от подписи (Universal)

Enum: AttachRejectionSignatureUniversal = 202 Файл: StandartActionAttachRejectionSignatureUniversal.cs Исполнение: очередь Используется совместно с: «Диадок — Создать файл отказа от подписи (Universal)»

Что делает и зачем: Подписывает и отправляет контрагенту отказ от подписи. Расширенная версия — позволяет передать причину отказа напрямую в параметрах.

# Параметр Тип Обяз. Описание
0 ID файла FileFromLibrary Ссылка на исходный документ контрагента
1 ID файла отказа FileFromLibrary Ссылка на XML-файл отказа, сформированный действием «Создать файл отказа от подписи (Universal)»
2 ID сервиса int? Идентификатор настройки подключения к Диадок
3 Подпись string Электронная подпись XML-файла отказа в формате Base64
4 Причина отказа string Текстовая причина отказа, включаемая в уведомление контрагенту
5 МЧД string Машиночитаемая доверенность в формате JSON

Диадок — Аннулирование документов

Процедура аннулирования в Диадок двусторонняя и зависит от того, кто является инициатором.

Сценарий A: Аннулирование инициируем МЫ

1. Создать файл аннулирования подписи
2. Отправить подписанный файл соглашения об аннулировании

Сценарий Б: Аннулирование инициирует КОНТРАГЕНТ

1. Сохранить контент аннулирования  ← скачивает файл, присланный контрагентом
   ├─ Согласны → Отправить подписанный файл об аннулировании
   └─ Не согласны → Создать файл отклонения аннулирования
                  → Отправить подписанный отказ от аннулирования

StatusMessage в журнале очередей при аннулировании (v2.267+)

При синхронизации событий аннулирования из Диадок (SyncEdocumentsFromDiadocJob) каждое событие записывается в журнал очередей. Поле StatusMessage содержит человекочитаемую причину, полученную из SDK Диадок.

Событие Источник StatusMessage в SDK Что хранится
Мы инициировали аннулирование — запрос ушёл document.Revocation.RevocationRequest?.PlainText Наш текст причины аннулирования
Контрагент согласился с аннулированием Пусто / нет текста
Контрагент отказал в аннулировании document.Revocation.RevocationResponse?.SignatureRejection?.PlainText Текст причины отказа контрагента

До v2.267 при обработке отказа контрагента в аннулировании в StatusMessage ошибочно записывался текст из RevocationRequest.PlainText (наша причина запроса) вместо RevocationResponse.SignatureRejection.PlainText (причина отказа контрагента). Баг также приводил к дублированию записей в журнале очередей. Исправлено в EdocumentService.cs (v2.267).

Диагностика: если в журнале по событию «Отказ в аннулировании» в поле StatusMessage записан текст, который явно написан от имени инициатора (нашей стороны) — это признак запуска на версии до v2.267 или некорректного состояния.


Диадок — Создать файл аннулирования подписи

Enum: GenerateRevocationSignature Файл: StandartActionGenerateRevocationSignature.cs Исполнение: синхронный → IEdocumentService.GenerateRevocationSignature Возвращает: FileFromLibrary Сценарий: инициируем аннулирование МЫ

Что делает и зачем: Формирует XML-файл запроса на аннулирование ранее подписанного документа. Первый шаг когда клиент сам инициирует аннулирование. Результат передаётся в действие «Отправить подписанный файл соглашения об аннулировании».

# Параметр Тип Обяз. Описание
0 ID файла FileFromLibrary Ссылка на аннулируемый документ
1 Причина аннулирования string Текстовое пояснение причины аннулирования (например: «Ошибка в реквизитах», «Документ подписан ошибочно»). Отображается контрагенту при получении запроса
2 ID сервиса int? Идентификатор настройки подключения к Диадок

Диадок — Отправить подписанный файл соглашения об аннулировании

Enum: AttachRevocationSignature Файл: StandartActionAttachRevocationSignature.cs Исполнение: очередь Используется совместно с: «Диадок — Создать файл аннулирования подписи» Сценарий: инициируем аннулирование МЫ

Что делает и зачем: Подписывает и отправляет контрагенту запрос на аннулирование. После отправки контрагент должен либо согласиться с аннулированием, либо отклонить.

# Параметр Тип Обяз. Описание
0 ID файла FileFromLibrary Ссылка на аннулируемый документ
1 ID файла аннулирования FileFromLibrary Ссылка на XML-файл запроса аннулирования, сформированный действием «Создать файл аннулирования подписи»
2 ID сервиса int? Идентификатор настройки подключения к Диадок
3 Подпись string Электронная подпись XML-файла аннулирования в формате Base64
4 МЧД string Машиночитаемая доверенность в формате JSON

Диадок — Отправить подписанный файл об аннулировании

Enum: AttachRevocationRequestedSignature = 144 Файл: StandartActionAttachRevocationRequestedSignature.cs Исполнение: очередь Используется совместно с: «Диадок — Сохранить контент аннулирования электронного документа» Сценарий: аннулирование инициировал КОНТРАГЕНТ, мы СОГЛАШАЕМСЯ

Что делает и зачем: Отправляет в Диадок подписанный файл аннулирования — ответ на запрос контрагента. Файл аннулирования предварительно скачивается действием «Сохранить контент аннулирования» и сохраняется в хранилище 1Ф. После отправки документ считается аннулированным с обеих сторон.

# Параметр Тип Обяз. Описание
0 ID файла FileFromLibrary Ссылка на аннулируемый документ
1 ID файла аннулирования FileFromLibrary Ссылка на файл аннулирования, скачанный действием «Сохранить контент аннулирования электронного документа»
2 ID сервиса int? Идентификатор настройки подключения к Диадок
3 Подпись string Электронная подпись файла аннулирования в формате Base64
4 МЧД string Машиночитаемая доверенность в формате JSON

Диадок — Создать файл отклонения аннулирования подписи

Enum: GenerateRejectRevocationSignature = 145 Файл: StandartActionGenerateRevocationRejectionSignature.cs Исполнение: синхронный → IEdocumentService.GenerateRevocationRejectionSignature Возвращает: FileFromLibrary Сценарий: аннулирование инициировал КОНТРАГЕНТ, мы НЕ СОГЛАШАЕМСЯ

Что делает и зачем: Формирует XML-файл отклонения аннулирования — когда контрагент прислал запрос на аннулирование, а клиент с ним не согласен. Документ остаётся юридически действующим.

# Параметр Тип Обяз. Описание
0 ID файла FileFromLibrary Ссылка на документ, по которому пришёл запрос аннулирования от контрагента
1 Причина отклонения string Текстовое обоснование отказа от аннулирования (например: «Документ исполнен», «Аннулирование не согласовано»). Отображается контрагенту
2 ID сервиса int? Идентификатор настройки подключения к Диадок

Диадок — Отправить подписанный отказ от аннулирования

Enum: AttachRevocationRejectionSignature Файл: StandartActionAttachRevocationRejectionSignature.cs Исполнение: очередь Сценарий: аннулирование инициировал КОНТРАГЕНТ, мы НЕ СОГЛАШАЕМСЯ

Что делает и зачем: Отправляет подписанный отказ контрагенту. Документооборот остаётся в силе.

# Параметр Тип Обяз. Описание
0 ID файла FileFromLibrary Ссылка на исходный документ
1 ID файла отказа FileFromLibrary Ссылка на XML-файл отклонения аннулирования, сформированный предыдущим действием
2 ID сервиса int? Идентификатор настройки подключения к Диадок
3 Подпись string Электронная подпись XML-файла отказа в формате Base64
4 МЧД string Машиночитаемая доверенность в формате JSON

Диадок — Создать файл отклонения аннулирования подписи (Universal)

Enum: GenerateRevocationRejectionSignatureUniversal = 205 Файл: StandartActionGenerateRevocationRejectionSignatureUniversal.cs Исполнение: синхронный → IEdocumentService.GenerateRevocationRejectionSignatureUniversal Возвращает: FileFromLibrary

Что делает и зачем: Расширенная версия: дополнительно принимает явный отпечаток сертификата.

# Параметр Тип Обяз. Описание
0 ID файла FileFromLibrary Ссылка на документ, по которому пришёл запрос аннулирования от контрагента
1 Причина отказа string Текстовое обоснование отклонения аннулирования
2 Отпечаток сертификата string Отпечаток сертификата ЭП в формате HEX
3 ID сервиса int? Идентификатор настройки подключения к Диадок

Диадок — Отправить подписанный отказ от запроса аннулирования (Universal)

Enum: AttachRevocationRejectionSignatureUniversal = 203 Файл: StandartActionAttachRevocationRejectionSignatureUniversal.cs Исполнение: очередь

# Параметр Тип Обяз. Описание
0 ID файла FileFromLibrary Ссылка на исходный документ
1 ID файла отказа FileFromLibrary Ссылка на XML-файл отклонения аннулирования
2 ID сервиса int? Идентификатор настройки подключения к Диадок
3 Подпись string Электронная подпись XML-файла отказа в формате Base64
4 Причина отказа string Текстовая причина отклонения запроса на аннулирование
5 МЧД string Машиночитаемая доверенность в формате JSON

Диадок — Создать файл извещения о получении

Enum: GenerateInvoiceReceiptXml = 148 Файл: StandartActionGenerateInvoiceReceiptXml.cs Исполнение: синхронный → IEdocumentService.GenerateInvoiceReceiptXml Возвращает: FileFromLibrary (пара ID файла + ID версии)

Что делает и зачем: Формирует служебный XML-файл «извещение о получении» для счёта-фактуры от контрагента. По законодательству (НК РФ) получатель СФ обязан отправить это извещение не позднее следующего рабочего дня. В большинстве случаев (около 90%) извещение подписывается автоматически самим Диадок при авторизации пользователя — данное действие используется только когда требуется явное серверное или ручное подписание.

# Параметр Тип Обяз. Описание
0 ID файла FileFromLibrary Ссылка на полученный от контрагента счёт-фактуру или корректировочный СФ, для которого формируется извещение
1 ID сервиса int? Идентификатор настройки подключения к Диадок

Диадок — Отправить подписанный файл извещения о получении (Universal)

Enum: AttachInvoiceReceiptSignatureUniversal = 204 Файл: StandartActionAttachInvoiceReceiptSignatureUniversal.cs Исполнение: очередь Используется совместно с: «Диадок — Создать файл извещения о получении»

Что делает и зачем: Подписывает и отправляет контрагенту извещение о получении счёта-фактуры. Завершает обязательный технологический обмен по СФ.

# Параметр Тип Обяз. Описание
0 ID файла FileFromLibrary Ссылка на исходный счёт-фактуру от контрагента
1 ID файла извещения FileFromLibrary Ссылка на XML-файл извещения, сформированный действием «Создать файл извещения о получении»
2 ID сервиса int? Идентификатор настройки подключения к Диадок
3 Подпись string Электронная подпись XML-файла извещения в формате Base64
4 Комментарий string Произвольный текстовый комментарий к извещению (необязательный реквизит)
5 МЧД string Машиночитаемая доверенность в формате JSON

Диадок — Получить идентификатор МЧД

Enum: GetUserMCHDDiadoc = 165 Файл: StandartActionGetUserMCHDDiadoc.cs Исполнение: синхронный → IEdocumentService.GetUserMCHD Возвращает: string (идентификатор МЧД)

Что делает и зачем: По идентификатору пользователя в Диадок возвращает идентификатор его активной машиночитаемой доверенности. Нужен как подготовительный шаг: полученный идентификатор передаётся в операции подписания как параметр МЧД.

# Параметр Тип Обяз. Описание
0 ID пользователя string Строковый идентификатор пользователя в системе Диадок (не числовой ID пользователя в 1Ф). Можно получить из профиля пользователя в Диадок или через API
1 ID сервиса int? Идентификатор настройки подключения к Диадок

Диадок — Получить файлы МЧД

Enum: GetMCHDFilesDiadoc = 166 Файл: StandartActionGetMCHDFilesDiadoc.cs Исполнение: синхронный → IEdocumentService.GetMCHDFiles Возвращает: Dictionary<int, int> (маппинг ID файлов)

Что делает и зачем: По идентификатору МЧД и ID сообщения возвращает маппинг файлов доверенности контрагента, приложенных к сообщению в Диадок. Используется для получения и сохранения файлов МЧД контрагента, отправившего документ.

# Параметр Тип Обяз. Описание
0 ID МЧД string Идентификатор машиночитаемой доверенности контрагента в реестре ФНС
1 ID сообщения string MessageId сообщения в Диадок, в контексте которого пришёл документ с МЧД контрагента
2 ID сервиса int? Идентификатор настройки подключения к Диадок

Диадок — Получить статус МЧД

Enum: GetMCHDStatusDiadoc = 171 Файл: StandartActionGetMCHDStatusDiadoc.cs Исполнение: синхронный → IEdocumentService.GetPowerOfAttorneyStatus Возвращает: string (статус МЧД)

Что делает и зачем: Проверяет актуальный статус МЧД контрагента, приложенной к входящему документу. Позволяет убедиться, что доверенность была действительна на момент подписания.

# Параметр Тип Обяз. Описание
0 MessageId string Идентификатор сообщения Диадок, в рамках которого прикреплена МЧД контрагента
1 ContentId string Идентификатор сущности (Entity) внутри сообщения, содержащей файл МЧД контрагента
2 ID сервиса int? Идентификатор настройки подключения к Диадок

Диадок — Синхронизировать статусы документов в сообщении

Enum: SyncMessageStatus Файл: StandartActionSyncMessageStatus.cs Исполнение: синхронный → IEdocumentService.GetStatusesFromMessage Возвращает: string (JSON со статусами документов)

Что делает и зачем: Запрашивает актуальные статусы документов по списку MessageId из Диадок и возвращает сырой JSON. Используется для ручной или полуавтоматической актуализации состояния документооборота.

Ключевое отличие от аналогичного действия СБИС. Синхронизация Диадок возвращает только данные — полученный JSON необходимо разобрать вручную, сверить статусы с тем, что хранится в 1Ф, и самостоятельно запустить автоматизацию в зависимости от результата. Синхронизация СБИС, напротив, делает всё это автоматически: сравнивает статусы с таблицей EdocumentSbisLink и сама ставит в очередь события change по документам, где статусы расходятся.

# Параметр Тип Обяз. Описание
0 Список ID сообщений string[] Массив MessageId сообщений Диадок, статусы документов в которых нужно запросить. Позволяет обновить сразу несколько сообщений одним вызовом
1 ID сервиса int? Идентификатор настройки подключения к Диадок

Диадок — Получить тэги документа

Enum: GetTagsFromDocument = 142 Файл: StandartActionGetTagsFromDiadoc.cs Исполнение: синхронный → IEdocumentService.GetDocumentTags Возвращает: Dictionary<string, string>

Что делает и зачем: Возвращает теги документа из Диадок — произвольные пары ключ-значение. Используется для передачи дополнительных метаданных из Диадок в 1Ф при обработке входящих документов.

# Параметр Тип Обяз. Описание
0 ID ссылки на электронный документ int Идентификатор записи EdocumentLink — по нему определяется документ в Диадок, теги которого нужно получить
1 ID сервиса int? Идентификатор настройки подключения к Диадок

СБИС

MCP-группа: EdiSbis = 17 («ЭДО СБИС») Тип сервиса: ServiceType.Sbis = 14 Таблица учётных данных: SbisCredentials Таблица ссылок: EdocumentSbisLink Фоновая синхронизация: SyncEdocumentsFromSbisJob

Важный нюанс по аннулированию в СБИС. Файлы аннулирования, инициированного контрагентом, приходят в событии receive и скачиваются действием «СБИС — Сохранить контент электронного документа». Отказ контрагента от аннулирования, запрошенного клиентом, приходит как новый документ со статусом finished.


СБИС — Отправить электронный документ

Enum: SbisSendEdocument = 162 Файл: StandartActionSbisSendEdocument.cs Исполнение: очередь (AddNewEventToEdocumentsSbisQueue)

Что делает и зачем: Отправляет файл контрагенту через СБИС. В отличие от Диадок, требует уникальный идентификатор контрагента в системе СБИС (помимо ИНН/КПП). Поддерживает запрос ответной подписи и указание типа документа.

# Параметр Тип Обяз. Описание
0 ID файла FileFromLibrary Ссылка на файл в хранилище 1Ф, который будет отправлен контрагенту
1 ИНН контрагента string ИНН организации-получателя
2 КПП контрагента string КПП организации-получателя
3 Уникальный идентификатор контрагента string Внутренний идентификатор контрагента в системе СБИС. Необходим для точной адресации — по ИНН/КПП может быть зарегистрировано несколько ящиков. Берётся из справочника контрагентов СБИС
4 Нужна ли ответная подпись bool Если true — документ отправляется с запросом ответной подписи от контрагента
5 Тип документа string Тип документа по классификатору СБИС (например: ДоговорВх, АктВыпуска, ФактураВх). Определяет маршрутизацию и правила обработки
6 Сумма decimal Сумма документа. Используется в метаданных и для фильтрации в реестре СБИС
7 ID сервиса int? Идентификатор настройки подключения к СБИС из справочника сервисов 1Ф

СБИС — Создать файлы подтверждения подписи

Enum: SbisGenerateConfirmSignature = 177 Файл: StandartActionSbisGenerateConfirmSignature.cs Исполнение: синхронный → IEdocumentSbisService.GenerateConfirmSignature Возвращает: List<SbisFileWithAttachment> (JSON)

Что делает и зачем: Формирует служебные файлы подтверждения подписи в форматах СБИС и возвращает их в виде JSON. Обязателен как предварительный шаг перед «Отправить подписание» — если исходный документ находится в формате XML. Без этого шага подписание не пройдёт.

# Параметр Тип Обяз. Описание
0 ID файла FileFromLibrary Ссылка на XML-документ, для которого необходимо сформировать файлы подтверждения
1 Причина string Текстовый комментарий к подтверждению подписи
2 Отпечаток сертификата string Отпечаток (thumbprint) сертификата ЭП в формате HEX
3 ID сервиса int? Идентификатор настройки подключения к СБИС
4 МЧД string Машиночитаемая доверенность в формате JSON

СБИС — Отправить подписание

Enum: SbisAttachSignature = 154 Файл: StandartActionSbisAttachSignature.cs Исполнение: очередь Используется совместно с: «СБИС — Создать файлы подтверждения подписи» (если исходник в XML)

Что делает и зачем: Отправляет подписание сразу по всем документам как пакет (передаётся массив, а не по каждому документу отдельно). Если исходный документ был в XML — предварительно должно быть выполнено действие «Создать файлы подтверждения подписи», результат которого передаётся в этот параметр. Если документ не в XML — JSON для отправки собирается самостоятельно.

# Параметр Тип Обяз. Описание
0 Файлы (id, versionId, attachmentId) List<SbisFileWithAttachment> Список файлов для подписания в формате СБИС. Каждый элемент содержит: FileId (ID файла в хранилище 1Ф), VersionId (версия), AttachmentId (ID вложения в СБИС), DocumentId (ID документа в СБИС). Источник данных: для XML-документов — результат действия «Создать файлы подтверждения подписи» (SbisGenerateConfirmSignature=177); для прочих форматов JSON собирается автоматически из метаданных документа в СБИС
1 ID сервиса int? Идентификатор настройки подключения к СБИС
2 Подпись string Электронная подпись в формате Base64
3 МЧД string Машиночитаемая доверенность в формате JSON

СБИС — Создать файлы отказа от подписи

Enum: GenerateRejectionSbisSignature = 168 Файл: StandartActionGenerateRejectionSbisSignature.cs Исполнение: синхронный → IEdocumentSbisService.GenerateRejectionSignature Возвращает: List<SbisFileWithAttachment> (JSON)

Что делает и зачем: Формирует JSON-файлы отказа от подписи документа. Результат передаётся в действие «Отправить подписанный отказ от подписи».

# Параметр Тип Обяз. Описание
0 ID файла FileFromLibrary Ссылка на документ контрагента, от подписи которого отказывается клиент
1 Причина отказа string Текстовое обоснование отказа от подписания
2 Отпечаток сертификата string Отпечаток сертификата ЭП в формате HEX
3 ID сервиса int? Идентификатор настройки подключения к СБИС
4 МЧД string Машиночитаемая доверенность в формате JSON

СБИС — Отправить подписанный отказ от подписи

Enum: SbisAttachRejectSignature = 155 Файл: StandartActionAttachRejectSignature.cs Исполнение: очередь Используется совместно с: «СБИС — Создать файлы отказа от подписи»

Что делает и зачем: Подписывает и отправляет контрагенту отказ от подписи документа. Контрагент получает уведомление, что его документ не будет подписан.

# Параметр Тип Обяз. Описание
0 Файлы (id, versionId, attachmentId) List<SbisFileWithAttachment> Список файлов отказа от подписи в формате СБИС, полученных действием «Создать файлы отказа от подписи»
1 ID сервиса int? Идентификатор настройки подключения к СБИС
2 Подпись string Электронная подпись в формате Base64
3 Комментарий string Произвольный текстовый комментарий к отказу
4 МЧД string Машиночитаемая доверенность в формате JSON

СБИС — Аннулирование документов

Сценарий A: Аннулирование инициируем МЫ

1. Создать файл аннулирования подписи
2. Отправить подписанные соглашения об аннулировании
   ↓ контрагент соглашается → документ аннулирован
   ↓ контрагент отказывает → приходит новый документ со статусом finished

Сценарий Б: Аннулирование инициирует КОНТРАГЕНТ

Файлы аннулирования приходят в событии receive
→ скачиваются действием «СБИС — Сохранить контент электронного документа»
   ├─ Соглашаемся → Отправить соглашение об аннулировании
   └─ Не соглашаемся → Создать файлы отказа от аннулирования
                      → Отправить отказ от аннулирования

СБИС — Создать файл аннулирования подписи

Enum: SbisGenerateRevocationTitle = 169 Файл: StandartActionSbisGenerateRevocationTitle.cs Исполнение: синхронный → IEdocumentSbisService.GenerateRevocationSignature Возвращает: List<SbisFileWithAttachment> Сценарий: инициируем аннулирование МЫ

Что делает и зачем: Формирует файл запроса на аннулирование ранее подписанного документа. Первый шаг когда клиент сам инициирует аннулирование. Результат передаётся в действие «Отправить подписанные соглашения об аннулировании».

# Параметр Тип Обяз. Описание
0 ID файла FileFromLibrary Ссылка на аннулируемый документ
1 Причина аннулирования string Текстовое пояснение причины аннулирования. Отображается контрагенту
2 Отпечаток сертификата string Отпечаток сертификата ЭП инициатора аннулирования
3 ID сервиса int? Идентификатор настройки подключения к СБИС
4 МЧД string Машиночитаемая доверенность в формате JSON

СБИС — Отправить подписанные соглашения об аннулировании

Enum: SbisAttachRevocationSignature = 159 Файл: StandartActionSbisAttachRevocationSignature.cs Исполнение: очередь Используется совместно с: «СБИС — Создать файл аннулирования подписи» Сценарий: инициируем аннулирование МЫ

Что делает и зачем: Подписывает и отправляет контрагенту запрос на аннулирование. После отправки контрагент должен либо согласиться, либо отклонить.

# Параметр Тип Обяз. Описание
0 Файлы List<SbisFileWithAttachment> Список файлов аннулирования в формате СБИС, полученный из действия «Создать файл аннулирования подписи»
1 ID сервиса int? Идентификатор настройки подключения к СБИС
2 Подпись string Электронная подпись в формате Base64
3 Комментарий string Произвольный текстовый комментарий к запросу аннулирования
4 МЧД string Машиночитаемая доверенность в формате JSON

СБИС — Отправить соглашение об аннулировании

Enum: SbisAttachRevocationRequestedSignature = 167 Файл: StandartActionSbisAttachRevocationRequestedSignature.cs Исполнение: очередь Сценарий: аннулирование инициировал КОНТРАГЕНТ, мы СОГЛАШАЕМСЯ

Что делает и зачем: Подтверждает аннулирование, запрошенное контрагентом. Файлы аннулирования приходят от контрагента в событии receive и предварительно скачиваются действием «СБИС — Сохранить контент электронного документа».

# Параметр Тип Обяз. Описание
0 Файлы (id, versionId, attachmentId) List<SbisFileWithAttachment> Список файлов аннулирования, пришедших от контрагента в событии receive и скачанных действием «СБИС — Сохранить контент электронного документа»
1 ID сервиса int? Идентификатор настройки подключения к СБИС
2 Подпись string Электронная подпись в формате Base64
3 Комментарий string Произвольный текстовый комментарий
4 МЧД string Машиночитаемая доверенность в формате JSON

СБИС — Создать файлы отказа от аннулирования

Enum: GenerateRevocationRejectionSbisSignature = 170 Файл: StandartActionGenerateRevocationRejectionSbisSignature.cs Исполнение: синхронный → IEdocumentSbisService.GenerateRevocationRejectionSignature Возвращает: List<SbisFileWithAttachment> Сценарий: аннулирование инициировал КОНТРАГЕНТ, мы НЕ СОГЛАШАЕМСЯ

Что делает и зачем: Формирует файл для отказа от аннулирования, запрошенного контрагентом. Документ остаётся юридически действующим.

# Параметр Тип Обяз. Описание
0 ID файла FileFromLibrary Ссылка на документ, по которому контрагент прислал запрос аннулирования
1 Причина отказа string Текстовое обоснование отказа от аннулирования
2 Отпечаток сертификата string Отпечаток сертификата ЭП в формате HEX
3 ID сервиса int? Идентификатор настройки подключения к СБИС
4 МЧД string Машиночитаемая доверенность в формате JSON

СБИС — Отправить отказ от аннулирования

Enum: SbisAttachRevocationRejectionSignature = 160 Файл: StandartActionSbisAttachRevocationRejectSignature.cs Исполнение: очередь Сценарий: аннулирование инициировал КОНТРАГЕНТ, мы НЕ СОГЛАШАЕМСЯ

Что делает и зачем: Отправляет контрагенту подписанный отказ от аннулирования. Документ остаётся в силе.

# Параметр Тип Обяз. Описание
0 Файлы (id, versionId, attachmentId) List<SbisFileWithAttachment> Список файлов отказа от аннулирования, полученный из действия «Создать файлы отказа от аннулирования»
1 ID сервиса int? Идентификатор настройки подключения к СБИС
2 Подпись string Электронная подпись в формате Base64
3 Комментарий string Произвольный текстовый комментарий к отказу
4 МЧД string Машиночитаемая доверенность в формате JSON

СБИС — Создать файл извещения о получении

Enum: GenerateInvoiceSbis = 174 Файл: StandartActionGenerateInvoiceSbis.cs Исполнение: синхронный → IEdocumentSbisService.GenerateInvoiceReceiptXml Возвращает: List<SbisFileWithAttachment>

Что делает и зачем: Формирует XML-файл извещения о получении документа от контрагента в форматах СБИС.

# Параметр Тип Обяз. Описание
0 ID файла FileFromLibrary Ссылка на полученный от контрагента документ (счёт-фактура или КСФ), для которого формируется извещение
1 Отпечаток сертификата string Отпечаток сертификата ЭП клиента, которым будет подписано извещение
2 ID сервиса int? Идентификатор настройки подключения к СБИС
3 МЧД string Машиночитаемая доверенность в формате JSON

СБИС — Отправить подписанное извещение о получении

Enum: SbisAttachInvoiceSignature = 175 Файл: StandartActionSbisAttachInvoiceSignature.cs Исполнение: очередь Используется совместно с: «СБИС — Создать файл извещения о получении»

Что делает и зачем: Подписывает и отправляет извещение о получении контрагенту. Завершает обязательный технологический обмен.

# Параметр Тип Обяз. Описание
0 Файлы List<SbisFileWithAttachment> Список файлов извещения, полученный из действия «Создать файл извещения о получении»
1 ID сервиса int? Идентификатор настройки подключения к СБИС
2 Подпись string Электронная подпись в формате Base64
3 Комментарий string Произвольный текстовый комментарий к извещению
4 МЧД string Машиночитаемая доверенность в формате JSON

СБИС — Сохранить контент электронного документа

Enum: SbisSaveDocumentContent = 156 Файл: StandartActionSbisSaveDocumentContent.cs Исполнение: синхронный, контекст EdocumentSbisLinkIEdocumentSbisService.SaveEdocumentContentByLink Возвращает: FileFromLibrary

Что делает и зачем: Скачивает содержимое электронного документа из СБИС и сохраняет в хранилище 1Ф. Используется также для скачивания файлов аннулирования, присланных контрагентом в событии receive.

# Параметр Тип Обяз. Описание
0 ID ссылки на электронный документ int Идентификатор записи EdocumentSbisLink — внутренней ссылки, связывающей документ в СБИС с объектами системы 1Ф
1 ID сервиса int? Идентификатор настройки подключения к СБИС

СБИС — Сохранить печатную форму электронного документа

Enum: SbisSavePrintFormByLink = 157 Файл: StandartActionSbisSavePrintFormByLink.cs Исполнение: синхронный (async через Task.Run), контекст EdocumentSbisLink Возвращает: string

Что делает и зачем: Скачивает PDF-печатную форму документа от контрагента из СБИС и сохраняет в хранилище 1Ф.

# Параметр Тип Обяз. Описание
0 ID ссылки на электронный документ int Идентификатор записи EdocumentSbisLink
1 ID сервиса int? Идентификатор настройки подключения к СБИС

СБИС — Сохранить архив документа

Enum: SbisSaveArchiveByLink = 158 Файл: StandartActionSbisSaveArchiveByLink.cs Исполнение: синхронный (async через Task.Run), контекст EdocumentSbisLink Возвращает: string

Что делает и зачем: Скачивает ZIP-архив документа со всеми подписями из СБИС и сохраняет в хранилище 1Ф. Для долгосрочного архивного хранения.

# Параметр Тип Обяз. Описание
0 ID ссылки на электронный документ int Идентификатор записи EdocumentSbisLink
1 ID сервиса int? Идентификатор настройки подключения к СБИС

СБИС — Получить статус МЧД

Enum: GetMCHDStatusSbis = 172 Файл: StandartActionGetMCHDStatusSbis.cs Исполнение: синхронный → IEdocumentSbisService.GetMchdStatus Возвращает: string (статус)

Что делает и зачем: Проверяет статус машиночитаемой доверенности по её идентификатору. Используется перед подписанием чтобы убедиться что доверенность действительна и не отозвана.

# Параметр Тип Обяз. Описание
0 Идентификатор МЧД string Идентификатор машиночитаемой доверенности в реестре ФНС
1 ID сервиса int? Идентификатор настройки подключения к СБИС

СБИС — Получить архив МЧД

Enum: GetMCHDArchiveSbis = 173 Файл: StandartActionGetMCHDArchiveSbis.cs Исполнение: синхронный → IEdocumentSbisService.GetMchdArchive Возвращает: int? (ID сохранённого файла)

Что делает и зачем: Скачивает архив МЧД из СБИС и сохраняет в хранилище 1Ф. ИНН обеих сторон используются для однозначной идентификации доверенности, так как по одному номеру МЧД может быть несколько доверенностей для разных пар сторон.

# Параметр Тип Обяз. Описание
0 Идентификатор МЧД string Идентификатор машиночитаемой доверенности в реестре ФНС
1 ИНН доверителя string ИНН организации, выдавшей доверенность (работодатель подписанта)
2 ИНН представителя string ИНН физического лица, которому выдана доверенность (подписант)
3 ID сервиса int? Идентификатор настройки подключения к СБИС

СБИС — Получить сертификаты

Enum: SbisGetCertificates = 176 Файл: StandartActionSbisGetCertificates.cs Исполнение: синхронный → IEdocumentSbisService.GetCertificates Возвращает: string (JSON)

Что делает и зачем: Ищет сертификаты электронной подписи в реестре СБИС по реквизитам физлица. Используется для поиска актуального сертификата сотрудника перед подписанием, когда отпечаток сертификата неизвестен заранее.

# Параметр Тип Обяз. Описание
0 ID сервиса int Идентификатор настройки подключения к СБИС. Единственный обязательный параметр; остальные — критерии поиска, передаются в любой комбинации
1 Идентификатор string Идентификатор физлица в системе СБИС (внутренний UUID). Наиболее точный способ поиска
2 Идентификатор в ИС string Идентификатор физлица во внешней информационной системе, зарегистрированной в СБИС (например, идентификатор в кадровой системе клиента)
3 ИНН string ИНН физического лица
4 Телефон string Номер мобильного телефона физлица
5 Email string Адрес электронной почты физлица
6 СНИЛС string СНИЛС физического лица
7 Серия документа string Серия документа, удостоверяющего личность
8 Номер документа string Номер документа, удостоверяющего личность

СБИС — Получить тэги документа

Enum: SbisGetDocumentTags = 161 Файл: StandartActionSbisGetDocumentTags.cs Исполнение: синхронный → IEdocumentSbisService.GetDocumentTags Возвращает: Dictionary<string, string>

Что делает и зачем: Возвращает теги документа из СБИС в виде пар ключ-значение. Используется для получения дополнительных метаданных входящего документа.

# Параметр Тип Обяз. Описание
0 ID ссылки на электронный документ int Идентификатор записи EdocumentSbisLink
1 ID сервиса int? Идентификатор настройки подключения к СБИС

СБИС — Синхронизировать статусы документов в сообщении

Enum: SyncMessageStatusSbis = 188 Файл: StandartActionsSyncMessageStatusSbis.cs Исполнение: синхронный → IEdocumentSbisService.GetStatusesFromMessage Возвращает: string

Что делает и зачем: Принудительно синхронизирует статусы документов по списку MessageId из СБИС. В отличие от аналогичного действия Диадок, работает полностью автоматически: сравнивает статусы, полученные из СБИС, со статусами в таблице EdocumentSbisLink, и по всем документам, где обнаружено расхождение, самостоятельно ставит в очередь событие change. Дальнейшая обработка запускается стандартным механизмом обработки событий — без ручного разбора результата.

Нужен когда автоматическая синхронизация через SyncEdocumentsFromSbisJob не сработала или требуется срочно актуализировать конкретные документы.

# Параметр Тип Обяз. Описание
0 Список ID сообщений string[] Массив MessageId сообщений СБИС, статусы документов в которых нужно синхронизировать. Для документов с расхождением статусов автоматически генерируется событие change
1 ID сервиса int? Идентификатор настройки подключения к СБИС

Сравнительная таблица покрытия функциональности

Функция Диадок СБИС
Отправка документа ✓ (16 параметров) ✓ (8 параметров)
Сохранить контент
Сохранить печатную форму
Сохранить архив ✓ (+ флаг «весь документооборот»)
Сохранить контент аннулирования ✓ (через SaveDocumentContent)
Генерация XML-титула покупателя ✓ (пустой + с готовым XML)
Ответить титулом
Подтверждение подписи — создать файл ✓ (для XML-документов)
Отказ от подписи — создать файл ✓ + Universal
Отказ от подписи — отправить ✓ + Universal
Аннулирование (мы инициируем) — создать
Аннулирование (мы инициируем) — отправить
Аннулирование (контрагент инициирует) — согласиться
Аннулирование (контрагент инициирует) — отклонить, создать файл ✓ + Universal
Аннулирование (контрагент инициирует) — отклонить, отправить ✓ + Universal
Извещение о получении — создать
Извещение о получении — отправить ✓ Universal
Получить статус МЧД ✓ (по MessageId+ContentId) ✓ (по ID МЧД)
Получить файлы МЧД контрагента
Получить ID МЧД пользователя
Получить архив МЧД ✓ (с ИНН сторон)
Получить сертификаты ✓ (поиск по 8 реквизитам)
Получить теги документа
Получить контрагентов
Получить пропущенный документ
Синхронизировать статусы пакетом ✓ (возврат JSON, ручной разбор) ✓ (авто, массив messageId)

Ключевые архитектурные наблюдения

1. Разные сервисы и неймспейсы. Диадок: IEdocumentService (TCInterfaces.Edocument). СБИС: IEdocumentSbisService (Valhalla.Interfaces.Edocument). Разные интерфейсы, разные реализации, независимые очереди.

2. Universal = новые версии Диадок-действий. Суффикс Universal означает расширенный набор параметров — явный отпечаток сертификата и/или причина отказа. Базовые версии сохранены для обратной совместимости.

3. SbisFileWithAttachment — специфика СБИС. В СБИС один документ может иметь несколько вложений (AttachmentId). Структура SbisFileWithAttachment с полями FileId, VersionId, AttachmentId, DocumentId — требование API СБИС, которого нет в Диадок.

4. Диадок богаче в отправке. 16 параметров в SendEdocument против 8 в СБИС отражают более развитый API Диадок для формализованных документов.

5. СБИС богаче в поиске и МЧД. Поиск сертификатов по 8 реквизитам физлица, получение архива МЧД с ИНН сторон, пакетная синхронизация — функции без аналогов в Диадок.

6. Async через Task.Run. SavePrintForm и SaveArchive у обоих провайдеров используют Task.Run(...).Result — синхронная обёртка над async из-за синхронной природы движка смарт-действий.

7. МЧД во всех операциях подписания. Параметр МЧД (JSON, EdocumentMchd) присутствует во всех действиях, связанных с подписью. Реализует поддержку подписания по машиночитаемой доверенности (63-ФЗ, действует с 2023).

8. Пакетная отправка в СБИС. Действие «Отправить подписание» передаёт массив файлов и отправляет подписание сразу по всем документам — в отличие от Диадок, где каждый документ обрабатывается отдельно.