Работа с печатными формами

Диадок позволяет получить печатную форму для формализованных документов, чтобы отобразить их пользователю в удобном и понятном формате.

Печатную форму документа можно сформировать как до, так и после его отправки в Диадок.

Генерация печатной формы

Печатную форму можно использовать для отображения содержимого XML-файла формализованного документа в понятном человеку виде. Кроме самого документа форма содержит штамп оператора. В нем указана информация об идентификаторе документа в Диадоке, его подписанте, сертификате квалифицированной электронной подписи и дате подписания документа. Печатная форма со штампом сама по себе не является юридически значимым документом: она предназначена только для просмотра документа.

Сгенерировать печатную форму документа можно с помощью метода GeneratePrintForm.

Пример HTTP-запроса метода GeneratePrintForm:

GET /GeneratePrintForm?boxId={{boxId}}&messageId={{messageId}}&documentId={{documentId}} HTTP/1.1
Host: diadoc-api.kontur.ru
Authorization: Bearer {{access_token}}
Accept: application/json; charset=utf-8

Генерация печатной формы по содержимому документа

С помощью метода GeneratePrintFormFromAttachment можно сформировать печатную форму для формализованного документа, не отправленного в Диадок. Так можно предварительно ознакомиться с внешним видом документа и сравнить, как меняется печатная форма в зависимости от указанного типа.

Исходный документ нужно передать в теле запроса метода GeneratePrintFormFromAttachment. В ответе метод вернет идентификатор, который нужно передать в методе GetGeneratedPrintForm. Если у переданного документа отсутствует стандартная печатная форма, метод вернет нечитаемую версию с XML-содержимым вне зависимости от наличия у ящика нестандартной формы.

Пример HTTP-запроса метода GeneratePrintFormFromAttachment:

POST /GeneratePrintFormFromAttachment?documentType=UniversalTransferDocument&fromBoxId={{boxId}} HTTP/1.1
Host: diadoc-api.kontur.ru
Authorization: Bearer {{access_token}}
Accept: application/json; charset=utf-8
Content-Type: application/xml

Пример тела запроса метода GeneratePrintFormFromAttachment:

<Файл ИдФайл="ON_NSCHFDOPPR_2BM-9677800047-967701000-202207281004154081709_2BM-9681265956-968101000-202207281000014689156_20250116_8c703486-75df-46f8-8f0a-959b09f807a9_1_1_0_0_1_00" ВерсФорм="5.03" ВерсПрог="Diadoc 1.0">
  <Документ КНД="1115131" ВремИнфПр="18.13.16" ДатаИнфПр="16.01.2025" Функция="СЧФДОП" ПоФактХЖ="Документ об отгрузке товаров (выполнении работ), передаче имущественных прав (документ об оказании услуг)" НаимДокОпр="Документ о передаче товаров (работ, услуг, имущественных прав)" УИД="UID" НаимЭконСубСост="Документ-НаимЭконСубСост" СоглСтрДопИнф="1111.2222.0000">
    <СвСчФакт НомерДок="123" ДатаДок="01.02.2023" ИмяФайлИспрПрод="СвСчФакт-ИмяФайлИспрПрод" ИмяФайлИспрПок="СвСчФакт-ИмяФайлИспрПок">
      <СвПрод ОКПО="0166273597" КодОПФ="12200" ПолнНаимОПФ="СвПрод-ПолнНаимОПФ" СтруктПодр="СвПрод-СтруктПодр" ИнфДляУчаст="СвПрод-ИнфДляУчаст" СокрНаим="СвПрод-СокрНаим">
        <ИдСв>
          <СвЮЛУч НаимОрг="СвЮЛУч-НаимОрг" ИННЮЛ="9103624367" КПП="187245452" />
        </ИдСв>
        <Адрес>
          <АдрРФ КодРегион="72" НаимРегион="Тюменская область" Индекс="344249" Район="Тюмень" Город="Тюмень" НаселПункт="АдрРФ-НаселПункт" Улица="АдрРФ-Улица" Дом="АдрРФ-Дом" Корпус="АдрРФ-Корпус" Кварт="АдрРФ-Кварт" ИныеСвед="АдрРФ-ИныеСвед" />
        </Адрес>
        <БанкРекв НомерСчета="49634485849155">
          <СвБанк НаимБанк="СИБИРСКИЙ БАНК ПАО СБЕРБАНК" БИК="045004641" КорСчет="30101810500000000641" />
        </БанкРекв>
        <Контакт ИнКонт="Контакт-ИнКонт">
          <Тлф>8-343-123-4567</Тлф>
          <ЭлПочта>email@google.com</ЭлПочта>
        </Контакт>
      </СвПрод>
      <ГрузОт>
        <ГрузОтпр ОКПО="76098674" КодОПФ="12000" ПолнНаимОПФ="ГрузОтпр-ПолнНаимОПФ" СтруктПодр="ГрузОтпр-СтруктПодр" ИнфДляУчаст="ГрузОтпр-ИнфДляУчаст" СокрНаим="ГрузОтпр-СокрНаим">
          <ИдСв>
            <СвИП ИННФЛ="753381367749" СвГосРегИП="СвИП-СвГосРегИП" ОГРНИП="421319982803452" ДатаОГРНИП="12.12.2012" ИныеСвед="СвИП-ИныеСвед">
              <ФИО Фамилия="Иванов" Имя="Иван" Отчество="Иванович" />
            </СвИП>
          </ИдСв>
          <Адрес>
            <АдрГАР ИдНом="03510210-e5f3-4bc6-bbd2-24d7fe25b3ed" Индекс="450133">
              <Регион>72</Регион>
              <НаимРегион>Тюменская область</НаимРегион>
              <МуниципРайон ВидКод="1" Наим="МуниципРайон-Наим" />
              <ГородСелПоселен ВидКод="1" Наим="ГородСелПоселен-Наим" />
              <НаселенПункт Вид="НаселенПункт" Наим="НаселенПункт-Наим" />
              <ЭлПланСтруктур Тип="ЭлПланСтруктур" Наим="ЭлПланСтруктур-Наим" />
              <ЭлУлДорСети Тип="ЭлУлДорСети" Наим="ЭлУлДорСети-Наим" />
              <ЗемелУчасток>ЗемелУчасток</ЗемелУчасток>
              <Здание Тип="Здание" Номер="Здание-Номер" />
              <ПомещЗдания Тип="ПомещЗдания" Номер="ПомещЗдания-Номер" />
              <ПомещКвартиры Тип="ПомещКвартиры" Номер="ПомещКвартиры-Номер" />
            </АдрГАР>
          </Адрес>
        </ГрузОтпр>
      </ГрузОт>
      <ГрузПолуч ОКПО="18989253" КодОПФ="12000" ПолнНаимОПФ="ГрузПолуч-ПолнНаимОПФ" СтруктПодр="ГрузПолуч-СтруктПодр" ИнфДляУчаст="ГрузПолуч-ИнфДляУчаст" СокрНаим="ГрузПолуч-СокрНаим">
        <ИдСв>
          <СвФЛУч ИННФЛ="518191632595" ИдСтатЛ="1" ИныеСвед="СвФЛУч-ИныеСвед">
            <ФИО Фамилия="Петров" Имя="Петр" Отчество="Петрович" />
          </СвФЛУч>
        </ИдСв>
        <Адрес>
          <АдрИнф КодСтр="112" НаимСтран="Беларусь" АдрТекст="АдрИнф-АдрТекст" />
        </Адрес>
        <БанкРекв НомерСчета="569712456874">
          <СвБанк НаимБанк="ЗАО Сбербанк России, отделение на Московской 11" БИК="012345671" />
        </БанкРекв>
      </ГрузПолуч>
      <СвПРД НомерПРД="СЧФ/123/456" ДатаПРД="01.02.2023" СуммаПРД="1000.00" />
      <ДокПодтвОтгрНом РеквНаимДок="Документ о передаче товаров (работ, услуг, имущественных прав)" РеквНомерДок="123" РеквДатаДок="01.02.2023">
        <РеквИдРекСост>
          <ИННЮЛ>1978337389</ИННЮЛ>
        </РеквИдРекСост>
      </ДокПодтвОтгрНом>
      <СвПокуп ОКПО="74047744" КодОПФ="12200" ПолнНаимОПФ="СвПокуп-ПолнНаимОПФ" СтруктПодр="СвПокуп-СтруктПодр" ИнфДляУчаст="СвПокуп-ИнфДляУчаст" СокрНаим="СвПокуп-СокрНаим">
        <ИдСв>
          <СвЮЛУч НаимОрг="СвЮЛУч-НаимОрг" ИННЮЛ="1234567894" КПП="667301001" />
        </ИдСв>
        <Адрес>
          <АдрИнф КодСтр="112" НаимСтран="Беларусь" АдрТекст="АдрИнф-АдрТекст" />
        </Адрес>
      </СвПокуп>
      <ДенИзм КодОКВ="643" НаимОКВ="Российский рубль" КурсВал="12" />
      <ДопСвФХЖ1 ИдГосКон="1234567890123456789012345" СпОбстФСЧФДОП="12345">
        <ВидОбяз КодВидОбяз="1" НаимВидОбяз="ВидОбяз-НаимВидОбяз" />
        <ИнфПродЗаГоскКазн ДатаГосКонт="02.02.2022" НомерГосКонт="5" КодКазначПрод="0160" />
        <СвФактор ОКПО="74047744" КодОПФ="12000" ПолнНаимОПФ="СвФактор-ПолнНаимОПФ" СтруктПодр="СвФактор-СтруктПодр" ИнфДляУчаст="СвФактор-ИнфДляУчаст" СокрНаим="СвФактор-СокрНаим">
          <ИдСв>
            <СвИП ИННФЛ="916363626153" ОГРНИП="421032906553286" ДатаОГРНИП="21.08.2019" ИныеСвед="СвИП-ИныеСвед">
              <ФИО Фамилия="ФИО-Фамилия" Имя="ФИО-Имя" Отчество="ФИО-Отчество" />
            </СвИП>
          </ИдСв>
          <Адрес>
            <АдрРФ КодРегион="72" НаимРегион="Тюменская область" Индекс="344249" Район="Тюмень" Город="Тюмень" НаселПункт="АдрРФ-НаселПункт" Улица="АдрРФ-Улица" Дом="АдрРФ-Дом" Корпус="АдрРФ-Корпус" Кварт="АдрРФ-Кварт" ИныеСвед="АдрРФ-ИныеСвед" />
          </Адрес>
        </СвФактор>
        <ОснУстДенТреб РеквНаимДок="ОснУстДенТреб-РеквНаимДок" РеквНомерДок="144" РеквДатаДок="04.04.2004">
          <РеквИдРекСост>
            <ИННФЛ>342265432525</ИННФЛ>
          </РеквИдРекСост>
        </ОснУстДенТреб>
        <СопрДокФХЖ РеквНаимДок="СопрДокФХЖ-РеквНаимДок" РеквНомерДок="876" РеквДатаДок="05.05.2005">
          <РеквИдРекСост>
            <ДаннИно КодСтр="112" НаимСтран="Беларусь" Наим="ДаннИно-Наим" ИдСтат="ИГ" ИныеСвед="ДаннИно-ИныеСвед" Идентиф="ДаннИно-Идентиф" />
          </РеквИдРекСост>
        </СопрДокФХЖ>
      </ДопСвФХЖ1>
      <ИнфПолФХЖ1 ИдФайлИнфПол="5b0a8e80-1a7b-4194-a64d-60ca9f10dd82">
        <ТекстИнф Идентиф="ТекстИнф-Идентиф" Значен="ТекстИнф-Идентиф" />
      </ИнфПолФХЖ1>
    </СвСчФакт>
    <ТаблСчФакт>
      <СведТов НомСтр="1" НалСт="20%" НаимТов="СведТов-НаимТов" ОКЕИ_Тов="113" НаимЕдИзм="м3" КолТов="16" ЦенаТов="200.00" СтТовБезНДС="654.00" СтТовУчНал="784.80">
        <СвДТ КодПроисх="980" НомерДТ="123456" />
        <ДопСведТов ПрТовРаб="5" ДопПризн="Приз" НадлОтп="102" СортТов="СортТов" СерияТов="ДопСведТов-СерияТов" ГТИН="10000057074365" КодВидТов="1111111111" КодВидПр="676">
          <КрНаимСтрПр>Евросоюз</КрНаимСтрПр>
          <СопрДокТов РеквНаимДок="СопрДокТов-РеквНаимДок" РеквНомерДок="144" РеквДатаДок="04.04.2004">
            <РеквИдРекСост>
              <ИННФЛ>342265432525</ИННФЛ>
            </РеквИдРекСост>
          </СопрДокТов>
          <НалУчАморт АмГруппа="13" КодОКОФ="165" СрПолИспОС="23" ФактСрокИсп="100" />
          <СумНалВосст>
            <СумНал>550.00</СумНал>
          </СумНалВосст>
          <СведПрослеж НомТовПрослеж="10001000/010123/1234567/001" ЕдИзмПрослеж="778" КолВЕдПрослеж="30" СтТовБезНДСПрослеж="100" НаимЕдИзмПрослеж="упак" />
          <НомСредИдентТов ИдентТрансУпак="НомСредИдентТов-ИдентТрансУпак" КолВедМарк="100" ПрПартМарк="111">
            <КИЗ>НомСредИдентТов-КИЗ</КИЗ>
          </НомСредИдентТов>
        </ДопСведТов>
        <Акциз>
          <БезАкциз>без акциза</БезАкциз>
        </Акциз>
        <СумНал>
          <СумНал>1000.00</СумНал>
        </СумНал>
      </СведТов>
      <СведТов НомСтр="2" НалСт="20%" НаимТов="Product2 &gt; 2.0 мм" ОКЕИ_Тов="778" НаимЕдИзм="упак" КолТов="114.100" ЦенаТов="516.67" СтТовБезНДС="58951.67" СтТовУчНал="70742.00">
        <СвДТ КодПроисх="178" НомерДТ="555555" />
        <ДопСведТов ПрТовРаб="5" ДопПризн="ДопП" НадлОтп="505" ХарактерТов="ДопСведТов-ХарактерТов" СортТов="СортТов" СерияТов="ДопСведТов-СерияТов" АртикулТов="ДопСведТов-АртикулТов" КодТов="ДопСведТов-КодТов" ГТИН="10000057074365" КодВидТов="1111111111">
          <КрНаимСтрПр>Конго</КрНаимСтрПр>
          <НалУчАморт АмГруппа="12" КодОКОФ="165" СрПолИспОС="234" ФактСрокИсп="100" />
          <СумНалВосст>
            <СумНал>1345.00</СумНал>
          </СумНалВосст>
        </ДопСведТов>
        <Акциз>
          <БезАкциз>без акциза</БезАкциз>
        </Акциз>
        <СумНал>
          <СумНал>1000.00</СумНал>
        </СумНал>
      </СведТов>
      <ВсегоОпл СтТовБезНДСВсего="8965.00" СтТовУчНалВсего="10000.00">
        <СумНалВсего>
          <СумНал>456.00</СумНал>
        </СумНалВсего>
      </ВсегоОпл>
    </ТаблСчФакт>
    <СвПродПер>
      <СвПер СодОпер="СвПер-СодОпер" ВидОпер="СвПер-ВидОпер" ДатаПер="15.02.2024" ДатаНачПер="16.02.2024" ДатаОконПер="16.02.2024">
        <ОснПер РеквНаимДок="ОснПер-РеквНаимДок" РеквНомерДок="567" РеквДатаДок="14.02.2024">
          <РеквИдРекСост>
            <ИННФЛ>144647873819</ИННФЛ>
          </РеквИдРекСост>
        </ОснПер>
        <СвЛицПер>
          <ИнЛицо>
            <ПредОргПер Должность="ПредОргПер-Должность" НаимОргПер="ПредОргПер-НаимОргПер" ИныеСвед="ПредОргПер-ИныеСвед">
              <ОснДоверОргПер РеквНаимДок="ОснДоверОргПер-РеквНаимДок" РеквНомерДок="098" РеквДатаДок="03.02.2024">
                <РеквИдРекСост>
                  <ИННЮЛ>4620212891</ИННЮЛ>
                </РеквИдРекСост>
              </ОснДоверОргПер>
              <ОснПолнПредПер РеквНаимДок="ОснПолнПредПер-РеквНаимДок" РеквНомерДок="098" РеквДатаДок="03.02.2024">
                <РеквИдРекСост>
                  <ИННЮЛ>4620212891</ИННЮЛ>
                </РеквИдРекСост>
              </ОснПолнПредПер>
              <ФИО Фамилия="Иванов" Имя="Иван" Отчество="Иванович" />
            </ПредОргПер>
          </ИнЛицо>
        </СвЛицПер>
        <СвПерВещи>
          <ДокПерВещ РеквНаимДок="ДокПерВещ-РеквНаимДок" РеквНомерДок="098" РеквДатаДок="03.02.2024">
            <РеквИдРекСост>
              <ИННЮЛ>4620212891</ИННЮЛ>
            </РеквИдРекСост>
          </ДокПерВещ>
        </СвПерВещи>
      </СвПер>
      <ИнфПолФХЖ3 ИдФайлИнфПол="9c3adc2b-a085-4acd-af8c-3494290d782c">
        <ТекстИнф Идентиф="Идентиф1в" Значен="Значен1в" />
        <ТекстИнф Идентиф="Идентиф2в" Значен="Значен2в" />
      </ИнфПолФХЖ3>
    </СвПродПер>
    <Подписант СпосПодтПолном="6" Должн="Должность">
      <ФИО Фамилия="Иванов" Имя="Иван" Отчество="Иванович" />
    </Подписант>
    <ОснДоверОргСост РеквНаимДок="ОснДоверОргСост-РеквНаимДок" РеквНомерДок="123" РеквДатаДок="01.02.2023">
      <РеквИдРекСост>
        <ДаннИно КодСтр="112" НаимСтран="Беларусь" Наим="ДаннИно-Наим" ИдСтат="ИГ" ИныеСвед="ДаннИно-ИныеСвед" Идентиф="ДаннИно-Идентиф" />
      </РеквИдРекСост>
    </ОснДоверОргСост>
  </Документ>
