При разработке системы печати этикеток в конфигурациях, где отсутствуют типовые механизмы (например, Библиотека стандартных подсистем или готовые примеры внешних печатных форм), разработчики часто сталкиваются с проблемой: в редакторе макетов 1С отсутствует привычная линейка в миллиметрах или сантиметрах — для этого подойдёт настройка макетов и генерация кодов в пользовательском режиме 1С. Размеры колонок и строк измеряются во внутренних единицах платформы, что затрудняет создание этикетки под конкретный физический размер ленты (например, 58х40 мм или 40х30 мм).
В этой статье мы подробно разберем, как перевести внутренние единицы 1С в миллиметры, рассмотрим профессиональные методы калибровки макетов и выясним, как правильно настроить программный вывод этикетки на печать.
Рассмотрим первый и самый быстрый способ — расчет размеров через коэффициенты. В системе 1С:Предприятие 8 размеры ячеек определяются следующим образом: ширина колонки измеряется в средних символах шрифта, а высота строки — в пунктах (pt). Экспериментальным путем и на основе документации определены средние значения для стандартного шрифта Arial размером 8 пунктов.
Проанализируем базовые формулы:
Посмотрим на пример установки размеров программно, если вы создаете макет динамически:
// Пример установки размеров для этикетки 40х30 мм
Область = Макет.ПолучитьОбласть("Этикетка");
// Устанавливаем ширину колонки (40 мм / 1.875)
Область.Область(1, 1).ШиринаКолонки = 21.33;
// Устанавливаем высоту строки (30 мм / 0.3528)
Область.Область(1, 1).ВысотаСтроки = 85;
Выясним, как сделать макет максимально точным, если коэффициенты дают погрешность из-за настроек конкретного принтера или операционной системы. Этот метод, учитывающий особенности объектной модели печатной формы, считается стандартом при разработке в среде 1С. Суть заключается в создании «калибровочного» макета.
Разберем этот процесс по шагам:
Если на бумаге 100 единиц ширины превратились в 188 мм, значит, ваш индивидуальный коэффициент для данной системы: 188 / 100 = 1.88 мм за единицу. Используя этот коэффициент и универсальную форму отладки, вы сможете идеально подогнать макет под любую ленту. В типовых конфигурациях часто встречается макет с именем Эталон, который служит именно для этих целей.
Иногда не обязательно высчитывать размеры до пикселя в самом макете. Современные драйверы принтеров этикеток умеют самостоятельно масштабировать документ, что особенно актуально при печати на мобильных принтерах по bluetooth. Однако, чтобы это работало корректно, мы должны правильно настроить объект ТабличныйДокумент в коде 1С.
Рассмотрим ключевые свойства, которые необходимо установить перед выводом на печать:
ТабДок = Новый ТабличныйДокумент;
// Имя принтера и настройки страницы
ТабДок.ИмяПринтера = "Zebra_GC420t"; // Укажите имя вашего принтера
ТабДок.АвтоМасштаб = Истина; // Позволяет вписать макет в границы этикетки
ТабДок.ОриентацияСтраницы = ОриентацияСтраницы.Портрет;
// Установка полей в 0 — критически важно для термопринтеров!
ТабДок.ПолеСверху = 0;
ТабДок.ПолеСнизу = 0;
ТабДок.ПолеСлева = 0;
ТабДок.ПолеСправа = 0;
// Вывод макета
ТабДок.Вывести(ОбластьЭтикетки);
ТабДок.Напечатать(РежимИспользованияПринтера.ПечатьБезПросмотра);
Важный момент: если вы используете АвтоМасштаб = Истина, 1С попытается растянуть или сжать макет так, чтобы он заполнил всю область печати, заданную в драйвере принтера. Если ваш макет в 1С будет иметь формат листа А4, а печатать вы будете на этикетку 30х20 мм, мелкие элементы (например, текст штрихкода) могут стать нечитаемыми. Поэтому старайтесь максимально приблизить пропорции макета в 1С к реальным пропорциям этикетки.
Проанализируем ситуацию, когда в макет нужно добавить штрихкод. Поскольку мы работаем в конфигурации без готовых библиотек, у нас есть два пути:
Штрихкод — есть готовая обработка для добавления штрихкодов в печатные формы 1С. В этом случае размер штрихкода в миллиметрах будет жестко привязан к размеру этого рисунка в макете.Для предотвращения проблем со сканированием, мы рекомендуем при использовании рисунков устанавливать свойство РазмерКартинки в значение Пропорционально или Реальный размер. Избегайте растягивания (Растянуть), так как это может исказить толщину линий штрихкода, и сканер не сможет его распознать.
Чтобы ваша этикетка выглядела профессионально и всегда считывалась, придерживайтесь следующих правил:
РазмещениеТекста в значение Обрезать или Авто, чтобы случайное длинное наименование товара не «развалило» макет при печати.Таким образом, даже при отсутствии специализированных инструментов, используя метод эталонного квадрата и правильные коэффициенты пересчета, можно добиться идеальной точности печати этикеток в любой конфигурации 1С.