Получение списка принтеров и Подключение сетевого принтера Для работы с сетевыми ресурсами в WSH предназначен объект WshNetwork. Из "1С:Предприятие" можно напрямую управлять сетевыми ресурсами, в том числе и принтерами.
Получить список принтеров
Код 1C v 8.х Функция ПолучитьСписокПринтеров()
СписокПринтеров = Новый СписокЗначений;
СписокПринтеров.Очистить();
Принтеры = Новый COMОбъект(«WScript.Network»);
Prn = Принтеры.EnumPrinterConnections();
й = 0;
Пока й < Prn.Count() – 1 Цикл
СписокПринтеров.Добавить(Prn.Item(й + 1));
й = й + 2;
КонецЦикла;
Принтер = СписокПринтеров.ВыбратьЭлемент();
//даём пользователю выбрать принтер
Если Принтер <> Неопределено Тогда
……
Сообщить(Принтер.Значение); // например
……
КонецЕсли;
КонецФункции
Подключение сетевого принтера
Код 1C v 8.х //Создаём новый СОМ-объект
Сеть = Новый СОМОбъект("Wscript.Network");
Попытка
//устанавливаем принтер
Сеть.AddWindowsPrinterConnection("\\ИмяСервера\ИмяПринтера");
//делаем этот принтер принтером по умолчанию
Сеть.SetDefaultPrinter("\\ИмяСервера\ИмяПринтера");
Исключение
//в случае неудачного подключения принтера
Сообщить("Невозможно произвести подключение");
КонецПопытки;
Объект WshNetwork позволяет определить список подключенных сетевых
принтеров . Для этого используется метод EnumPrinterConnections, который возвращает коллекцию
принтеров . Данную коллекцию можно перебрать с помощью конструкции
Код 1C v 8.х Для каждого... из... Цикл...КонецЦикла
Категория:
COM-объекты, WMI, WSH Получить имя принтера выбранного по умолчанию Код 1C v 7.x // maharbA
Функция Hex(Пар)
Результат="";
Пока Пар>0 Цикл
Результат=Сред("0123456789ABCDEF",Пар+1,1)+Результат;
Пар=Цел(Пар/16) ;
КонецЦикла;
Возврат ""+Результат;
КонецФункции
Функция ПолучитьПринтерПоУмолчанию()
ПринтерПоУмолчанию="";
Scr = CreateObject("MSScriptControl.ScriptControl");
Scr.Language = "javascript";
Scr.Timeout=-1;
КоллекцияПринтеров = Service.ExecQuery("S_elect Name,Attributes from Win32_Printer");
Scr.AddObject("o",КоллекцияПринтеров);
e=Scr.eval("new Enumerator(o);");
Пока e.atEnd(0)=0 Цикл
БайтАтрибута=Прав(Hex(e.item(0).Attributes),1);
Если ((БайтАтрибута>"3") И (БайтАтрибута<"8")) или (БайтАтрибута>"B") Тогда
ПринтерПоУмолчанию=e.item(0).Name;
Прервать;
КонецЕсли;
e.moveNext(0);
КонецЦикла;
Возврат ПринтерПоУмолчанию;
КонецФункции
Категория:
COM-объекты, WMI, WSH