Пакетная печать в строго заданном порядке

19.09.18

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

В силу различных особенностей ПО, ОС, драйверов и т.д. порядок печати документов не всегда совпадает с порядком их отправки на печать. Данный метод позволяет всегда получать на выходе нужный порядок документов.

В чем проблема?

Основная проблема хаотичного порядка печати - это произвольная отправка документов из очереди на печать. При печати одного документа его страницы всегда будут напечатаны в заданном порядке. Идея состоит в том, чтобы сформировать из печатных документов один документ и уже его отправить на печать.

Данная проблема уже обсуждалась, например, вот здесь. Но когда я столкнулся с этой проблемой, предложенные варианты либо не работали, либо не удовлетворяли.

Решение

Начиная с версии 8.3.3 платформы 1С реализован объект ПакетОтображаемыхДокументов, через который и реализована печать во всех современных типовых конфигурациях.

У этого объекта есть замечательная функция ЗаписатьФайлДляПечати(), которая позволяет весь пакет, с учетом порядка и копий отдельных документов, сохранить в PDF-файл. Остается лишь распечатать этот документ.

К сожалению, встроенные средства платформы позволяют только сохранять в PDF, но не читать их, а уж, тем более, печатать.

На помощь могут прийти различные консольные программы, которые позволят отправить файл на печать.

Но для себя я не нашел достойной программы, которая могла бы удовлетворить всем моим потребностям: то проблемы со скоростью, то качеством печати, то авторазворотом страниц, в итоге пришлось написать небольшую компоненту, которая бы удовлетворяла всем моим потребностям Внешняя компонента печати PDF, возможно, и вам она поможет.

Вместо метода Напечатать вызываем ЗаписатьФайлДляПечати, сохраняем PDF во временный файл и отправляем на печать уже PDF:

ИмяВременногоФайла = ПолучитьИмяВременногоФайла("pdf");
ПакетОтображаемыхДокументов.ЗаписатьФайлДляПечати(ИмяВременногоФайла);
КомпонентаПечатиPDF.Печать(ИмяВременногоФайла, "Пакет документов");

 

пакетная печать

См. также

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

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

22200 руб.

06.10.2023    21557    56    19    

87

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

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

8400 руб.

04.04.2013    130320    143    188    

112

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

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

3600 руб.

26.07.2019    26098    40    17    

24

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

Внешняя компонента позволяет печатать PDF файлы непосредственно из 1С, не используя при этом сторонних программ. Прекрасно работает на сервере, тонком клиенте и веб-клиенте. Основана на проекте PDFium из состава проекта Chromium/Chrome

1500 руб.

17.09.2018    37562    117    128    

117

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

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

4800 руб.

21.08.2019    20834    78    11    

25

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

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

1 стартмани

30.09.2024    10144    692    zhuravlev_as    57    

7

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

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

1 стартмани

27.09.2024    5922    427    zhuravlev_as    33    

8

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

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

2 стартмани

22.08.2023    5084    81    progmaster    11    

4
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. efin 19.09.18 21:08 Сейчас в теме
Подскажите, пожалуйста, те, кто пользовался этим "Пакетом"...
Вот есть конфа (на БСП, но это не важно), веб-клиент.
Есть печатная форма у документа, а есть где-то снаружи сделанный pdf-файл, прикрепленный к этому документу.

Можно ли сделать команду "Печатать все" таким образом, чтобы в результирующий pdf для печати вывелся и табличный документ, и все страницы прикрепленного pdf'а?
2. efin 19.09.18 21:11 Сейчас в теме
(1) из ИТС я знаю, что Режим пакетной печати предназначен для печати нескольких табличных документов

