Очистка очереди печати конкретного принтера

07.11.23

Интеграция - Периферийные устройства

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

Скачать исходный код

Наименование Файл Версия Размер
Очистка очереди печати конкретного принтера:
.epf 7,84Kb
2
.epf 1.0 7,84Kb 2 Скачать

1С тесно связана с печатью и бывает так, что процесс печати подвисает и в очереди начинают накапливаться файлы. Есть разные штатные варианты, как это решить: 

  • перезапустить службу печати - вполне неплохой вариант, однако, если с 1С ведется работа из терминального сервера, на котором проброшено множество других принтеров, то это приведет к отмене всей печати;
  • очистить очередь печати штатными средствами - тоже работает, но не всегда пользователи хотят запоминать, как это сделать, поэтому часто админам приходится это делать самим.

Данная обработка позволяет в привычном интерфейсе 1С и с минимальными итерациями решить проблему подвисшей печати даже неподготовленным пользователям без вмешательства админа.

Обработка универсальная и может открываться и работать в конфигурации 1С 8.3, тестирование проводилось на платформе 8.3.22.1709

P.S. перезапуск службы печати в обработке тоже присутствует, но могут быть проблемы с правами доступа.

 

Также эта обработка может послужить наглядным примером для разработки своего функционала, приведу готовые функции:

1. Как получить список системных принтеров:

&НаКлиенте
Функция ПолучитьСписокПринтеров()
    ВыборПринтеров = Новый СписокЗначений;
    Принтеры = Новый COMОбъект ("WScript.Network"); 
    prn = Принтеры.EnumPrinterConnections(); 
    i = 0; 
    Пока i < prn.Count()-1 Цикл 
        текПринтер = СокрЛП(prn.Item(i+1));
        Если (СтрНайти(текПринтер, "OneNote") = 0) Тогда
            ВыборПринтеров.Добавить(prn.Item(i+1));
        КонецЕсли;    
        i = i + 2; 
    КонецЦикла; 
    Возврат ВыборПринтеров;
КонецФункции

2. Очистить очередь печати выбранного принтера:

&НаКлиенте
Процедура ОчиститьОчередьПечати(Команда)
    Если СокрЛП(Принтер) = "" Тогда
        Предупреждение("Не выбран принтер!");
    КонецЕсли;    

    ВременныйСкрипт = ПолучитьИмяВременногоФайла(".ps1");

    Текст = Новый ЗаписьТекста(
    ВременныйСкрипт,
    КодировкаТекста.ANSI, // кодировка
    Символы.ПС, // разделитель строк (необ.)
    Ложь // перезаписывать файл, а не дописывать в конец (необ.)
    );    

    Текст.ЗаписатьСтроку("Get-PrintJob -PrinterName """ + СокрЛП(Принтер) + """ | Remove-PrintJob");
    Текст.Закрыть();
    
    стрКоманда = "powershell -executionpolicy RemoteSigned -file """ + ВременныйСкрипт + """";
    WshShell = Новый COMОбъект("WScript.Shell"); 
    WshShell.Run(стрКоманда, 0, -1); 
    
    Пауза(1000*2);
    
    Предупреждение("Очередь печати очищена!");
    
КонецПроцедуры

3. Пауза

&НаКлиенте
Процедура Пауза(МиллиСекунды)

    ТаймерМС = ТекущаяУниверсальнаяДатаВМиллисекундах() + МиллиСекунды;
    Пока ТаймерМС > ТекущаяУниверсальнаяДатаВМиллисекундах() Цикл
        Состояние(ОКР((ТаймерМС-ТекущаяУниверсальнаяДатаВМиллисекундах())/1000),1);
    КонецЦикла;

КонецПроцедуры

4. Перезапустить службу печати:

&НаКлиенте
Процедура ПерезапуститьСлужбуПечати(Команда)
    РежимДиалога = РежимДиалогаВопрос.ДаНет; 
    ТекстВопроса = "Будет остановлена печать на всех принтерах." + Символы.ПС + "Продолжить?";
    Ответ = Вопрос(ТекстВопроса, РежимДиалога, 0); 
    Если Ответ = КодВозвратаДиалога.Да Тогда
        ВременныйBat = ПолучитьИмяВременногоФайла(".bat");
        
        Текст = Новый ЗаписьТекста(
        ВременныйBat,
        КодировкаТекста.ANSI, // кодировка
        Символы.ПС, // разделитель строк (необ.)
        Ложь // перезаписывать файл, а не дописывать в конец (необ.)
        );    
        
        Текст.ЗаписатьСтроку("net stop spooler");
        Текст.ЗаписатьСтроку("del %systemroot%\system32\spool\printers\*.shd /F /S /Q");
        Текст.ЗаписатьСтроку("del %systemroot%\system32\spool\printers\*.spl /F /S /Q");
        Текст.ЗаписатьСтроку("net start spooler");
        Текст.Закрыть();

        ЗапуститьПриложение(ВременныйBat); 
    КонецЕсли;    
КонецПроцедуры

6. Открыть параметры принтера:

&НаКлиенте
Процедура ПринтерОткрытие(Элемент, СтандартнаяОбработка)
    СтандартнаяОбработка = Ложь;
    Если СокрЛП(Принтер) <> "" Тогда
        стрКоманда = "rundll32 printui.dll,PrintUIEntry /p /n """ + Принтер + """";
        WshShell = Новый COMОбъект("WScript.Shell"); 
        WshShell.Run(стрКоманда, 0, -1); 
    КонецЕсли;    
КонецПроцедуры

 

обработка принтер печать

См. также

Распознавание номеров автомашин с ip - камер, видео, фото

Распознавание документов и образов Периферийные устройства Автомобили, автосервисы Россия Платные (руб)

Программа считывает кадры с ip-камер (http - запрос к камере), видео, фото (источники кадров (нет ограничения на их количество) настраивается в конфигурационном файле), находит и распознает номера автомашин и сохраняет в базу db, с сохранением фото номера и автомашины, а также времени детекции.

20400 руб.

31.05.2023    3902    3    1    

4

[История разработки] Управляем промышленным принтером EBS-1500 из 1С

Периферийные устройства Платформа 1С v8.3 Бесплатно (free)

«У нас было два контроллера Huidu, семьдесят две китайские монохромные панели на светоизлучающих диодах, они же LED, четыре мегабайта flash памяти, 1С и целое море поддерживаемых форматов вывода информации - текстов, картинок, анимаций, а так же литр промывочной жидкости, литр разбавителя, ящик черных чернил, и 12 патч-кордов и различных удлинителей. Не то, чтобы всё это было категорически необходимо в маркировке, но если уж начал собирать маркиратор на 1С, то к делу надо подходить серьёзно.» - Страх и ненависть в Маркировке, 2019 г.

01.04.2024    1048    Interrupted    14    

34

Получение изображения с веб-камеры с возможностью его кадрирования по произвольной области

Инструментарий разработчика Периферийные устройства Платформа 1С v8.3 Конфигурации 1cv8 Россия Абонемент ($m)

Внешняя обработка получения изображения с веб-камеры с возможностью его кадрирования по произвольно выделенной области. Использует собственную внешнюю компоненту на основе библиотеки AForge. Содержит примеры интерактивного взаимодействия с полем HTML.

20.03.2024    369    1    AndSem    1    

4

Прямая печать на принтерах TSC из 1С

Периферийные устройства Платформа 1С v8.3 Конфигурации 1cv8 Россия Абонемент ($m)

Прямая печать на принтерах TSC из 1С при вызове с сервера позволяет печатать из тонкого клиента, мобильного клиента и веб-клиента. Потребуется установка драйвера и библиотеки для отправки команд на этот драйвер.

1 стартмани

19.02.2024    593    5    realslavyan    0    

5

HotKeys на Python для 1С

Периферийные устройства Конфигурации 1cv8 Бесплатно (free)

Недавно прочитал статью на Инфостарте о KeyPad и вначале захотел себе такой, но через какое-то время я понял, что дополнительная даже маленькая клавиатура занимает место, и нужно все время держать ее под рукой. Это все создает дополнительные неудобства.

20.12.2023    5091    John_d    25    

71

Печать этикеток на DYMO LabelManager 280 через DYMO Connect Web Service

Периферийные устройства WEB-интеграция Этикетки, ценники Платформа 1С v8.3 Конфигурации 1cv8 Россия Бесплатно (free)

На сайте производителя принтера DYMO LabelManager 280 вместе с драйвером поставляется пакет DYMO Connect, который предлагает функционал вёрстки этикеток в фирменном формате и отправки их напрямую на принтер. Так же в этом пакете есть веб-сервис для взаимодействия с принтером через HTTP-запросы, о котором и пойдет речь в этой статье.

29.08.2023    1529    GeraltSnow    0    

3

Второй монитор в качестве дисплея покупателя

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

Использование второго монитора в качестве дисплея покупателя. Выполнено в качестве расширения.

1 стартмани

02.02.2023    3257    25    windsurf    4    

5
Комментарии
Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. Brawler 455 20.11.23 20:29 Сейчас в теме
как понимаю сия разработка не кроссплатформенная?
Оставьте свое сообщение