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

Обработки - Рабочее место

Удобная настройка принтеров в терминальном режиме сервера 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
.ert 182,00Kb
08.11.13
9
.ert 182,00Kb 9 Скачать

См. также

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

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

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