Может можно как-то извернуться и встроенными средствами запихнуть pdf в табличный документ, а затем уже добавить его в пакет?
3. crazycat 229 20.09.18 02:06 Сейчас в теме
(2) К сожалению, встроенных средств для работы с PDF в 1С нет, есть возможность сохранения в PDF и все.
В вашем случае есть несколько вариантов решения:
1. Внешняя компонента печати PDF для браузера, я сейчас как раз занимаюсь ее разработкой;
2. Конвертация PDF в картинки и размещение их в табличном документе для последующей печати;
3. Вывод PDF в табличный документ - идея в том, чтобы все объекты PDF транслировать в объекты табличного документа (линии, надписи, картинки) - была мысль реализовать такое, но пока даже не знаю насколько это реально, буду пробовать.

У первых двух методов решения есть недостатки, а вот 3-й вариант, кажется, наиболее универсальным и правильным.
5. maxvcb 68 24.09.18 11:22 Сейчас в теме
(3) А как на счет использования командной строки?

"Foxit Reader.exe" PdfFile /t PrinterName
6. crazycat 229 24.09.18 15:49 Сейчас в теме
(5) в публикации я упоминал про это, но меня этот вариант не удовлетворил, у компоненты есть преимущества, например:
1. Скорость выполнения;
2. Нет необходимости в дополнительном ПО;
3. Компонента умеет выводить PDF из памяти, без сохранения файла на диск.
4. crazycat 229 20.09.18 06:48 Сейчас в теме
(2) Я добавил версию внешней компоненты печати PDF для Веб-клиента (поддерживаются браузеры Firefox и Chrome), думаю, Вам должен подойти этот вариант. Вам нужно будет передавать файл с сервера на клиент, сохранять его во временный файл и вызывать печать через компоненту.

Скоро добавлю возможность печати PDF из двоичных данных, чтобы не нужно было сохранять PDF перед печатью.
7. triviumfan 102 28.09.18 12:23 Сейчас в теме
Извините, но ведь прошло уже... "тысячелетие" в 1с.
Достаточно просто воспользоваться https://its.1c.ru/db/metod8dev#content:5792:hdoc
Статья от 08.08.2014
8. crazycat 229 28.09.18 15:46 Сейчас в теме
(7) а Вы читали статью? большой разницы нет как компонуются документы перед печатью и какими методами / объектами, в конечном итоге они отправляются на печать отдельными пакетами и дальше уже платформа 1с не контролирует процесс, проблема существует и я с ней столкнулся, при этом перед печатью документы компоновались как раз-таки через ПакетОтображаемыхДокументов, но в итоге печатались совсем не в том порядке, в каком они были в пакете.
9. triviumfan 102 28.09.18 17:06 Сейчас в теме
(8) Режим совместимости?
https://its.1c.ru/db/v838doc#bookmark:dev:TI000001244

● Поведение метода ПакетОтображаемыхДокументов.Напечатать():
● Используется режим совместимости с версией 8.3.7 – каждый документ печатается в отдельном задании.
● Не используется режим совместимости:
● Для ОС Windows:
● создается одно задание на принтер;
● весь пакет выводится в один файл, имя которого запрашивается перед выводом.
● Для ОС Linux:
● если параметры печати всех документов в пакете совпадают – поведение совпадает с поведением в ОС Windows;
● если параметры различаются – каждый документ печатается в отдельном задании принтера.
10. crazycat 229 28.09.18 23:44 Сейчас в теме
(9) Режим совместимости отключен
11. scherbakovya 03.12.18 12:10 Сейчас в теме
Как решается вопрос двусторонней печати пакета документов? Т.е. если выкинуть пакет в pdf, а потом запустить двустороннюю печать, то следующий документ может распечататься на обратной стороне предыдущего?! Также как решен вопрос с разным количеством экземпляров разных документов пакета, т.е. одних нужно 3 копии других 2 и т.п.?
12. crazycat 229 03.12.18 18:06 Сейчас в теме
(11) С двусторонней печатью попробую, отпишусь. Что касается разного количества экземпляров для разных документов, то при выводе в PDF платформа уже делает несколько копий документов, следующих друг за другом в самом PDF, компонента лишь выводит готовый PDF.
13. scherbakovya 04.12.18 09:07 Сейчас в теме
(12) Насчет вывода в pdf нескольких копий все верно, я видел, но вот заметил одну интересную вещь. Если в ПФ использовать штрихкоды, то при выводе в pdf первая копия выводится отлично, а вот вторая и последующие копии (если их больше 2-х) выводятся с не верным штрихкодом (он размазан). С таким не сталкивались?
14. crazycat 229 09.12.18 06:59 Сейчас в теме
(13) нужно смотреть реализацию печати при выводе штрих-кода, возможно, печать происходит не средствами платформы
15. crazycat 229 09.12.18 06:59 Сейчас в теме
(11) двустороннюю печать реализую в ближайшее время, напишу, пока ее поддержки нет
16. scherbakovya 25.12.18 16:09 Сейчас в теме
(15)Как успехи с реализаций печати в двустороннем варианте?
Еще заметил, что при печати большого количества документов иногда они выходят не по порядку.
17. user619273_alevtina 30.12.18 18:21 Сейчас в теме
Что с реализацией двусторонней печати?
SmArtist; +1 Ответить
20. crazycat 229 27.11.19 19:26 Сейчас в теме
(17) День добрый!

