Групповая печать 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

См. также

Infostart PrintWizard - создание и редактирование печатных форм в 1С 8.3

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

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

18000 руб.

06.10.2023    8311    24    6    

45

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

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

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

2000 руб.

26.07.2019    25046    38    17    

23

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

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

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

4800 руб.

21.08.2019    19844    70    10    

23

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

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

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

2280 руб.

15.04.2014    52712    51    50    

39

Меркурий, групповая печать ЭВСД (электронных ветеринарных справок)

Пакетная печать Обмен с ГосИС Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Россия Платные (руб)

Обработка для групповой печати ЭВСД из меркурия, для тех кто оформляет ЭВСД через WEB-интерфейс и кому надоело по одной распечатывать оформленные ЭВСД, нажимая по 10 кнопок, ради одной печатной формы, когда таких, надо распечатать еще 20-100 и более.

1200 руб.

13.09.2018    26318    7    6    

5

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

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

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

1000 руб.

29.09.2016    35862    20    5    

22

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

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

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

2 стартмани

22.08.2023    2292    28    progmaster    8    

3

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

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

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

6000 руб.

30.03.2023    6108    4    0    

6
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
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 Ответить
Оставьте свое сообщение