.. _rst-markup-drafts: Порядок работы с черновиками ============================ Чтобы отправить отчет в контролирующий орган (КО), сначала нужно положить необходимые файлы в черновик. Это некий контейнер, который хранит в себе все файлы отчета, его приложения и мета-информацию об отчете. Все файлы в черновике перед отправкой в КО проходят проверку и подготовку, чтобы минимизировать вероятность отказа в приеме документов. Базовый сценарий работы с черновиком предполагает следующие этапы: 1. Создание черновика. 2. Наполнение черновика документами. 3. Добавление подписи в черновик. 4. Проверка черновика: постановка задачи на проверку и отслеживание ее статуса. 5. Подготовка черновика: постановка задачи на подготовку и отслеживание ее статуса. 6. Отправка черновика: постановка задачи на отправку и отслеживание ее статуса. .. image:: /_static/Алгоритм_работы_с_черновиком.png .. note:: * Черновик можно отправить **только один раз**; * После успешной отправки, черновик будет храниться **в течение 1 года**. Создание черновика ~~~~~~~~~~~~~~~~~~ Для создания черновика вызовите метод :ref:`POST Create draft`. В теле запроса передайте мета-информацию о налогоплательщике, отправителе и получателе: * ``payer`` – налогоплательщик (НП). Организация, за которую отправляется отчетность; * ``sender`` – отправитель. Организация, которая общается с контролирующими органами, отправляет и получает документы; * ``recipient`` – получатель документооборота, то есть контролирующий орган. В моделе ``sender`` в параметре ``certificate`` передайте открытый ключ сертификата в формате base64, который будет использован для подписания документов. Наполнение черновика документами ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Сначала загрузите файлы отчета и связанные с ним файлы в :ref:`Сервис контентов`. Для каждого файла должен быть свой идентификатор загруженного контента ``content-id``. Затем создайте для каждого файла свой документ: :ref:`POST Add Document` . При каждом запросе укажите один идентификатор загруженного контента ``content-id``. На этом этапе можно положить документы без подписей, если нужно просто проверить документы на соответствие форматам методом :ref:`POST Check`. Добавление подписи в черновик ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Каждый добавленный файл нужно подписать, чтобы подтвердить личность как отправителя. Подписей может быть несколько. Добавьте подписи к документу методом :ref:`POST Add signature`. Если документы в черновике изменятся, то подписи станут недействительными. Тогда их нужно будет заменить. Для редактирования подписи текущего документа используйте метод :ref:`PUT Signature`. **Как работать с подписью** 1. Подпишите файл отчета закрытым ключом электронной подписи. 2. Сконвертируйте полученную подпись в base64. 3. Добавьте подпись в формате base64 в черновик. .. note:: Для некоторых типов документооборотов процесс подписания файлов может отличаться, например, для :doc:`проактивных выплат`. Проверка документов ~~~~~~~~~~~~~~~~~~~ Проверьте все документы в черновике методом :ref:`POST Check`. Будут выполнены проверки: * на соответствие приложенного файла с мета-информацией черновика, например, соответствие отправителя из мета-информации черновика с указанным отправителем в файле отчета; * на соответствие формату, то есть xml-файл документа проходит проверку по xsd-схеме; * на правильность контрольных соотношений согласно формату документа; * кросс-проверки между документами черновика, например, соответствие подписантов в доверенности и документе. При отправке запроса будет поставлена отложенная задача на проверку документов. Статус задачи можно посмотреть методом :ref:`GET DraftTask`. Если задача ``Check`` завершилась не успешно, то метод вернет список ошибок и предупреждений. Исправьте их, чтобы отправить отчет в контролирующий орган. Подготовка черновика ~~~~~~~~~~~~~~~~~~~~ Чтобы подготовить контент документа к передаче в контролирующий орган, вызовите метод :ref:`POST Prepare`. Будут выполнены: * проверка подписей к приложенным файлам; * сжатие и шифрование контента с учетом требований контролирующего органа. У каждого типа КО, документооборота и документа могут быть свои особенности в подготовке контента. Например, какие-то документы надо сжать с применением определенного алгоритма, какие-то документы требуется зашифровать на определенные сертификаты. Эти особенности регламентируются нормативными документами. На этом этапе обязательно наличие в черновике подписей под документами. При отправке запроса будет поставлена отложенная задача на подготовку черновика. Статус задачи можно посмотреть методом :ref:`GET DraftTask`. Если задача ``Prepare`` завершилась не успешно, то метод вернет список ошибок и предупреждений. Исправьте их, чтобы отправить отчет в контролирующий орган. Отправка черновика ~~~~~~~~~~~~~~~~~~ После успешной проверки и подготовки документов, отправьте черновик с помощью метода :ref:`POST Send`. При отправке запроса будет поставлена отложенная задача на отправку черновика. Статус задачи можно посмотреть методом :ref:`GET DraftTask`. Если задача по методу ``Send`` прошла успешно, черновик будет отправлен и превратится в документооборот, его идентификатор вернется в ответе.