Смарт-действия ЭДО: Диадок и СБИС¶
Документ охватывает все смарт-действия, связанные с электронным документооборотом через Диадок и СБИС. Расположение файлов:
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
Исполнение: синхронный, контекст EdocumentLink → IEdocumentService.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
Исполнение: синхронный, контекст EdocumentLink → IEdocumentService.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
Исполнение: синхронный, контекст EdocumentSbisLink → IEdocumentSbisService.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 | 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. Пакетная отправка в СБИС. Действие «Отправить подписание» передаёт массив файлов и отправляет подписание сразу по всем документам — в отличие от Диадок, где каждый документ обрабатывается отдельно.