Задача: пакетная печать деклараций с сайта "Новой Почты" (украинский перевозчик). Стандартный способ отправить текущую страницу браузера на печать - вызов функции "parentWindow.Print()". Но эта функция открывает стандартный диалог выбора принтера, что для пакетной печати совсем не удобно. Поиск способов обойти эту проблему привел к следующему решению:
На форме обработки размещен элемент "ПолеHTMLДокумента".
Модуль формы обработки:
Процедура ПечатьСтраницыНаФорме() Скрипт = " |Sub PrintPage() //| MsgBox ""test"" | OLECMDID_PRINT = 6 | OLECMDEXECOPT_DONTPROMPTUSER = 2 | OLECMDEXECOPT_PROMPTUSER = 1 | call WB.ExecWB(OLECMDID_PRINT, OLECMDEXECOPT_DONTPROMPTUSER,1) |End Sub"; Документ = ЭлементыФормы.ПолеHTMLДокумента.Документ; УзелСкрипта = Документ.createElement("script"); УзелСкрипта.type = "text/VBScript"; УзелСкрипта.text = Скрипт; Документ.getElementsByTagName("head").Item(0).appendChild(УзелСкрипта); УзелОбъекта = Документ.createElement("object"); УзелОбъекта.id = "WB"; УзелОбъекта.CLASSID = "CLSID:8856F961-340A-11D0-A96B-00C04FD705A2"; Документ.getElementsByTagName("body").Item(0).appendChild(УзелОбъекта); Документ.parentWindow.PrintPage(); КонецПроцедуры Процедура ПолеHTMLДокументаДокументСформирован(Элемент) ПечатьСтраницыНаФорме(); Закрыть(); КонецПроцедуры Процедура ПриОткрытии() ЭлементыФормы.ПолеHTMLДокумента.Документ.URL = АдресСтраницы; КонецПроцедуры
Модуль объекта обработки:
Процедура Печать(Адрес) Экспорт АдресСтраницы = Адрес; Форма = ПолучитьФорму("Форма"); Форма.ОткрытьМодально(); КонецПроцедуры
Вызвать печать можно следующим образом (пример):
ОбработкаПечати = Обработки.ПечатьHTML.Создать(); Для Каждого АдресСтраницы Из МассивАдресов Цикл ОбработкаПечати.Печать(АдресСтраницы); КонецЦикла;
Обработка печатает на принтер по умолчанию (можно обойти через WMI).
Работоспособность обработки проверялась на ОС Windows 7.
В браузере Internet Explorer в настройках безопасности нужно разрешить запуск скриптов и ActiveX. Это можно сделать, например, так:
1. Для группы "Надежные узлы" установить уровень безопасности "Низкий".
2. Добавить URL сайта, с которого будет печать, в группу "Надежные узлы".