1С 8.3 Получить список принтеров
Данные > Примеры кода 1С > 1С 8.3 Приложение, система, интерфейс
Перейти в основной раздел:
Пример 1:
&НаКлиенте
Функция ПолучитьМассивПринтеров1()
СписокПринтеров = Новый Массив;
Попытка
COMОбъект = ПолучитьCOMОбъект("winmgmts:\\.\root\CIMV2");
Исключение
ТекстСообщения = НСтр("ru = 'Список принтеров не доступен!'");
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстСообщения);
Возврат СписокПринтеров;
КонецПопытки;
ВыборкаПринтеров = COMОбъект.ExecQuery("SELECT * FROM Win32_Printer",,48);
Для Каждого ЭлементCOM Из ВыборкаПринтеров Цикл
СписокПринтеров.Добавить(ЭлементCOM.Caption);
КонецЦикла;
Возврат СписокПринтеров;
КонецФункции
Функция ПолучитьМассивПринтеров1()
СписокПринтеров = Новый Массив;
Попытка
COMОбъект = ПолучитьCOMОбъект("winmgmts:\\.\root\CIMV2");
Исключение
ТекстСообщения = НСтр("ru = 'Список принтеров не доступен!'");
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстСообщения);
Возврат СписокПринтеров;
КонецПопытки;
ВыборкаПринтеров = COMОбъект.ExecQuery("SELECT * FROM Win32_Printer",,48);
Для Каждого ЭлементCOM Из ВыборкаПринтеров Цикл
СписокПринтеров.Добавить(ЭлементCOM.Caption);
КонецЦикла;
Возврат СписокПринтеров;
КонецФункции
Объект встроенного языка "ТабличныйДокумент", обладает свойством "ИмяПринтера". Данное свойство содержит имя принтера, известного в системе, на который будет выводиться табличный документ при печати. Для того чтобы отправить табличный документ на определенный принтер, необходимо получить список доступных устройств для печати. COM-объект "WScript.Network" позволяет получить список установленных принтеров в системе.
Функция "ПолучитьМассивПринтеров2" возвращает массив структур. Каждая структура содержит "Порт" и "Имя" принтера. Для распечатки табличного документа, на нужном принтере, необходимо задать свойство "ИмяПринтера" и вызвать метод "Напечатать()".// by Михaил Кaлинин
Пример 2
Функция ПолучитьМассивПринтеров2()
СписокПринтеров = Новый Массив;
COMОбъект = Новый COMОбъект("WScript.Network");
ВыборкаПринтеров = COMОбъект.EnumPrinterConnections();
КоличествоПринтеров = ВыборкаПринтеров.length - 1;
Для Номер = 0 По КоличествоПринтеров Цикл
ТекСтруктура = Новый Структура("Порт, Имя");
ТекСтруктура.Порт = ВыборкаПринтеров.Item(Номер);
Номер = Номер + 1;
ТекСтруктура.Имя = ВыборкаПринтеров.Item(Номер);
СписокПринтеров.Добавить(ТекСтруктура);
КонецЦикла;
Возврат СписокПринтеров;
// Например возьмём имя принтера из элемента массива с индексом "0".
// ТабДок = Новый ТабличныйДокумент();
// ТабДок.ИмяПринтера = МассивПринтеров[0]["Имя"];
// ТабДок.Напечатать();
КонецФункции
СписокПринтеров = Новый Массив;
COMОбъект = Новый COMОбъект("WScript.Network");
ВыборкаПринтеров = COMОбъект.EnumPrinterConnections();
КоличествоПринтеров = ВыборкаПринтеров.length - 1;
Для Номер = 0 По КоличествоПринтеров Цикл
ТекСтруктура = Новый Структура("Порт, Имя");
ТекСтруктура.Порт = ВыборкаПринтеров.Item(Номер);
Номер = Номер + 1;
ТекСтруктура.Имя = ВыборкаПринтеров.Item(Номер);
СписокПринтеров.Добавить(ТекСтруктура);
КонецЦикла;
Возврат СписокПринтеров;
// Например возьмём имя принтера из элемента массива с индексом "0".
// ТабДок = Новый ТабличныйДокумент();
// ТабДок.ИмяПринтера = МассивПринтеров[0]["Имя"];
// ТабДок.Напечатать();
КонецФункции
Пример 3 (обязательно через попытку):
Функция ПолучитьМассивПринтеров3()
СписокПринтеров = Новый Массив;
Попытка
COMОбъект = Новый COMОбъект("WbemScripting.SWbemLocator");
COMСоединение = COMОбъект.ConnectServer(".");
УстановкаОбъект = COMСоединение.InstancesOf("Win32_Printer");
Для Каждого ЭлементОбъект Из УстановкаОбъект Цикл
СписокПринтеров.Добавить(СокрЛП(ЭлементОбъект.Caption));
КонецЦикла;
Исключение
КонецПопытки;
Возврат СписокПринтеров;
КонецФункции
СписокПринтеров = Новый Массив;
Попытка
COMОбъект = Новый COMОбъект("WbemScripting.SWbemLocator");
COMСоединение = COMОбъект.ConnectServer(".");
УстановкаОбъект = COMСоединение.InstancesOf("Win32_Printer");
Для Каждого ЭлементОбъект Из УстановкаОбъект Цикл
СписокПринтеров.Добавить(СокрЛП(ЭлементОбъект.Caption));
КонецЦикла;
Исключение
КонецПопытки;
Возврат СписокПринтеров;
КонецФункции
0
комментарии
____________________
Перепечатка текста и фотографий разрешена при наличии прямой ссылки на источник