1С 8.3 Получить список принтеров - Программист 1С Минск. Автоматизация бизнеса.

Перейти к контенту

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);
   КонецЦикла;

   Возврат СписокПринтеров;

КонецФункции
Объект встроенного языка "ТабличныйДокумент", обладает свойством "ИмяПринтера". Данное свойство содержит имя принтера, известного в системе, на который будет выводиться табличный документ при печати. Для того чтобы отправить табличный документ на определенный принтер, необходимо получить список доступных устройств для печати. COM-объект "WScript.Network" позволяет получить список установленных принтеров в системе.
Функция "ПолучитьМассивПринтеров2" возвращает массив структур. Каждая структура содержит "Порт" и "Имя" принтера. Для распечатки табличного документа, на нужном принтере, необходимо задать свойство "ИмяПринтера" и вызвать метод "Напечатать()".// by Михaил Кaлинин
Пример 2
Функция ПолучитьМассивПринтеров2()

   СписокПринтеров = Новый Массив;

   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));
       КонецЦикла;
   Исключение
   КонецПопытки;

   Возврат СписокПринтеров;

КонецФункции
0
комментарии
____________________
Copyright©, «Программист 1С в г.Минске», 01.09.2021
Перепечатка текста и фотографий разрешена при наличии прямой ссылки на источник
Яндекс.Метрика
Защищенное соединение ssl
visa
mastercard
Maestro
Яндекс деньги
Назад к содержимому