Групповая печать HTML-страниц

26.08.14

Задачи пользователя - Пакетная печать

Обработка позволяет печатать HTML-страницы из 1С без вывода стандартного диалога печати. Легко встраивается в любую конфигурацию, не использует внешних компонент.

Скачать файлы

Наименование Файл Версия Размер
ПечатьHTML.epf
.epf 6,32Kb
7
.epf 6,32Kb 7 Скачать
Небольшой экскурс в историю вопроса.

Задача: пакетная печать деклараций с сайта "Новой Почты" (украинский перевозчик). Стандартный способ отправить текущую страницу браузера на печать - вызов функции "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 сайта, с которого будет печать, в группу "Надежные узлы".


Печать HTML

См. также

SALE! 25%

Infostart PrintWizard

Пакетная печать Печатные формы Инструментарий разработчика Платформа 1С v8.3 Запросы 1С:Зарплата и кадры бюджетного учреждения 1С:Конвертация данных 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 Платные (руб)

Инструмент, позволяющий абсолютно по-новому взглянуть на процесс разработки печатных форм. Благодаря конструктору можно значительно снизить затраты времени на разработку печатных форм, повысить качество и "прозрачность" разработки, а также навести порядок в многообразии корпоративных печатных форм.

18000 15300 руб.

06.10.2023    7343    22    6    

39

Программа групповой печати чеков ККМ Атол и Штрих из текстового файла, поддержка 54-ФЗ от 01.07.19

Пакетная печать ККМ Кассовые операции Загрузка и выгрузка в Excel Россия Бухгалтерский учет Платные (руб)

Предназначена для групповой печати чеков. Что печатать в теле чека описано в текстовом файле с разделителем запятая (CSV) Подходит для любого языка программирования который умеет записывать в текстовый файл

2000 руб.

26.07.2019    24962    38    17    

23

Групповая печать чеков из банковской выписки с настройкой (БП 3.0)

Пакетная печать Банковские операции Кассовые операции Платформа 1С v8.3 Бухгалтерский учет 1С:Бухгалтерия 3.0 Бухгалтерский учет Платные (руб)

Обработка для групповой печати чеков ККМ с настройкой, загруженных из банковской выписки. На основании документа Поступление на расчетный счет!

4800 руб.

21.08.2019    19818    69    10    

23

Журнал учета ТТН (исходящих и от поставщика) для Бухгалтерии предприятия, редакция 3.0

Пакетная печать Документооборот и делопроизводство (СЭД) Оптовая торговля Печатные формы Платформа 1С v8.3 Бухгалтерский учет 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Платные (руб)

Обработка содержит новую форму Транспортной накладной с 01.01.2021 г. (в ред. Постановления Правительства РФ от 30.11.2021 № 2116) В отличие от внешних печатных форм, подключаемых к документу реализации, позволяет вести отдельный журнал документов. Дополнительным преимуществом является возможность формирования документов за поставщика.

2280 руб.

15.04.2014    52571    50    50    

38

Групповая пакетная печать документов "Реализация товаров и услуг" и связанных с ними "Счетов-фактур"

Пакетная печать Платформа 1С v8.3 1С:Комплексная автоматизация 1.х 1С:Бухгалтерия 2.0 1С:Управление торговлей 10 1С:Управление производственным предприятием Россия Платные (руб)

Работаете с сетями, у каждой из которых свои требования к оформлению документов? Клиент попросил перепечатать документы за год? Печатаете по 100-500 документов в день, тогда эта обработка Вам просто необходима. Данная обработка позволит Вам сэкономить время при больших объемах печати документов по отгрузке товаров и не только.

1000 руб.

29.09.2016    35804    20    5    

22

Печать непроведенных документов для УТ, КА, ERP. Настройка печати по пользователям, документам и печатным формам

Пакетная печать Печатные формы Адаптация типовых решений Универсальные функции Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Абонемент ($m)

Расширение для программ 1С:Управление торговлей, 1С:Комплексная автоматизация, 1С:ERP, которое позволяет распечатывать печатные формы для непроведенных документов. Можно настроить, каким пользователям, какие конкретные формы документов разрешено печатать без проведения документа.

2 стартмани

22.08.2023    2078    21    progmaster    7    

3

Пакетная выгрузка стандартных бухгалтерских отчетов

Пакетная печать Регламентированный учет и отчетность Файловый обмен (TXT, XML, DBF), FTP Загрузка и выгрузка в Excel Платформа 1С v8.3 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Налоговый учет Платные (руб)

Быстрое формирование сразу нескольких видов стандартных бухгалтерских отчетов - .Анализ счета, Карточка счета, Оборотно-сальдовая ведомость по счету, Отчет по проводкам. В периоды проведения проверок со стороны ФНС в деятельности предприятий часто возникает необходимость предоставления сведений из бухгалтерского учета. Обработка сократит время на формирование отчетов бухгалтеру.

6000 руб.

30.03.2023    6078    4    0    

6

Печать на стороне сервера при помощи Ghostscript

Инструментарий разработчика Пакетная печать Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Пример выполнения печати на принтер на сервере 1С используя библиотеку Ghostscript

1 стартмани

17.10.2022    4028    19    prog-1s    1    

8
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. infostart user 20 27.08.14 20:49 Сейчас в теме
вот еще способ, используя этот же метод, только поизящней

  
        Адрес = "https://infostart.ru/public/298928/"; //для примера страница этой публикации
	COMОбъект = Новый COMОбъект("InternetExplorer.Application");
	COMОбъект.navigate(Адрес);
	
	Пока COMОбъект.readyState < 4 Цикл
		Продолжить;
	КонецЦикла;
	
	Если НЕ СразуНаПринтер Тогда
                COMОбъект.Visible = 1;
		COMОбъект.ExecWB(6, 1);
	Иначе
		COMОбъект.ExecWB(6, 2);
	КонецЕсли;
Показать


более подробно прочитать про метод можно здесь Метод ExecWB
user682948_rusmaxval; bulpi; +2 Ответить
3. zan_od 54 28.08.14 12:46 Сейчас в теме
(1) infostart user, согласен
На этот способ я наткнулся позже, когда решил выяснить, что это - объект "8856F961-340A-11D0-A96B-00C04FD705A2"?

Мой вариант я нашел на stackoverflow, он больше подходит для встраивания в Web-страницу на сервере (правда, работает только в IE)

Ваш вариант однозначно лучше - не открывается форма, не нужно встраивать скрипт в тело HTML, единственно смущает цикл "Пока COMОбъект.readyState < 4" (процессор уйдет в 100%), но на небольших по размеру страницах это несущественно.
Также я думаю, что он подойдет для печати PDF из браузера - надо попробовать.
4. infostart user 20 28.08.14 17:30 Сейчас в теме
(3) по поводу readyState - не думаю, что это тяжело для процессора, мы же просто проверяем значение свойства, которые говорит нам загружена страница или нет.

да, по пдф тоже вариант, открыть в браузере пдф с помощью сторонней проги, например акробатридера и распечатать, даже где-то вроде видел такое.
5. zan_od 54 28.08.14 20:55 Сейчас в теме
(4) infostart user, дело не только в readyState, даже просто пустой цикл вгоняет процессор в 100%, правда на моей машине пришлось нагрузить процессор миллионом, чтобы просто увидеть скачок
Для инд = 1 По 1000000 Цикл
КонецЦикла;
Конечно, реально таких циклов при загрузке страниц не будет.

А pdf IE10 открывает без посторонних программ, не знаю как насчет предыдущих версий (в восьмой еще нет, проверил).
6. Criativve 16.03.16 19:14 Сейчас в теме
(1) infostart user,

Тоже пользовался этим методом, но возникла потребность при печати убирать колонтитулы и отступы от краев. При печати из браузера в предварительном просмотре их можно убрать, но если печатать программно - они все равно вылазят. Может кто-то сталкивался с такой проблемой и знает решение?
2. help1Ckr 28.08.14 12:10 Сейчас в теме
за выложенный код обработки однозначнго плюс. Все бы так делали)
dynamicsystems; V_V_V; +2 Ответить
Оставьте свое сообщение