</Файл>

Пример тела ответа GeneratePrintFormFromAttachment:

6ba0d2ea-f16c-45b4-825f-92bf2203944d

Пример HTTP-запроса метода GetGeneratedPrintForm:

GET /GetGeneratedPrintForm?printFormId=f68fe07d-d514-4896-9183-bdeae22d22b2 HTTP/1.1
Host: diadoc-api.kontur.ru
Authorization: Bearer {{access_token}}

Генерация протокола передачи документа

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

Сгенерировать печатную форму протокола передачи документа можно с помощью метода GenerateDocumentProtocol. В теле ответа будет находиться содержимое файлов печатной формы и данных подписанта в кодировке Base64.

Пример HTTP-запроса метода GenerateDocumentProtocol:

GET /GenerateDocumentProtocol?boxId={{boxid}}?messageid={{messageid}}?documentId={{documentId}} HTTP/1.1
Host: diadoc-api.kontur.ru
Authorization: Bearer {{access_token}}
Accept: application/json

Пример тела ответа GenerateDocumentProtocol:

{
    "PrintForm": "JVBERi0xLjQKJdP0zOEKM...E4MTcKJSVFT0YK",        // содержимое PDF-файла печатной формы в кодировке Base-64
    "Signature": "MIINIAYJKoZIhvcNAQcCo...M4qZkbzpR34Q=="         // содержимое XML-файла с данными подписанта в кодировке Base-64
}

