25 апреля, 2024

Как распечатать документ

Хочу немного прояснить ситуацию по последним нововведениям в системе печати документов конфигурации Простой учет. Надеюсь это как-то разъяснит, что и для чего нужно. Итак, пример: документ Подбор по прайс-листу, он находится в журнале Калькуляции, заставим его делать вывод печатной формы. Этот документ я выбрал как один из тех, который не имеет встроенной в конфигурацию поддержки печати и при нажатии на кнопку печать мы получим вот такое сообщение:

Объясню, что происходит при нажатии на кнопку «Печать». Процедура в глобальном модуле проверяет справочник Параметры печати на наличие для данного вида документов настроенной формы печати. В исходной ситуации такой формы нет и выдается сообщение об ошибке. Теперь сделаем простую вещь — в конфигураторе создаем внешнюю обработку, сохраняем ее в каталоге \ExtForms\PrnForms, возвращаемся в «Параметры печати», для документа «Подбор по прайс-листу» добавляем новую форму, вот в таком окне:

Кстати говоря, в поле «Каталог форм» виден полный путь к той папке, куда нужно было положить внешнюю обработку. Напомню, что обработка пока не содержит никакого кода, просто она должна быть. В открывшейся форме ставим курсор в поле «Обработка» и теперь либо вводим словами название обработки либо жмем F4 — откроется список обработок из каталога PrnForms. Я сделал обработку с названием «Обработка», вот что получил при нажатии на F4:

Выбираем обработку, сохраняем свойства формы. Теперь можно попробовать в документе «Подбор» нажать на кнопку «Печать», вот что увидим:

Т.е. теперь при нажатии на кнопку «Печать» открывается обработка, которую мы назначили в свойствах формы. В программе происходит передача управления в указанную обработку с передачей контекста документа. Контекст доступен в обработке как Форма.Параметр. Дальше уже все просто.

В конфигураторе редактируем обработку. В таблице обработки создаю три горизонтальные секции: «Шапка», «Строчка», «Итого»

В модуль обработки пишем такой код:

В процедуре ПриОткрытии() сразу используем метод СтатусВозврата(0) для того, чтобы форма самой обработки не открывалась, контекст документа присваиваем переменной Конт, чтобы использовать в дальнейшем. В процедуре Сформировать() написан простой код перебора строк документа и вывод сформированной таблицы на просмотр. Остается наполнить ячейки таблицы нужным содержимым — и печатная форма готова.

Например, проставил номер и дату документа:

И вот что получаю при нажатии на «Печать»:

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