Извиняюсь за долгую реализацию, двусторонняя печать реализована.
Если ещё актуально, просьба обновить компоненту и протестировать.

Спасибо!
18. skyadmin 61 22.11.19 18:03 Сейчас в теме
Я сделал с момощью расширения модуля УправлениеПечатьюКлиент

Процедура РаспечататьТабличныеДокументы(ТабличныеДокументы, .....)

ТабличныеДокументы это список значений, подменил в нем представления (добавил в начале нужные мне цифры)
и отсортировал по представлению, а вместо
//ПакетОтображаемыхДокументов = УправлениеПечатьюВызовСервера.ПакетДокументов(ТабличныеДокументы,
//	ОбъектыПечати, ПечататьКомплектами, КоличествоКопийКомплектов);
//ПакетОтображаемыхДокументов.Напечатать(РежимИспользованияДиалогаПечати.НеИспользовать);

сделал
Для Сч = 1 По КоличествоКопийКомплектов Цикл
	Для Каждого Элемент Из ТабличныеДокументы Цикл
		ТабличныйДокумент = Элемент.Значение;
		ТабличныйДокумент.Напечатать(РежимИспользованияДиалогаПечати.НеИспользовать);
	КонецЦикла;
КонецЦикла;
19. crazycat 229 26.11.19 05:35 Сейчас в теме
(18) спасибо за пример, в Вашем примере табличные документы отправляются на печать как отдельные задания, соответственно проблема с очередью печати сохраняется, т.к. "В силу различных особенностей ПО, ОС, драйверов и т.д. порядок печати документов не всегда совпадает с порядком их отправки на печать".
21. 7OH 70 27.07.20 12:46 Сейчас в теме
А не подскажете, как при сохранении через ПакетОтображаемыхДокументов сделать так, чтобы при открытии файла был активен ОДИН конкретный лист, а не все имеющиеся сразу?
Поясню - сохраняем два листа, открываем файл - кнопка фильтр не работает, так как выделены оба листа. Приходится сначала клацать на один лист, потом на первый и тогда всё работает.
22. Mishy 26.02.21 16:45 Сейчас в теме
Как решается вопрос двусторонней печати пакета документов? Т.е. если выкинуть пакет в pdf, а потом запустить двустороннюю печать, то следующий документ может распечататься на обратной стороне предыдущего?!

Извиняюсь за долгую реализацию, двусторонняя печать реализована.

Каким механизмом реализована двусторонняя печать? Если параметром (ДвусторонняяПечать - необязательный, тип "Число", режим двусторонней печати), то проблема с печатью документа на обратной стороне предыдущего не решена.
Оставьте свое сообщение