Попросили меня недавно сделать в документе кнопку, нажав на которую можно получить файл со счетом-фактурой для отправки клиенту по электронной почте. Ну, самый примитивный вариант, в котором и в 1С ничего крутить не нужно – установить программу doPDF, которая добавляет в систему виртуальный принтер, печатая на котором получаем файл в формате PDF содержимым которого будет то, что было-бы на бумаге, если-бы отправили на обычный принтер. Но для самых ленивых можно и этот процесс “доавтоматизировать”.
Итак, нужно программно отправить документ на печать через нужный принтер. Для отправки на печать без просмотра используется стандартный метод таблиц: Напечатать(). Перед вызовом этого метода, чтобы задать имя нужного принтера используем метод ПараметрыСтраницы().
Здесь задана портретная ориентация страницы, автомасштаб по ширине листа, вызов печати без вызова окна настроек принтера. Но остается один недочет – при таком вызове печати откроется окно принтера doPDF с приглашением сохранить файл и имя файла нужно будет ввести вручную. Как программно сформировать и это имя? Для этого в 1С нужно обязательно печатную форму открыть, при ее открытии можно программно задать ей имя, потом вызвать печать, потом программно закрыть. Примерно вот так:
В этом примере имя таблицы задается с использованием кода покупателя.
Теперь при вызове печати откроется примерно такое окно:
И останется просто нажать на кнопку ОК для сохранения файла.