gifts2017

Настройка принтеров

Опубликовал UMix У (Umix) в раздел Обработки - Рабочее место

Удобная настройка принтеров в терминальном режиме сервера Windows

Если пользователь при подключении к серверу в терминальном режиме стразу входит в среду 1С, минуя рабочий стол, то бывает немного неудобно настраивать принтера (особенно если еще и не установлен сервер печати). Использование данной обработки  существенно упрощает подключение и настройку устройств печати.

Главное, чтобы был доступ к запуску внешних обработок. После запуска будет построен список подключенных принтеров. Двойной щелчок по строке явит меню управления (как показано на рис) для администратора (в моем случае "АдминПравка") с возможностью редакции меню для остальных пользователей.

 

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

 

    Допиливаем обработку под вашу базу, заменяя права "АдминПравка" на то, что в вашей базе, например, "Администратор"

 

Очистить очередь печати можно так:

    -  создаете батник по мотивам нижеуказанного рисунка и, обладая правами админа, вперед

       или добавьте еще один пункт в меню, а при выборе его выполняйте следующую процедурку

      недостаток в том что будет сброшен полностью спулер, т.е. очищены очереди печати всех принтеров (сервера). А это может быть не гуд(. Хотя для большинства этого решения будет достаточно и об этом много в интернете.

    -  воспользоваться Prnqctl.vbs, тогда можно будет управлять конкретным принтером из таблицы, да еще и навешать, при желании, дополнительных функций.

    ссылки для почитать:

    http://windata.ru/windows-world/lokalnaya-set/scenarij-prnqctl-vbs/    тут по-русски + еще несколько полезняшек

    http://technet.microsoft.com/en-us/library/cc730914.aspx

    http://technet.microsoft.com/en-us/library/bb490976.aspx

  

Скачать файлы

Наименование Файл Версия Размер
Принтеры.ert 9
.ert 182,00Kb
08.11.13
9
.ert 182,00Kb Скачать

См. также

Подписаться Добавить вознаграждение

Комментарии

1. Владислав Чинючин (vcv) 09.11.13 15:03
Если обработка предназначена для пользователей без рабочего стола, то зачем им "Создать ярлык", удалить, переименовать, свойства и прочее? Открыть, настройки печати, Выбрать по умолчанию. И хватит.
2. Олег Поцелуев (pophmail) 10.11.13 08:12
Ещё "Отменить печать" или "Очистить очередь печати" востребовано иногда...
3. UMix У (Umix) 11.11.13 12:00
По просьбе vcv доработано. По поводу очистки очереди печати попробую изыскать способ, ибо перебор пунктов меню (скриптовой) такового не имеет((
4. UMix У (Umix) 11.11.13 12:24
(1) vcv, видел у тебя похожую штуку)). А то пылятся некоторые удобняжки годами, пусть народ пользуется.
5. Владислав Чинючин (vcv) 11.11.13 13:15
(4) Ни что не ново под луной. Все мы тут бояншики и велосипедисты.
6. UMix У (Umix) 14.11.13 16:10
7. UMix У (Umix) 14.11.13 23:00
(2) pophmail, кое-что подтянул.
8. Олег Поцелуев (pophmail) 14.11.13 23:28
Перезапускать спулер, в этом случае, не совсем хорошо, кроме того принтеры могут быть подключены к другим ПК (права на отмену) или к принтсерверу (встроенному) а задания могут полностью или частично находится уже в их памяти...

Я когда то сделал так, хотя конечно некоторые задания отменить не выйдет:

Процедура глОтменитьПечать(пред) Экспорт

скрипт=createobject("MSScriptControl.ScriptControl");
скрипт.language="vbscript";
скрипт.addcode("
|Function CancelAllJobs()
|Jobs=0
|zp=vbNullString
|nameP=vbNullString
|Set objWMIService=GetObject(""winmgmts:"" _
|& ""{impersonationLevel=impersonate}!\\.\root\cimv2"")
|Set colInstalledPrinters=objWMIService.ExecQuery _
|(""Select * from Win32_Printer"")
|For Each objPrinter in colInstalledPrinters
|If objPrinter.PrinterStatus<>3 Then
|Jobs=Jobs+1
|If Jobs=1 Then zp=vbNullString Else zp=Chr(44) End If
|nameP=nameP+zp+Chr(34)+objPrinter.Name+Chr(34)
|End If
|objPrinter.CancelAllJobs()
|Next
|CancelAllJobs=nameP
|End Function");
СписокПринтеровСЗаданиями=скрипт.run("CancelAllJobs");

Если пред=1
Тогда
сп=СоздатьОбъект("СписокЗначений");
сп.ИзСтрокиСРазделителями(СписокПринтеровСЗаданиями);
Зад=0;
Для ы=1 по сп.РазмерСписка()
Цикл
ИмяПринтера=сп.ПолучитьЗначение(ы);
Если ПустоеЗначение(ИмяПринтера)=0
Тогда
Зад=Зад+1;
КонецЕсли;
КонецЦикла;
Если Зад>0
Тогда
Если Вопрос("Отменены задания для принтеров:
|"+СписокПринтеровСЗаданиями+"
|Показать очередь печати?","Да+Нет")="Да"
Тогда
WSH=СоздатьОбъект("WScript.Shell");
Для ы=1 по сп.РазмерСписка()
Цикл
ИмяПринтера=сп.ПолучитьЗначение(ы);
Если ПустоеЗначение(ИмяПринтера)=0
Тогда
WSH.Run("rundll32 printui.dll, PrintUIEntry /o /n "+симв(34)+ИмяПринтера+симв(34),1,1);
КонецЕсли;
КонецЦикла;
КонецЕсли;
Иначе
Предупреждение("Нет заданий на печать.",10);
КонецЕсли;
КонецЕсли;

КонецПроцедуры
9. UMix У (Umix) 15.11.13 08:39
(8) pophmail, вы правы (в публикации это тоже подчеркивается) очищать спулер на серваке решение не супер (для локального принтера если только)

Однако, читал, что использование "rundll32 printui.dll, PrintUIEntry" тоже не всегда срабатывает((
Все-таки думаю, применение Prnqctl.vbs будет предпочтительнее, хотя не совсем уверен.

... опять же хочется дотянуться до функции "очистить очередь печати" более простым способом через коллекцию свойств и функций (new Enumerator()), хотя может такого нет по природе и снова изобретаем велосипед(((
10. Олег Поцелуев (pophmail) 15.11.13 14:20
(9) Umix, если бы велосипеды не совершенствовали "изобретатели" - и сейчас они были бы с деревянными колёсами и рамой как самый первый ;-)...
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа