Отправка документов напрямую на принтер Ключевые слова: Принтер
Чтобы иметь возможность отправлять документы на необходимые принтеры программным путем, необходимо следующее (платформа 8.0, Управление торговлей, ред. 10.2):
1) получить список принтеров, об этом много информации в интернете, но повторюсь:
ВыборПринтеров.Очистить(); // список значений
принтеры = Новый COMОбъект ("WScript.Network");
prn = принтеры.EnumPrinterConnections();
i = 0;
Пока i < prn.Count()-1 Цикл
ВыборПринтеров.Добавить(prn.Item(i+1));
i = i + 2;
КонецЦикла;
ЭтаФорма.ЭлементыФормы.Принтеры1.СписокВыбора = ВыборПринтеров; // загоняем в комбобокс
2) на шаге 1 имеем список принтеров
3) идем в "Общий модуль РаботаСДиалогами" и ищем функцию
Процедура НапечататьДокумент(ПечДокумент, КоличествоЭкземпляров = 1, НаПринтер = Ложь, Заголовок = "") Экспорт
4) Добавляем в нее дополнительный параметр - имя принтера
Процедура НапечататьДокумент(ПечДокумент, КоличествоЭкземпляров = 1, НаПринтер = Ложь, Заголовок = "", ИмяПринтера = "") Экспорт
5) ищем строчку "если НаПринтер Тогда..." и добавляем после нее
если не (СокрЛПП(ИмяПринтера) = "")
ПечДокумент.ИмяПринтера = ИмяПринтера;
конецесли;
6) для каждого объекта, который мы будем печатать, правим функцию "Печать"
По умолчанию параметры следующие:
Процедура Печать(ИмяМакета, КоличествоЭкземпляров = 1, НаПринтер = Ложь) Экспорт как на шаге 3 добавляем параметр ИмяПринтера
И не забываем добавить его в
НапечататьДокумент(ТабДокумент, КоличествоЭкземпляров, НаПринтер, СформироватьЗаголовокДокумента(ЭтотОбъект, ЭтотОбъект.Метаданные().Представление()),ИмяПринтера);
(она будет в самом конце)
7) и в нашем обработчике вызваем функцию печать с нашими параметрами, например,
Реализация.Печать(МакетРеализации, , истина, ЭтаФорма.ЭлементыФормы.Принтеры1.ВыделенныйТекст );
P.S. Имя принтера (на компьютере, к которому он подключен) должно быть без пробелов! Иначе вся программная реализация печати коту под хвост (печать уходит в никуда)! |