27 апреля, 2024

Печать документа в мобильном приложении

Возникла необходимость печатать документы из мобильного приложения, но, по требованию заказчика, печатная форма должна быть точно той-же, которая используется в базе 1С. В итоге родилось такое решение: телефон присылает запрос с указанием идентификатора документа, 1С формирует печатный документ, сохраняет его в виде PDF файла и этот файл отправляет назад на телефон, где файл можно просматривать, пересылать кому-нибудь и, если есть возможность, печатать.

Расскажу из чего состоит реализация на стороне 1С.

В HTTP сервис нужно добавить новый шаблон, например «/print/{documentId}», по такому пути телефон будет запрашивать печатную форму и передавать идентификатор документа.

По полученному идентификатору необходимо найти документ и вызвать стандартную процедуру печати — сформировать табличный документ. Здесь, при необходимости, можно предусмотреть печать какой-то определённой печатной формы, например с наложенным изображением подписи-печати. Табличный документ теперь можно сохранить в виде временного файла, файл преобразовать в текст с помощью кодировки Base64 и этот текст вставить в поле JSON ответа. Вот пример кода, основные операции выделены рамкой.

Пример кода формирования файла печати и преобразования его в кодировку Base64

В этом примере Результат — это структура, которая затем преобразуется в JSON и передается в ответ на запрос от телефона.

Это пример ответа, который, в качестве теста, легко запросить через обычный браузер:

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

Полученные на телефоне данные файла легко преобразуются назад, в обычный файл, стандартными библиотеками. Приведенный пример кода работает в конфигурации Простой учет, посмотреть, как это работает на практике, можно в приложении Агент, в документе Заказ добавлена кнопка меню «Печать».