|
Сохранение имени принтера в параметрах печатной формы программно | ☑ | ||
---|---|---|---|---|
0
maker92
30.03.22
✎
04:16
|
Здравствуйте.
Есть задача: одним нажатием изменить и сохранить в параметрах нескольких печатных форм имя принтера. Стандартный способ изменения - это открытие параметров печати (в предварительном просмотре) и выбор принтера, но это нужно делать для каждой ПФ. Программно можно присвоить каждому табличному документу имя принтера, но параметры не сохраняются. Может есть какое то решение этой проблемы. Платформа 8.3.20.1549. Заранее спасибо. |
|||
1
Повелитель
30.03.22
✎
07:16
|
(0) У меня так реализовано.
На форме есть поле ввода ИмяПринтера со списокм выбора. Его можно заполнить и сохранить стандартными настройками сохранения реквизитов формы. Далее процедура печати: ПечатьДокумента(ЭлементыФормы.ПолеТабДокПросмотр, КолКопий, ИмяПринтера); Процедура ПечатьДокумента(ТабДок,КоличествоКопий,ИмяПринтера) Экспорт // побуждаем пользователя выбрать принтер: //ИмяПринтера = СписокПринтеров.ВыбратьЭлемент("Принтер для Печати",ТекСтрока); // в зависмости от выбранного значения, либо выполним непосредственную печать, либо на экран: Если НЕ ИмяПринтера = Неопределено Тогда ТабДок.ИмяПринтера = ИмяПринтера; // не предварительный просмотр, значит, принтер выбрали какой-то КонецЕсли; ТабДок.АвтоМасштаб = Истина; ТабДок.ПолеСверху = 0; ТабДок.ПолеСнизу = 0; ТабДок.ПолеСлева = 0; ТабДок.ПолеСправа = 0; ТабДок.РазмерКолонтитулаСверху = 0; ТабДок.РазмерКолонтитулаСнизу = 0; УниверсальныеМеханизмы.НапечататьДокумент(ТабДок,КоличествоКопий, Истина); КонецПроцедуры // Печать() Заполнение списка выбора поля ИмяПринетра // открываем СОМ-соединение с WMI: Локатор = Новый COMОбъект("WbemScripting.SWbemLocator"); // собственно метод ConnectServer() позволяет подключиться к службе WMI: СлужбаWMI = Локатор.ConnectServer(); // Переменная для списка принтеров в системе (метод InstancesOf предназначен для получения коллекции экземпляров указанного в скобках класса): ПринтерыВСистеме = СлужбаWMI.InstancesOf("Win32_Printer"); // заполним список принтеров, перебирая в цикле полученную коллекцию: Для Каждого Принтер Из ПринтерыВСистеме Цикл ЭлементыФормы.ИмяПринтера.СписокВыбора.Добавить(Принтер.Name); Если Принтер.Default Тогда // принтер, установленный на данном компьютере «по умолчанию», запомним сразу: ЭлементыФормы.ИмяПринтера.Значение = Принтер.Name; КонецЕсли; КонецЦикла; |
|||
2
ИС-2
naïve
30.03.22
✎
07:16
|
ТД = Новый ТабличныйДокумент;
Тд.ИмяПринтера = "123"; |
|||
3
PaulBC
30.03.22
✎
07:32
|
(0) >>"но параметры не сохраняются"
ТабДок.КлючПараметровПечати = "КлючПараметровПечатиДляСохраненияНастроекМоегоТабДокумента"; |
|||
4
maker92
30.03.22
✎
07:39
|
(3) При установке ключа параметры заполняются в ТД. Но при изменении их они не сохраняются.
|
|||
5
maker92
30.03.22
✎
07:40
|
(1) Вы предлагаете программно каждый раз устанавливать принтер. Я хотел найти решение, при котором имя принтера будет сохраняться в параметрах, и при следующей печати не нужно будет его устанавливать.
|
|||
6
Повелитель
30.03.22
✎
07:46
|
(5) Я же ответил. 1 раз выбрать в реквизите и:
На форме есть поле ввода ИмяПринтера со списокм выбора. Его можно заполнить и сохранить стандартными настройками сохранения реквизитов формы. |
|||
7
Повелитель
30.03.22
✎
07:48
|
(6) Вот так это выглядит в работе:
https://disk.yandex.com/i/gvvq4VgO8Sz8Cg |
|||
8
maker92
30.03.22
✎
08:03
|
(6) Понятно. Видимо так и сделаю. Спасибо
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |