Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
15 дек 2024, 10:54

Программно изменить принтер в шаблоне этикетки

Автор Пронырий, 02 дек 2020, 16:18

0 Пользователей и 1 гость просматривают эту тему.

Пронырий

Есть шаблон этикетки (вообще - любой шаблон для печати), он помнит, какой принтер выбран интерактивно.
Вопрос: а можно ли как-то поменять выбор принтера программно?
Думаю, что от конфигурации, и даже от версии платформы (в разумных пределах) - это не зависит. Скорее всего, речь идёт о "ХранилищеСистемныхНастроек".
Если невозможно прямо поменять, то может быть, можно скопировать настройки из какого-то "эталона"?

LexaK

а что сложного? задаете имя принтера как в системе прописано (можно в 1С в какие настройки поместить) и печатаете

ТабДок.ИмяПринтера="HP LaserJet 3050 Series PCL 6";
ТабДок.Напечатать();

или так

ТабДок.ИмяПринтера=Константы.ТекущийПринтер.Получить();
ТабДок.Напечатать();
если помогло нажмите: Спасибо!

Пронырий

Цитата: LexaK от 02 дек 2020, 16:34а что сложного? задаете имя принтера

Вопрос: Программно изменить принтер в шаблоне этикетки
То, что можно подсунуть принтер в ТабДок - это понятно, но - не решает проблему. Если кратко, то: шаблон выбирается динамически, а принтер - должен выбираться по шаблону. Нормальным решением получается - сохранить принтер в шаблон.

LexaK

сделать/использовать какой-то регистр/справочник настроек, туда записать таблицу, строки
имяШаблона --- ИмяПринтера
соответственно при печати/формировании Этикетки, смотреть эту настройку и по имени шаблона получать и задавать имя принтера
если помогло нажмите: Спасибо!

Пронырий

Цитата: LexaK от 03 дек 2020, 17:38смотреть эту настройку и по имени шаблона получать и задавать имя принтера

Ещё раз повторю: то, что в табличный документ можно выставить принтер - я знаю прекрасно. Вопрос в том, чтобы:
1) выбранный принтер засунуть именно в шаблон
2) шаблон сохранить с этой настройкой

LexaK

ну ладно, если предложение с настройкой не понятно, вот вам такой вариант
прямо в макете/шаблоне вашей этикетке создаете Область: ИмяПринтера, в ней, сразу в первой ячейке, пишите ваше нужное имя принтера
во всех этикетках должно быть одинаковое наименование этой области а дальше в коде при печати этикетки добавляете такой код

тдЭтикетка = Новый ТабличныйДокумент;
облПринтер = МакетЭтикетки.ПолучитьОбласть("ИмяПринтера");
тдЭтикетка.ИмяПринтера = облПринтера.Область(1,1,1,1).Текст; //имя принтера как задано в Макете, данной этикетки

если помогло нажмите: Спасибо!

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск