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

26.08.14

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

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

Файлы

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование Скачано Купить файл
ПечатьHTML.epf
.epf 6,32Kb
7 2 500 руб. Купить

Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний

Оформите подписку на компанию для решения рабочих задач

Оформить подписку и скачать решение со скидкой
Небольшой экскурс в историю вопроса.

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

См. также

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

Расширение для создания и редактирования печатных форм в системе 1С:Предприятие 8.3. Благодаря конструктору можно значительно снизить затраты времени на разработку печатных форм, повысить качество и прозрачность разработки, а также навести порядок в многообразии корпоративных печатных форм.

22570 руб.

06.10.2023    35863    92    40    

112

Розничная торговля Пакетная печать Кассовые операции ЭДО и ОФД Бухгалтер Пользователь 1С:Предприятие 8 1С:Бухгалтерия 3.0 Бухгалтерский учет Платные (руб)

Обработка для распечатки сразу нескольких чеков ОФД через ККТ для 1С: Бухгалтерия предприятия 3.0. Позволяет выбрать группу фискальных чеков и распечатать их.

8652 руб.

24.11.2020    17108    9    4    

8

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

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

3600 руб.

26.07.2019    28014    45    19    

27

Печатные формы Пакетная печать 1С:Предприятие 8 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Платные (руб)

Печать (приемо - сдаточных актов) ПСА, заявления, журнала покупок и реализаций. Подходит для фреш.

6100 руб.

10.09.2025    1289    4    0    

5

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

Групповая печать фискальных чеков по документам "Поступление на расчетный счет" с возможностью настройки НДС, признаков расчета и автоматической отправкой чеков клиентам.

6499 руб.

21.08.2019    22251    85    11    

25

Печатные формы Пакетная печать НДС 22% Бухгалтер Пользователь 1С 8.3 1С:Управление торговлей 10 Оптовая торговля, дистрибуция, логистика Россия Бухгалтерский учет Управленческий учет НДС Абонемент ($m)

Внешняя печатная форма УПД с изменениями 2026 года для 1С:Управление торговлей 10.3. Содержит авторегистрацию с добавлением необходимых настроек автоматически. Автопоиск данных "счетов-фактур" с видом "на аванс" (в исключительном случае заполнение вручную с корректной разбивкой, если данных счетов-фактур на аванс несколько). Также заполнение ОГРНИП. Начиная с релиза 10.3.33 по 10.3.88.

10 стартмани

23.12.2025    4497    194    zhuravlev_as    27    

7

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

Внешняя печатная форма УКД (Универсальный корректировочный документ) в редакции постановления Правительства РФ №1096 от 01.10.2024 для 1С 8 Управление торговлей 11.5, Комплексная автоматизация, Управление предприятием ERP 2.5 для документов вида "Корректировка реализации", "Счет-фактура (выданный)". Данные прослеживаемости учитываются.

2 стартмани

30.09.2024    8840    135    zhuravlev_as    13    

5

Пакетная печать Печатные формы Бухгалтер Пользователь 1С:Предприятие 8 1С:Управление торговлей 10 Бухгалтерский учет Абонемент ($m)

Внешние печатные формы УПД, УКД (Универсальный передаточный/корректировочный документ) в редакции по постановлению №1096 начиная с 2024.10.01, поддерживающая вывод данных прослеживаемости для УТ 10.3

2 стартмани

30.09.2024    16326    820    zhuravlev_as    73    

9
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
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
gepar1020; user682948_rusmaxval; bulpi; +3 Ответить
3. zan_od 55 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 55 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 Ответить
Для отправки сообщения требуется регистрация/авторизация