Доступна более новая версия документации данного модуля.

См. последнюю версию

Разработка компонента сервиса ответных сообщений

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

OutgoingMessagesService outgoingMessagesService = new OutgoingMessagesService(cardControl.ObjectContext); (1)

EdiMessage messageCard = outgoingMessagesService.FindIncomingMessageCards(cardId).FirstOrDefault(); (2)

(3)


DocumentUpdaterService documentUpdaterService = new DocumentUpdaterService(objectContext); (4)

Guid newSignatureGroupId = documentUpdaterService.CreateNewSignatures(cardId, certificate, false); (5)

(6)

DataReaderService dataReaderService = new DataReaderService(objectContext); (7)

ItemCollection<DocumentFileData> signedFiles = dataReaderService.GetSignedFiles(cardId, newSignatureGroupId); (8)

if (outgoingMessagesService.CreateOutgoingSignatureReplies(cardId, signedFiles).Any())
{

} (9)
else
{
(10)
}
1 Сервис отправки исходящих событий.
2 Поиск карточки сообщений, для которой нужен ответ, для документа cardId.
3 Данный момент можно пропустить, если уже есть готовая ответная подпись.
Будьте внимательны, при пропуске существует риск отправить оригинальную подпись контрагента как ответную.
4 Сервис изменения документа.
5 X509Certificate2 certificate на входе — это сертификат, которым делаем новые подписи.
6 Конец создания новой подписи.
7 Сервис чтения данных из карточек.
8 Получаем свежеподписанные файлы.
При наличии готовой ответной подписи, newSignatureGroupId — это ID подписи из списка подписей.
9 Все хорошо, подписи отправили.
Ответные подписи успешно отправлены.
10 По карточке сообщения уже некому отправлять ответ — отработал другой скрипт, кто-то отправил руками и т.п.
Не существует связанных писем в ящике ЮЗДО, ожидающих ответных действий по ним. Отправка произведена не будет.

Далее приведён пример отправки отказа от подписи, сервисы те же, что в предыдущем примере:

outgoingMessagesService.CreateOutgoingRejectionReplies(cardId, commentText, certificate); (1)
1 commentText — причина отказа, X509Certificate2 certificate — сертификат.

Следующий пример демонстрирует отправку положительного ответа на УПД или УКД:

string invoiceReplyData = dataReaderService.GetInvoiceReplyData(cardId); (1)

if (outgoingMessagesService.CreateOutgoingInvoiceReplies(cardId, certificate, invoiceReplyData).Any()) (2)
{
(3)
}
else
{
(4)
}
1 Получение данных ответа для ответа из карточки.
2 Генерация файла ответа, подписание его сертификатом X509Certificate2 certificate, отправка.
3 Отправили успешно.
4 Не отправили, то же, что и для неформализованных.