Генерация архива документооборота

Диадок позволяет получить все файлы, связанные с документооборотом документа, в одном архиве: пользовательские и служебные документы, а также подписи к ним. Сгенерировать такой архив можно с помощью метода GenerateDocumentZip. В ответе метод вернет путь к архиву на полке документов. Полученный путь нужно передать в метод ShelfDownload (V2), указав filename.

Пример HTTP-запроса метода GenerateDocumentZip:

GET /GenerateDocumentZip?boxId={{boxId}}&messageId={{messageId}}&documentId={{documentId}}&fullDocflow=true HTTP/1.1
Host: diadoc-api.kontur.ru
Authorization: Bearer {{access_token}}
Accept: application/json

Пример тела ответа GenerateDocumentZip:

{
    "ZipFileNameOnShelf": "__userId__/Diadoc.Documents.1f208d03-2a60-4f64-91b1-b7aad54cfaf3.ba04162c-e26f-448f-a370-299b4f15b6d1.da7cd73e-ff49-4a23-a018-42d27487e536.638747862192156432.FullDocflow_.zip"
}

Проверка наличия у документа нестандартной печатной формы

Диадок позволяет определить, существует ли для переданного документа в указанном ящике нестандартная печатная форма. Сделать это можно c помощью метода DetectCustomPrintForms.

