Печать из 1С одновременно на два и более принтера

Поступил заказ - сделать так, чтобы при печати из 1С, накладная печаталась сразу на 2 принтера (в кассе и на склад). Средствами 1С я это сделать не смог. Средствами Windows тоже - там есть только группировка принтеров в пул, но она работает по другому принципу (печатает 1 экземпляр документа на первый освободившийся принтер). Использовать платные программы совесть не позволяет. Пришлось делать это через PDFCreator.

Суть в следующем - надо будет сделать виртуальный принтер, который будет печатать в PDF файл, а затем мы этот PDF файл будем скриптом через программу FoxitReader печатать на нужное количество принтеров (их может быть сколько угодно).

Для этого устанавливается PDF Creator (можно взять внизу страницы, или тут), устанавливается (во время установки он автоматом скачивает программу PDF Architect. По-умолчанию создается принтер PDFCreator. Можно его переименовать, к примеру, в принтер ОбаДва.

Затем скачиваем архив pdfprint.7z и распаковываем его на диск C: в папку pdfprint. В файле runme.cmd меняем название принтеров, куда будем печатать наши документы. Внимание! Если принтеры в названии имеют русские буквы, то в скрипте используем 866 кодировку!

Названия принтеров мы берем из списка принтеров, установленных на компьютере. Для этого проще всего зайти в свойства принтера и скопировать название.

Перед первым запуском печати, надо под каждым пользователем, который будет пользоваться общим принтером, запустить скрипт install.cmd. Этот скрипт устанавливает в реестр первоначальные настройки программ PDF Creator и Foxit Reader. Если есть желание, то настройки можно изменить самостоятельно. К сожалению, в PDF Creator 1.9.2 невозможно запустить скрипт в невидимом режиме, но я не стал бороться с этой напастью.

Выставляем в настройках путь сохранения и автоназвание файлов по дате/времени создания, и отключаем показ файла после печати:

Ставим запуск скрипта по выполнению печати:

Собственно в скрипте находится следующее:

@echo off

TAKEOWN /F %systemroot%\Temp /R /A /D Y

echo Y| cacls.exe %systemroot%\Temp /C /T /G Все:F

c:

cd c:\pdfprint

FoxitR.exe /t %1 "HP Color LaserJet CP1215 Складской"

FoxitR.exe /t %1 "Xerox ColorQube 8870DN PS Касса"

del %1 /f /q

rd %systemroot%\Temp\ /s /q

md %systemroot%\Temp\

DEL %systemroot%\system32\spool\printers\*.shd /f /q

DEL %systemroot%\system32\spool\printers\*.spl /f /q

Внимание еще раз! Если принтеры в названии имеют русские буквы, то в скрипте используем 866 кодировку!

Выключаем проверку обновлений:

Также могут появиться проблемы с размером печатаемой области. В некоторых случаях надо будет в настройках PDF Creator изменить размеры печати, чтобы не происходила обрезка табличек и слов по краям бумаги.

После того, как все готово - при печати на принтер ОбаДва, происходит генерация pdf файла в папку c:\pdfprint, после чего запускается Foxit Reader с ключом печати файла на определенный принтер, после чего файл удаляется.