Добрый день. Задача вроде стандартная - печатаем из 1С определенные наборы документов, но нужно чтобы после печати они собирались последовательно, в том порядке в котором их отправляли. На выходе же получаем "кашу" из разных документов в том порядке в котором они "понравились принтеру". Если между отправкой на печать сделать паузу 3-5 секунд как правило это существенно улучшает ситуацию, но полностью не избавляет. Кто-нибудь сталкивался с подобной проблемой? Как решали?
У меня печатается по такому принципу порядка 250 000 страниц в неделю, и неплохо уже много лет.
Алкашка - очень много сопроводительной документации на отгрузку.
Решение как вы написали, все на сервере в терминале
1) PDF принтер который печатает все в определенный каталог из 1С
2) в 1С сделана "кнопка" печати комплекта документов, куда входят все нужные документы в нужном порядке. Она посылает документы по одному на PDF принтер, а в финале создает cmd файл который обеспечивает сборку из отдельных PDF файлов - одного файла с комплектом документов. На этом же этапе прицепляются все необходимые сканированные документы.
3) Робот печати который запущен в 1С проверяет наличие cmd файлов в каталоге, затем проверяет что в файловой системе появились все нужные PDF файлы (вы не можете знать заранее время их появления, ведь PDF принтер выдает их не в реальном времени, а фоном)и запускает cmd файл на исполнение. При этом контролируется кол-во одновременно запущенных файлов на сборку комплектов (необходимо чтобы не занять все ресурсы сервера)
4) как итог получается 1 PDF = 1 комплект документов который у нас лежит в определенных папках (по пользователям) и запускается на печать сотрудниками в отделе распечатки, которые находятся поближе к складу, а не в офисе...
Решаемые задачи:
- не путаются документы никогда (есть ШК комплекта документов с версионированием)
- контроль что все комплекты распечатаны и они соответствуют версии в 1с
- минимальное время ожидания у операторов при запуске на печать комплекта документов
- все задачи по склейке отдельных PDF файлов в комплект происходят на RAM диске для максимального быстродействия
Минусы:
- нужно реализовывать кнопку "Печать комплекта", ну или обработку
- программировать алгоритм робота в 1С робота
- организационные затраты
(1) comol, решали эту проблему.
сделали микрообработку "печать последовательно" т. е. обработка печатает 4 документа к реализации товаров и услуг строго пачкой.
прикрепляли вместо кнопки "оформить документы"
Попробуйте поиграться с драйвером принтера.
Принтер где установлен? ПЕчать случайно производится не на сервере терминалов? или возможно используется Принтсервер?
У нас пододные проблемы были с обычними принетерами не сетевыми, подключенными через серевер терминалов. Вышли из данной ситуации путем перестановки альтернативных универсальных драйверов принтера, с родными драйверами на некотрых машинах были проблемы, то жирная пунктирная полоса по боку листа, причет это не мазня а откровенно пропечатанная, у другого посреди листа печаталсь полоса. То пропускал на очередь задания пришедшиее значительно позднее, те что стояли в очереди.
Вот примерно такие пляски с бубном проводили
Да, печать в терминале, надо наверное указать. С галочками на принтере игрались. Вроде как по документации чтобы достичь желаемого нужно снять галочку "первыми печатать документы из очереди", но на поверку эта настройка не помогает :(
(4) comol,
у нас Кайосеры 9530 и 4300, раз в неделю слетает последовательность документов, помогает перезапуск 1С и принтеров.
Еще нужно чтоб печатал 1 пользователь, другие пользователи нарушают очередь.
(8) В терминале итоговую очередь формируют два диспетчера печати: на сервере и на клиенте.
Вообще - на какой принтер осуществляется печать? Локальный, подключенный к серверу, или локально подключенный к клиенту, или сетевой на принт-сервере? Если локально к клиенту, то каким способом подключен - через расшаривание или через проброс? ОС на сервере какая? EasyPrint можно применить?
(12) Cooler, О, видимо человек не понаслышке знакомый... принтеры сетевые на принтесервере.. но находятся в подсети клиента если это важно.. На сервере 2013 Сервер... EeasyPrint теоретически возможно если это имеет смысл и поможет решить подобные проблемы...
(16) EasyPrint в такой конфигурации (с принт-сервером) не имеет смысла, забудьте.
Последний вопрос: у вас "перемешиваются" документы одного пользователя? Или разных пользователей?
В последнем случае, ИМХО, задача не решается в принципе - никак вы не построите не зависящих друг от друга юзеров в одну общую очередь. Один обратился к диспетчеру печати (начал печать) первым, но у него объемное задание, второй начал позже, но всего одну страницу - он закончил раньше. Какое из заданий первым попадет в итоговую очередь?
(23) Тогда, лично я считаю, порядок печати разных документов определяется порядком завершения формирования каждого из них. То есть, отправили задание на печать - диспетчер очереди печати создает на сервере временный файл и пишет в него данные, поступающие из 1С (через драйвер принтера), пока не получит от нее сигнал о завершении задания. До этого момента этот временный файл не трогается и никуда не пересылается, да и не может пересылаться: он вообще открыт. А вот как задание печати будет выполнено - спулер его закроет, отправит на принт-сервер и после этого удалит.
Отсюда вывод: чтобы обеспечить нужный порядок печати, каждый последующий документ должен начинать печататься после завершения предыдущего, желательно с тайм-аутом. Как обеспечить это программно - вам виднее, но формирование всего пакета в одном табличном документе, как предложено в (14), было бы идеальным вариантом, все остальное - костыли.
P.S. Все это написано в предположении, что используемый принт-сервер - достаточно простая железка и не умеет накапливать много документов в своей очереди, внося дополнительные изменения в последовательность печати. А если умеет - тады ой, поможет только один табличный документ.
(27) Cooler, Ну вот я сейчас думаю примерно так же как и вы... но до идеи с тем чтобы всё в один табдок запихнуть мыслей как этим порядком рулить вообще не было...
(14) mixa4, Каша из документов одного пользователя... Документы на печать отдельным заданием - Табдок.Напечатать()
Наверное хорошая идея в один табличный документ собрать и отправить на печать, там правда печатные формы разные, очень разные, попробую вывести разделитель и следующий - посмотрю что получится - напишу.
Ага.. и тогда начинается: листик от первого документа, листик от второго, листик от документа который печатает другой сотрудник...
Вот это и говорит о том, что запустили несколько копий одного документа. При выключенном параметре "Разобрать по копиям".
Про "листик от документа который печатает другой сотрудник" укажу на (19)
Проблема у ТС в том, что он пакетом отправляет несколько различных по объему документов. В этом случае,при установленном параметре настройки принтера "начинать печать после помещения в очередь всего задания" произойдет следующее:
1. документ А (100 страниц) - будет грузиться в очередь
2. документ Б (1 страница) - будет грузиться в очередь
3. документ В (5 страниц) будет грузиться в очередь.
В итоге получим такой порядок: Документ Б, Документ В, Документ А.
В итоге получим такой порядок: Документ Б, Документ В, Документ А.
Не факт: если документ Б сложен для печати (например, содержит большое количество графических объектов - логотип фирмы, картинки с факсимиле подписи и печати и т.д.), то он может напечататься и после документа В.
Вот это и говорит о том, что запустили несколько копий одного документа.
Это говорит о том, что при галочке "Начинать печать немедленно" документ Б вклинивается между страницами документа А. Что само по себе логично при такой установке настроек, но автора ветки никак не устраивает.
В-общем, только укрепляюсь в своем мнении: печать всего пакета документов одним заданием из одного макета.
(33) volodya1122, Дело в том что 90% доков это ТОРГ-12+СФ+ТТН. Итого Портрет - портрет - ландлшафт... а ещё у них параметры печати разные...
С задержкой и сейчас печатаем... воют :(
Ну, при очень большом желании от ландшафта можно избавиться: "Ориентация текста", плюс кардинальная перекройка макета и переписывание процедуры печати.
Геморройно, но зато реально.
а ещё у них параметры печати разные...
Неконкретно, так что по этому пункту ничего посоветовать не могу.
Первым в голову приходит дикий костыль. Отправка на печать в документ, в папке с документами на печать Автоупорядочивание по времени-дате, посылка на принтер из этой папки перехватчиком согласно купленным билетам :)
(10) FilatovRA, Так не поможет... отправляются и сейчас они упорядоченными по времени... Просто потом Windows их упорядочивает исходя из своих собственных соображений...
(18) comol, как раз для этого и "городили огород" - все дело в названии файла. У нас по окончании опер.дня выполняется групповая печать нескольких сотен накладных (по 6 форм - УПД, договор, ТТН и пр.)
+(24) да и еще в 1собработке групповой печати в один временной интервал может печатать только один пользователь т.е. у другого возникает предупреждение "выполняется групповая печать у маши пупкиной" :)
У меня печатается по такому принципу порядка 250 000 страниц в неделю, и неплохо уже много лет.
Алкашка - очень много сопроводительной документации на отгрузку.
Решение как вы написали, все на сервере в терминале
1) PDF принтер который печатает все в определенный каталог из 1С
2) в 1С сделана "кнопка" печати комплекта документов, куда входят все нужные документы в нужном порядке. Она посылает документы по одному на PDF принтер, а в финале создает cmd файл который обеспечивает сборку из отдельных PDF файлов - одного файла с комплектом документов. На этом же этапе прицепляются все необходимые сканированные документы.
3) Робот печати который запущен в 1С проверяет наличие cmd файлов в каталоге, затем проверяет что в файловой системе появились все нужные PDF файлы (вы не можете знать заранее время их появления, ведь PDF принтер выдает их не в реальном времени, а фоном)и запускает cmd файл на исполнение. При этом контролируется кол-во одновременно запущенных файлов на сборку комплектов (необходимо чтобы не занять все ресурсы сервера)
4) как итог получается 1 PDF = 1 комплект документов который у нас лежит в определенных папках (по пользователям) и запускается на печать сотрудниками в отделе распечатки, которые находятся поближе к складу, а не в офисе...
Решаемые задачи:
- не путаются документы никогда (есть ШК комплекта документов с версионированием)
- контроль что все комплекты распечатаны и они соответствуют версии в 1с
- минимальное время ожидания у операторов при запуске на печать комплекта документов
- все задачи по склейке отдельных PDF файлов в комплект происходят на RAM диске для максимального быстродействия
Минусы:
- нужно реализовывать кнопку "Печать комплекта", ну или обработку
- программировать алгоритм робота в 1С робота
- организационные затраты
Я бы еще вот с какой стороны поразмыслил: вряд ли задания совсем случайным порядком идут, пусть не по времени, но по какому-то принципу они же упорядочиваются? Не по названию ли (колонка "документ") в очереди? Точно не помню, но как-то возился с BiPrint/PDFCreator заметил что некоторые задачи печати в очереди видны не как "Табличный документ", а более осмысленно, то есть вроде можно задать это имя задания из программы, и если по нему сортирует, то и упорядочить можно будет.
(26) mixa4, Я знаю по какому принципу. Счет-фатура - 1 листик - будет первым, ТОРГ-12 3 листа да ещё штрихкод - будет вторым. Т.е. что первым прогружается то первым и уходит на печать.
(37) Stormicon, Вот пока это рабочий вариант... проверим... могут быть проблемы с тем что для каждого документа сохранены свои параметры страницы, в том числе и принтер...
(42) comol, если кроме параметров страниц, разные еще и принтеры, тогда нужно формировать пулы под каждый принтер. С параметрами страниц больших проблем в pdf я думаю не будет.
Решение:
1. Переделывать нужные макеты в ланшафт
2. Формировать ОДИН табличный документ, через метод Присоединить() ТабличногоДокумента
3. Устанавливать ограничение на количество страниц. Делается опытным путем. 300/500/1000/и т.д.
4. Отправлять на принтер сформированный табличный документ.
Профит:
1. Скорость печати существенно увеличивается.
2. Проблем с порядком вывода нет. Проверено на принтерах Киосера.
Кстати, да, плюсую. Печать ТОРГ-12 и счета-фактуры портретом - признак очень большого желания сэкономить... на бумаге. У меня дистрибьютор такие документы присылает - все меленько-меленько, и дату получения ТМЦ от руки нормально не впишешь.
(45) comol, именно. Присоединяя страницы можно регулировать порядок печати частей комплекта документов и последовательность самих комплектов. У нас оперки просили Торг12 - Сф - Торг12 - СФ - Спарвка Б - остальное. это последовательность страниц в комплекте документом. А последовательностью самих комплектов может быть например направления развозки. Т.е. сначала печатате направление Центр, потом Запад и т.д. Все что нужно это разобрать эту кипу бумаги вышедшую из принтера.
Что касается параметров, то тут придется попотеть с макетом. Именно с макетом (ед. число) Я сделал один макет на все виды документов печатающиеся в пакетном режиме. За счет этого все доки печатались корректно.
Скорость печати увеличилась существенно. Если раньше была пауза после каждого документа, то теперь принтер чуток задумывается при начале, зато потом из него льется, как из рога изобилия. и .т.к. "склеенный" таб. док. отправляется одним заданием, то последовательность документов всегда четко соответствует.
(46) Cooler, Не скажи, работал в свое время в Управляющей компании (ЖКХ). Так там тоже было весело со сч.ф и накладными. Особенно, когда приходится подстраиваться под такие компании как дочки Газпрома
Разнообразие печатных форм по клиентам решается путем их привязки к клиенту (подчиненный справочник печатных форм). Там же указывается их кол-во и порядок следования. Эти же формы привязаны на стандартный механизм 1С внешних печатных форм.
При вызове параметром определяем пакетная печать или нет. У пользователей прописаны в настройках "Личные каталоги" куда скидывать PDF файлы при групповой печати
При таком подходе каждый получает то что хочет а оператор не задумывается, какие формы нужно печатать.
Ландшафт - портрет PDF принтер сам вращает и все страницы получаются в портрете (просто ландшафтную форму поворачивает на 90 градусов и она становится портретом), что очень хорошо для скорости распечатки.
Ну уж тогда и по принтерам у нас весь основной вал печатается на Xerox5550 - 6 аппаратов, ресурс у них до 3 мил. на аппарат,. меняем раз в пол года. Ремкомплекты раз в 600. тысяч. Про более серьезные аппараты мы в курсе, но по факту их нужно брать минимум 3 штуки.
Т.к. на 2-х при выходе из строя одного выпуск не сделаешь, значит 3 - а это уже не очень экономически интересно, слишком велик срок окупаемости, никто не может сказать, что через 3 года еще останутся справки и сертификаты, может уйдем снова в ЕГАИС и надобность этой сопроводилки отпадет.
Кстати никто не вентилировал вопрос электронного комплекта документов подписанного ЭЦП, я бы так PDF подписал и на ftp. Водилам для провоза ноут + флешка. Сколько бы леса спасли.....
(55) serg_info, Круто... А у вас нет такой штуки как печать на "разные принтеры". Объясню. Принтер то может и один. Но ТОРГ-12 нужно печатать, к примеру, двухсторонней печатью (лес спасаем) она отправляется на отдельный (в Windows отдельный) принтер "Duplex", а вот счет отправляется на обычный принтер.. и получается склеенный PDF уже не отправишь на раздельные принтеры :(.
С ЭЦП думали... дело в том что его должен использовать ещё и клиент... в нашем случае это не реально :(
каждое задание на печать, как правило, «оформляется» парой файлов спулинга – *.SPL, *.SHD, например, 00005.SHD и 00005.SPL (или FP00001.SPL и FP00001.SHD)
Чуть-чуть ручками, и решение готово.
(61) comol, Предметно ответить не могу, поэтому фантазия на тему (вдруг поможет)
1. Файлики падают в место Х.
2. За ними следит батник и с определенной задержкой отправляет их в папку печати.
Ну вот как-то так.
согласен. дело не в количестве страниц, а в заполнении.
а вот выбор настройки "начинать печать немедленно" при пакетной печати не очень корректен.
решение печати одним макетом - вполне жизнеспособно. однако трудозатраты...
слепить торг12+сф+ттн можно. но кто даст гарантию, что в будущем потребуется пакетная печать других документов (навскидку: авансовый+доверенность)?
(71) smallbuk, в (54) у serg_info сделано конечно интересно, но мне кажется, некоторые из моментов стоит упростить. Вообще, сейчас не проблема использовать формирование pdf напрямую в 1С, причем с использованием "массива готовых табличных документов для конвертации в pdf", цитата прям из публикации.
(72) Stormicon, Только не помогает тоже.. принтеры разные... ТОРГ-12 печатается на "виртуальный принтер" "Duplex" чтобы распечатать с 2-х сторон, СФ так же, с счет - на обычный принтер... в случае с PDF такое не прокатит :(
(74) comol, вообще ,в 8.3 появилась возможность использовать возможности двухсторонней печати прямо в программном коде. по крайней мере насколько помню, в 8.3.4. В общем-то вывод простой - без рукоприкладства и некоторых дописок в любом случае не обойтись. Как именно реализовывать, решать вам.
(75) Stormicon, Я понял, если бы кто-то подсказал что дописать.... в PDF вывод сделал уже но проблему не решило, только если как в (57) посоветовали ВК писать... Но пока ещё надеюсь на существование другого способа...
(81) Cooler, Да в принципе, ничего страшного. Единственное, как и везде с автоматизацией - требуется первоначальная настройка. Принцип прост - есть первоначальные условия - список документов контрагента, есть первоначальная настройка условий для каждой печатной формы. формирование в пакетный файл/файлы. Опять-таки дуплекс сейчас реализуем из программного кода в обычном макете, уже без "виртуального" принтера. Как другой вариант: формирование автоматически для обязательной дуплексной печати, с использованием разрыва страниц в одном файле pdf. Да, будет время увеличиваться на лишний "пустой" проход второй стороны того же счета, к примеру.
(81) Cooler, Да знаете... я в принципе вроде ничего особенного не хочу... я просто хочу чтобы документы выходили из принтера в той последовательности в которой их туда отправляют.... И пользователю не объяснишь почему такая простая вещь вызывает столько сложностей...
я просто хочу чтобы документы выходили из принтера в той последовательности в которой их туда отправляют...
Уфф! Никак не хотите понять: в реальном мире (на практике) последовательность формируется не порядком начала отправки задания диспетчеру печати, а порядком завершения этой отправки.
Я это уже давно заподозрил, а smallbuk лишь подтвердил в (69) и (71).
Вот когда научитесь рулить этим порядком завершения (который определяется порядком отправки плюс временем формирования каждого документа) в многозадачной Windows - тогда и будет вам "простая вещь" счастье.
(71) smallbuk, Счет, возврат, доверенность... да и ТОРГ-12 она не в единичном варианте как уже писал... не, с макетом не реально.. весь отдел будет заниматься только печатными формами тогда
опишите пожалуйста подробнее процедуру печати. Обработка для групповой печати? Открыть-Печать? Может другой способ. Думаю, эта информация даст толчок к решению задачи обществом
(77) smallbuk, Способ другой - программно "Печать - Комлект"... далее друг за другом печатаются печатные формы... вот только не совсем друг за другом...
Делаешь обработку по формированию пакета документов для выделенных контрагентов, регламентированным заданием. Как вариант, дополняешь справочник контрагентов требуемыми настройками по внешнему виду макетов каждого из документов. Делаешь один из вариантов по умолчанию, остальные, хоть как вар1, вар2, вар3 называй, непринципиально. Вешаешь соответствующие макеты на нужные варианты, проверяешь в обработке нужные реквизиты - формируешь автоматом пакет в pdf.... дальше продолжить? ;)
На сколько я понял, у аутора вся проблема только в дуплексе, а не в "очереди" печати.
И печатает он на разный "принтёры" которые заведены на одно устройство, так ?..
(79) Ёпрст, Скорее в том числе в "дуплексе". Распечатывать для разных контрагентов разный набор документов. Плюсом, в каждом из них может быть свой вариант печати.
(92) ganai1, Так ScrewDrivers это же вроде для печати из терминала на принтеры, подключенные к компьютеру локально... а мы печатаем на принтеры подключенные через принтсервер...
А будет ли сбиваться порядок если отключить принтер ("работать автономно" или для проверки - питанием) перед началом формирования очереди и включить после?
96.
Захаров_Николай
1228.05.14 17:35 Сейчас в теме
Я бы сделал очередь в регистре, а на печать выводил бы рег. заданием. Контролировал выполнение печати скриптом по окончании печати чистил бы записи которые прошли. Побочный эффект - немного медленно. Но задача была бы выполнена. Такой диспетчер печати на базе 1С.
P.S.: Если уже кто-то предлагал не пинайте. Тему читал не внимательно.
(96) Захаров_Николай, Я бы даже сказал что это уже сделал - ничем особым не помогло... тоже медленно, только "база не подвисает сильно"... но "перемешивает ещё больше", потому как задержки нет...
98.
Захаров_Николай
1228.05.14 23:00 Сейчас в теме
Надо мыслить в другом направлении. Смысл создавать очередь в реестре, если принтер будет печатать задание неопределенно долго. А рег. задание будет посылать ему задачи через промежуток времени. Понятное дело будет каша. И задача стоит в том, как отследить момент когда принтер закончил выполнять задачу? А уже потом посылать следующее. Только WinApi функциями. 1С сама не умеет их перехватывать.
Чтобы не быть голословным изучил функции которые работают со спулером. Прямо идеально подходящее сообщение WM_SPOOLERSTATUS, поиграл с этим сообщением и понял, что в современных ОС оно не работает. Но нашел код который по запросу показывает количество заданий. В принципе уже его можно запихать в Dll и передавать ей параметр - имя принтера и получать количество заданий. Если это 0 то посылать следующее. А если дальше развивать тему с dll то можно анализировать статус задачи и работать с ним из 1С.