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

26.08.14

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

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

Скачать файл

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

Наименование По подписке [?] Купить один файл
ПечатьHTML.epf
.epf 6,32Kb
7
7 Скачать (1 SM) Купить за 1 850 руб.
Небольшой экскурс в историю вопроса.

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

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

22200 руб.

06.10.2023    16831    41    15    

75

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

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

4800 руб.

21.08.2019    20522    77    11    

25

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

Обработка формирует документы реализации товаров и счет на оплату покупателю по заданному списку контрагентов Обработка совместима с платформой 1С 8.3 и конфигурацией "Бухгалтерия предприятия редакций" 3.0. (релизы 3.0.64.21-3.0.64.54).

7000 руб.

23.03.2020    16108    2    0    

3

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

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

2280 руб.

15.04.2014    53675    53    51    

41

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

Расширение "Автомат реализаций с графиком начислений и контролем оплаты счетов" предназначено для массовой генерации и печати документов реализации (счета, акт, счета-фактуры, упд) по договорам контрагентов в конфигурации 1С:Бухгалтерия 3.0. В случае УСН выписываются счета, акты, упд и если есть НДС, то счета-фактуры. Расширение используется если организация предоставляет регулярные услуги и выставляет фиксированные суммы за каждый месяц (например, договора аренды)

4800 руб.

19.02.2020    12751    4    2    

4

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

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

1 стартмани

30.09.2024    7103    592    zhuravlev_as    51    

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