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

07.11.23

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

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

Скачать файл

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

Наименование По подписке [?] Купить один файл
Очистка очереди печати конкретного принтера:
.epf 7,84Kb ver:1.0
3
3 Скачать (1 SM) Купить за 1 850 руб.

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-камер (http - запрос к камере), видео, фото (источники кадров (нет ограничения на их количество) настраивается в конфигурационном файле), находит и распознает номера автомашин и сохраняет в базу db, с сохранением фото номера и автомашины, а также времени детекции.

20400 руб.

31.05.2023    5456    4    4    

9

Периферийные устройства Разработка внешних компонент Программист Платформа 1С v8.3 Абонемент ($m)

Представлена обработка и компонента интеграции планшетов подписи от компании Signotec.

7 стартмани

вчера в 08:00    158    0    IgorKissil    3    

1

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

С приходом онлайн-касс фирма 1С начала удалять в типовых конфигурациях возможность печатать нефискальные чеки на принтерах чеков. Однако многие пользователи до сих пор хотели бы иметь такую возможность (например, для тестирования или обучения персонала работе в РМК). Данное расширение возвращает этот функционал в конфигурации 1С Розница 3 и 1С УНФ 3.

1 стартмани

24.03.2025    146    1    Stæg    0    

0

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

Предлагаются обработки, с помощью которой вы сможете протестировать ваш принтер чеков через БПО версий 2.1 и 3.2.

4 стартмани

18.02.2025    573    3    aximo    0    

3

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

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

1 стартмани

31.12.2024    562    0    user821472    0    

2

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

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

10 стартмани

14.11.2024    1081    7    aximo    0    

3

Периферийные устройства Системный администратор Пользователь Платформа 1С v8.3 1С:Бухгалтерия 3.0 Абонемент ($m)

Простая в использовании обработка https://infostart.ru/1c/tools/1001819/ в целом решает поставленную задачу, но имеет явный недостаток - взаимодействует только с принтерами, подключенными к серверу. Доработанная версия позволяет работать как с принтерами на клиенте, так и на сервере

1 стартмани

30.08.2024    625    4    Sergey1CSpb    0    

4
Оставьте свое сообщение