Пример HTTP-запроса метода DetectCustomPrintForms:

POST /DetectCustomPrintForms?boxId={{boxId}} HTTP/1.1
Host: diadoc-api.kontur.ru
Authorization: Bearer {{access_token}}
Accept: application/json; charset=utf-8
Content-Type: application/json

Пример тела запроса метода DetectCustomPrintForms:

{
    "DocumentIds" : [
        {
            "MessageId" : "b93e4464-b14d-4c30-a8f5-b714c390d0a0",
            "EntityId" : "6c69e5bd-f421-4825-9f31-970182fee429"
        },
        {
            "MessageId" : "f2f388b8-4a96-4ce5-bd85-23fe10131ea4",
            "EntityId" : "bf16d371-3b18-47dd-b5f1-5a959628d0ef"
        }
    ]
}

Пример тела ответа метода DetectCustomPrintForms:

{
    "Items": [
        {
            "DocumentId": {
                "EntityId": "6c69e5bd-f421-4825-9f31-970182fee429",
                "MessageId": "b93e4464-b14d-4c30-a8f5-b714c390d0a0"
            },
            "HasCustomPrintForm": false
        },
        {
            "DocumentId": {
                "EntityId": "bf16d371-3b18-47dd-b5f1-5a959628d0ef",
                "MessageId": "f2f388b8-4a96-4ce5-bd85-23fe10131ea4"
            },
            "HasCustomPrintForm": true
        }
    ]
}