Выбор или изменение на по умолчанию принтер при печати из Excel (Com объект)

1. iCortezik 8 05.08.20 07:29 Сейчас в теме
Добрый день, есть задача: В регламентном задании провести документ и отправить его на печать на сетевой принте (их в дальнейшем будет около 3-5, нужно будет выбирать куда слать документ).

Варианты:
1. Запускать виндовым заданием 1С и обработку на сервере и обрабатывать ПФ на клиенте и проблем по идее не каких нету, так как вроде ТабДок.Напечатать() клиентская функция.

про ТабДок.Напечатать();
Доступность:
Тонкий клиент, веб-клиент, мобильный клиент, толстый клиент, мобильное приложение (клиент


2. Установив на сервере Excel, можно сформировать таб док, сохранить его в xlsx в temp и оттуда открыть через EXCEL.Application . И и печатать методом PrintOut(). НО! Сложность в том что он если без параметров печатает на принтер по умолчанию (логично так то), а задать имя принтера можно , но в формате "PrinterName (Ne05:)", то что в скобках мне не ясно, по началу думал порядковый номер при длобавлении, но оказалось что они меняются (переодичность не вычислил). Был 05, стал 02. Следовательно если печатаю по имени принтера то он не видит его и падает в ошибку.


Вопросы:

1. Как можн ополучить имя принтера в формате "Имя (Ne05:)" в 1С
2. Либо как поменять принтер по умолчанию на другой по названию в фоновом задании
По теме из базы знаний
Найденные решения
2. iCortezik 8 05.08.20 12:01 Сейчас в теме
ИмяПринтера - как в параметрах

Нашел решение:



//LAS делаю принтер который нужно поумолчанию
	
	Попытка
		WinMGMT = ПолучитьCOMОбъект("winmgmts:\\" +ИмяКомпьютера()+ "\root\cimv2");
		Printers = WinMGMT.ExecQuery("Select * fr om Win32_Printer");
		
		Для Каждого Printer ИЗ Printers Цикл
			if(Printer.Name = ИмяПринтера) then
				Printer.SetDefaultPrinter();
			endif
		КонецЦикла;
	Исключение
	КонецПопытки;
//**
	


Показать
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. iCortezik 8 05.08.20 12:01 Сейчас в теме
ИмяПринтера - как в параметрах

Нашел решение:



//LAS делаю принтер который нужно поумолчанию
	
	Попытка
		WinMGMT = ПолучитьCOMОбъект("winmgmts:\\" +ИмяКомпьютера()+ "\root\cimv2");
		Printers = WinMGMT.ExecQuery("Select * fr om Win32_Printer");
		
		Для Каждого Printer ИЗ Printers Цикл
			if(Printer.Name = ИмяПринтера) then
				Printer.SetDefaultPrinter();
			endif
		КонецЦикла;
	Исключение
	КонецПопытки;
//**
	


Показать
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот