Имя: Пароль:
1C
1С v8
Очистить очередь принтера при печати из 1С
0 delgadoo
 
24.05.19
11:42
Всем добрый день! Ситуация такая:
1) при печати из 1С необходимо опросить состояние принтера (который стоит по умолчанию), и при наличии каких-либо ошибок - выводить соответствующее окно и завершать дальнейшее выполнение кода.
2) в том случае, если в принтере закончилась бумага - принтер об этом узнает только если попытается что-то распечатать и если у него не получается напечатать, то он меняет статус на условно говоря "С ошибкой". Вот тут важный момент!: очередь печати в самом принтере остается и если вставить бумагу в лоток, печать продолжится.
Вопрос: необходимо в тот момент, когда принтер "словил" ошибку печати, очищать эту самую очередь у принтера.
п.с.
в документации можно найти расширенное состояние принтера "Мало бумаги" - но но при опросе принтера такого статуса не было (видимо машина достаточно простая). Принтер Kyocera Ecosys p30445dn
при печати как я понял используется 2 очереди: виндовая и очередь в самом принтере. Очередь виндовую получается почистить средствами 1С, а вот очередь принтера - нет.
получение принтеров и очистка виндовой очереди реализована вот так:

objWMIService = ПолучитьCOMОбъект ("winmgmts:{impersonationLevel=impersonate}!\\" +ИмяКомпьютера() + "\root\cimv2");
colPrinters = objWMIService.ExecQuery("Select * From Win32_Printer");
Product = colPrinters[0];

Сори, не нашел как код тегом оформить.
Product.CancelAllJobs();
1 lodger
 
24.05.19
12:05
у вас юзеры настолько обленились, что сформированные табдоки уже лень вывести на печать через штатную подсистему печати?
2 delgadoo
 
24.05.19
12:08
это отдельная машина стоит, на которой может подойти и каждый распечатку сделать. своя распечатка для каждого юзера.
3 lodger
 
24.05.19
12:08
(2) вы принт-сервер на 1с написали? зачот.