Как настроить параметры страницы при печати ценников в 1С и включить диалог печати?

Программист 1С v8.3 (Управляемые формы) Управленческий учет Сфера услуг, туризм и социальный сектор
← На главную

При автоматизации розничной торговли и сферы услуг, в частности в конфигурации «1С:Салон красоты» (разработки компании «Хеликс»), пользователи часто сталкиваются с неудобством при печати ценников и этикеток. Программа отправляет документ напрямую на принтер, не открывая стандартное диалоговое окно настройки печати. В результате невозможно изменить принтер, настроить поля, выбрать нужный формат бумаги или изменить ориентацию страницы. Ценники могут съезжать, печататься некорректно или выходить на обычном офисном принтере вместо специализированного принтера этикеток.

В этой статье мы подробно разберем, почему возникает эта проблема, как локализовать ее в коде конфигурации и какими способами ее можно решить как программным путем, так и с помощью стандартных пользовательских настроек без изменения кода.

Выясняем причину: почему ценники уходят на печать «вслепую»?

В платформе «1С:Предприятие» за вывод печатных форм отвечает объект ТабличныйДокумент. Этот объект обладает методом Напечатать(), который отправляет сформированный макет на принтер. Поведение этого метода напрямую зависит от переданных в него параметров.

Синтаксис метода выглядит следующим образом:

ТабличныйДокумент.Напечатать(РежимИспользованияДиалогаПечати)

Параметр РежимИспользованияДиалогаПечати определяет, будет ли программа показывать пользователю стандартное системное окно выбора принтера и настройки параметров перед отправкой данных на печать. Данный параметр принимает значения из системного перечисления:

  1. НеИспользовать — документ мгновенно отправляется на принтер, установленный в системе по умолчанию (или на принтер, жестко привязанный к этой печатной форме в кэше). Диалог настройки пользователю не показывается. Именно это значение чаще всего установлено по умолчанию разработчиками в обработках быстрой печати этикеток.
  2. Использовать — перед печатью всегда открывается окно настройки параметров, где пользователь может вручную изменить масштаб, поля, выбрать другое печатающее устройство.
  3. ИспользоватьДляСемействаПринтеров — диалоговое окно будет показано только в том случае, если текущий принтер отличается от ранее использовавшегося для этого типа документов.

Проанализируем ситуацию и рассмотрим все возможные пути исправления этой проблемы.

---

Способ 1. Поиск и исправление кода через Конфигуратор (Для программистов)

Если вы имеете доступ к конфигуратору и база находится не на поддержке (или изменения вносятся через механизм расширений), этот способ является наиболее надежным. Нам нужно найти строчку кода, которая отвечает за непосредственную отправку табличного документа на принтер, и изменить параметры вызова метода.

Разберем по шагам, как быстро найти нужный участок кода с помощью встроенного инструмента «Замер производительности»:

  1. Запустите базу в режиме Конфигуратор.
  2. Откройте сеанс в режиме 1С:Предприятие из конфигуратора (нажав клавишу F5).
  3. В режиме «1С:Предприятие» перейдите к обработке печати ценников, заполните ее данными и подготовьтесь к нажатию кнопки «Печать».
  4. Вернитесь в окно Конфигуратора и в главном меню выберите пункт Отладка — Замер производительности (или нажмите соответствующую кнопку на панели инструментов). Замер начнется.
  5. Перейдите в окно «1С:Предприятие» и нажмите кнопку Печать. Дождитесь отправки документа на принтер.
  6. Сразу после этого вернитесь в Конфигуратор и снова нажмите Отладка — Замер производительности, чтобы остановить запись.
  7. Перед вами откроется таблица со списком всех выполненных строк кода. Нажмите кнопку «Сортировать по числу строк» или воспользуйтесь поиском (Ctrl + F), введя ключевое слово .Напечатать(.

Вы обнаружите строку, которая выглядит примерно так:


ТабДок.Напечатать(РежимИспользованияДиалогаПечати.НеИспользовать);
// Или в более старых конфигурациях:
ТабДок.Напечатать(Ложь);

Чтобы программа начала показывать диалоговое окно перед печатью ценников, замените эту строку кода на следующую:


ТабДок.Напечатать(РежимИспользованияДиалогаПечати.Использовать);
// Или для старых версий платформы:
ТабДок.Напечатать(Истина);

После сохранения изменений при каждом нажатии на кнопку печати ценников перед отправкой на принтер будет появляться стандартное системное окно настройки печати.

---

Способ 2. Замена прямой печати на предварительный просмотр

Иногда показывать диалог настройки принтера при каждом нажатии кнопки неудобно (требуется делать слишком много лишних кликов). Более элегантное решение — выводить ценники на экран в режиме предварительного просмотра. Из этого окна пользователь сможет визуально оценить макет, настроить параметры страницы через меню «Файл — Параметры страницы» и отправить документ на печать вручную.

Для реализации этого подхода найдите в коде процедуру вывода печатной формы и замените вызов метода Напечатать() на метод Показать():


// Вместо прямой отправки на принтер:
// ТабДок.Напечатать(РежимИспользованияДиалогаПечати.НеИспользовать);

// Выводим документ на экран в отдельном окне:
ТабДок.ТолькоПросмотр = Истина; // Защищаем документ от случайного редактирования пользователем
ТабДок.Показать("Печать ценников и этикеток");

Этот способ хорош тем, что пользователь видит реальное расположение ценников на листе перед тем, как переводить бумагу или дорогостоящую ленту этикеток.

---

Способ 3. Жесткое программное определение параметров страницы (Без вывода диалога)

Если ваша задача — сделать так, чтобы печать происходила в «один клик», но при этом параметры страницы (поля, размеры, масштаб) определялись корректно без участия пользователя, вы можете задать эти свойства табличного документа непосредственно в коде перед вызовом печати.

Рассмотрим пример настройки табличного документа под стандартную ленту принтера этикеток размером 40х30 мм с нулевыми полями:


// Задаем имя принтера, чтобы документ отправлялся на правильное устройство
ТабДок.ИмяПринтера = "Xprinter XP-365B"; 

// Устанавливаем автонастройку масштаба, чтобы ценник автоматически вписывался в границы
ТабДок.Автомасштаб = Истина; 

// Задаем ориентацию страницы (Портрет или Ландшафт)
ТабДок.ОриентацияСтраницы = ОриентацияСтраницы.Портрет;

// Задаем нестандартный размер бумаги в миллиметрах
ТабДок.РазмерСтраницы = "Custom";
ТабДок.ШиринаСтраницы = 40; // Ширина 40 мм
ТабДок.ВысотаСтраницы = 30; // Высота 30 мм

// Обнуляем поля, чтобы область печати использовалась максимально эффективно
ТабДок.Поля.Лево   = 0;
ТабДок.Поля.Право  = 0;
ТабДок.Поля.Верх   = 0;
ТабДок.Поля.Низ    = 0;

// Теперь отправляем на печать без вывода лишних окон
ТабДок.Напечатать(РежимИспользованияДиалогаПечати.НеИспользовать);

Такой подход полностью автоматизирует процесс работы кассира или администратора салона красоты: программа сама подставит нужные размеры и отправит документ на правильный принтер.

---

Способ 4. Пользовательские решения (Без изменения конфигурации)

Если у вас нет возможности редактировать код программы, изменять конфигурацию или привлекать программиста, решить проблему с некорректными полями и размерами при «слепой» печати можно стандартными средствами платформы 1С.

Выясним, какие пользовательские механизмы управления печатью нам доступны.

Встроенная настройка в обработке печати ценников

В конфигурации «1С:Салон красоты» и других современных решениях на базе БСП (Библиотеки Стандартных Подсистем) в форме печати этикеток часто присутствует флажок «Печать без предварительного просмотра» (или аналогичный ему «Печать на принтер напрямую»). Проанализируйте форму настроек обработки:

Лайфхак с принудительным сохранением параметров через предварительный просмотр

Платформа 1С сохраняет настройки параметров страниц для каждого типа документов индивидуально в локальном кэше пользователя на компьютере. Мы можем заставить систему запомнить правильные настройки для автоматической печати. Выполним следующие шаги:

  1. Откройте макет ценника или найдите любую печатную форму в программе, которую можно вывести на экран (в режим предварительного просмотра).
  2. Когда документ отобразится на экране, перейдите в главное меню 1С: Таблица — Настройка печати — Параметры страницы (в зависимости от версии интерфейса меню может находиться в верхнем правом углу под кнопкой «Сервис и настройки» — «Файл»).
  3. В открывшемся окне выберите ваш принтер этикеток.
  4. Установите правильный размер бумаги (например, 58х40 или 40х30), обнулите все поля (левое, правое, верхнее, нижнее) и выберите масштаб «По ширине страницы» или «Автомасштаб».
  5. Нажмите кнопку «Печать» и распечатайте один пробный экземпляр.

После этой процедуры платформа запишет данные настройки в ваш пользовательский профиль. При следующей быстрой печати ценников (даже вслепую без вызова диалога) программа автоматически применит именно эти сохраненные параметры.

Очистка кэша настроек печати при сбоях

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

  1. Перейдите в раздел Администрирование — Настройки пользователей и прав.
  2. Выберите пункт «Персональные настройки пользователей».
  3. Найдите команду «Очистить настройки печати табличных документов» (или очистите конкретные настройки для нужного пользователя).
  4. После очистки повторите процедуру настройки принтера и параметров страницы заново.

Используя приведенные программные методы изменения параметров ТабличныйДокумент или воспользовавшись хитростями кэширования настроек печати в самой платформе, вы сможете легко добиться корректной и быстрой печати ценников в «1С:Салон красоты».

← На главную