Как отправить и получить товарную накладную ТОРГ-12 в рекомендованном ФНС формате¶

Как отправить и получить товарную накладную ТОРГ-12 в рекомендованном ФНС формате¶

Рассмотрим последовательность действий к функциям интеграторского интерфейса Диадока, которые требуется совершить при отправке товарной накладной ТОРГ-12.

  1. Продавец формирует файл титула продавца, подписывает и направляет покупателю.
  2. Покупатель получает товарную накладную, подписанную и отправленную продавцом;
  3. Покупатель формирует файл титула покупателя, подписывает своей ЭП и отправляет в адрес продавца.

Более подробно о порядке обмена электронными накладными между компаниями можно почитать на сайте

Формирование файла титула продавца для товарной накладной ТОРГ-12¶

Если на стороне интеграционного решения не предусмотрено функциональности для формирования XML-документов, соответствущих утвержденным форматам, то продавец может сгенерировать файл титула, используя команду GenerateTorg12XmlForSeller .

В теле запроса должны содержаться данные для изготовления титула продавца для товарной накладной ТОРГ-12 в XML-формате в виде сериализованной структуры Torg12SellerTitleInfo .

HTTP-запрос для генерации файла титула продавца товарной накладной ТОРГ-12 выглядит следующим образом:

В теле ответа содержится XML-файл титула продавца, построенный на основании данных из запроса.

Успешный ответ сервера выглядит так:

Файл генерируется в соответствии с XML-схемой , которой должны удовлетворять XML-накладные, согласно приказу ФНС.

Имя файла титула продавца для товарной накладной возвращается в стандартном HTTP-заголовке Content-Disposition .

Отправка файла титула продавца для товарной накладной ТОРГ-12¶

После того, как у вас есть XML-файл титула продавца, его нужно отправить с помощью команды PostMessage .

Для этого нужно подготовить структуру MessageToPost следующим образом:

в значение атрибута FromBoxId указываем идентификатор ящика отправителя;

в значение атрибута ToBoxId указываем идентификатор ящика получателя;

для передачи XML-файла титула продавца товарной накладной ТОРГ-12 нужно использовать атрибут XmlTorg12SellerTitles, описываемый структурой XmlDocumentAttachment:

  • внутри структуры XmlDocumentAttachment находится вложенная структура SignedContent;
  • сам XML-файл нужно передать в атрибут Content, подпись продавца в атрибут Signature.

Описание структур, используемых при отправке товарной накладной ТОРГ-12:

После отправки в теле ответа будет содержаться отправленное сообщение, сериализованное в протобуфер Message .

Все дальнейшие действия происходят на стороне покупателя.

Поиск товарной накладной ТОРГ-12¶

Сначала покупателю необходимо найти все входящие товарные накладные ТОРГ-12, которые требуется обработать. Для этого нужно воспользоваться методом GetDocuments :

  • в значении параметра boxId указываем идентификатор ящика, в котором следует выполнить поиск входящих документов;
  • в параметр filterCategory указываем статус и тип документа: XmlTorg12.InboundNotFinished .

Пример запроса на получение товарной накладной ТОРГ-12 выглядит следующим образом:

В теле ответа вернется список документов в виде структуры DocumentList с вложенной структурой Document. Для каждого из этих документов запоминаем: MessageId, EntityId.

Получение товарной накладной ТОРГ-12¶

Теперь необходимо получить найденную товарную накладную XmlTorg12 .

Чтобы получить товарную накладную ТОРГ-12 нужно вызвать метод GetMessage и указать нужные GET-параметры boxId , messageId , entityId .

BoxId - это идентификатор ящика получателя, messageId - идентификатор полученного сообщения с накладной ТОРГ-12, entityId - идентификатор товарной накладной. Их можно взять из структуры Message .

Пример структуры товарной накладной ТОРГ-12 XmlTorg12 в теле ответа:

Формирование файла титула покупателя для товарной накладной ТОРГ-12¶

Файл титула покупателя можно сформировать как на стороне интеграционного решения, так и используя команду GenerateTorg12XmlForBuyer . Для этого надо передать следующие параметры:

  • boxId - идентификатор ящика получателя;
  • sellerTitleMessageId - идентификатор сообщения, содержащего соответствующий титул продавца;
  • sellerTitleAttachmentId - идентификатор сущности, представляющей титул продавца, для которого требуется изготовить титул покупателя.

Эти идентификаторы соответствуют идентификаторам из параметров boxId , messageId , entityId для метода GetMessage .

В теле запроса должны содержаться данные для изготовления титула покупателя для товарной накладной ТОРГ-12 в XML-формате в виде сериализованной структуры Torg12BuyerTitleIhfo .

HTTP-запрос для генерации файла титула покупателя товарной накладной ТОРГ-12 выглядит следующим образом:

В теле ответа содержится XML-файл титула покупателя, построенный на основании XML-файла титула продавца и данных из запроса.

Успешный ответ сервера выглядит так:

Файл генерируется в соответствии с XML-схемой , которой должны удовлетворять XML-накладные, согласно приказу ФНС.

Имя файла титула покупателя для товарной накладной возвращается в стандартном HTTP-заголовке Content-Disposition .

Отправка файла титула покупателя для товарной накладной ТОРГ-12¶

После того, как у вас есть XML-файл титула покупателя, его нужно отправить с помощью команды PostMessagePatch .

Для этого нужно подготовить структуру MessagePatchToPost следующим образом:

в значение атрибута BoxId указываем идентификатор ящика, в котором находится исходное сообщение;

в значение атрибута MessageId указываем идентификатор сообщения, к которому относится отправляемый патч;

для передачи XML-файла титула продавца товарной накладной ТОРГ-12 нужно использовать атрибут XmlTorg12BuyerTitles, описываемый структурой ReceiptAttachment:

  • ParentEntityId - идентификатор документа, к которому относится титул покупателя; это идентификатор соответствующей сущности из родительского сообщения (поле EntityId в структуре Entity .);

  • внутри структуры ReceiptAttachment находится вложенная структура SignedContent;
  • сам XML-файл нужно передать в атрибут Content, подпись продавца в атрибут Signature.

Описание структур, используемых при отправке товарной накладной ТОРГ-12:

После отправки в теле ответа будет содержаться отправленное дополнение, сериализованное в протобуфер MessagePatch .

Пример кода на C# для отправки файла титула продавца для товарной накладной ТОРГ-12:

Пример кода на C# для получения файла титула продавца для товарной накладной ТОРГ-12 и отправки файла титула покупателя:

📎📎📎📎📎📎📎📎📎📎