Термопринтер и 1С 8.3: шаблон, драйвер и печать штрихкода на ленту
Содержание
Чтобы печатать этикетки
в 1С на принтере этикеток, нужно три вещи: в драйвере Windows задать размер этикетки (например, 58×40 мм) и откалибровать датчик, в 1С создать шаблон
этикетки под этот же размер, а затем печатать из списка номенклатуры или документа командой Печать → Этикетки. Если типового шаблона мало, делают внешнюю печатную форму и подключают её в разделе Администрирование → Печатные формы, отчеты и обработки.
Типичная ситуация: склад купил термопринтер, подключил по USB, нажал «Печать» на этикетках — и получил кусок формы A4, размазанный на пять наклеек, или пустую ленту через одну. Почти всегда проблема не в 1С, а в том, что размер «бумаги» в драйвере и размер макета в программе не совпадают. Задача — добиться, чтобы одна этикетка из 1С ложилась ровно на одну наклейку. Всё описанное относится к платформе 8.3 с интерфейсом «Такси», Бухгалтерии 3.0 и Управлению торговлей 11.
Подготовка принтера этикеток: драйвер, лента, калибровка
Принтеры Zebra, TSC, Godex, Argox, АТОЛ, Xprinter работают с 1С двумя путями. Первый — как обычный принтер Windows: 1С строит табличный документ, драйвер переводит его в команды принтера. Второй — через подключаемое оборудование, когда 1С отправляет на принтер готовую программу на его языке (ZPL, EPL, TSPL). Для старта почти всегда хватает первого пути.
Порядок подготовки:
- Установите драйвер с сайта производителя принтера. Универсальный драйвер Windows «Generic / Text Only» не подойдёт: он не знает размеров этикетки.
- Заправьте ленту и, если принтер термотрансферный, риббон. Для термоэтикеток риббон не нужен.
- Откройте
Панель управления → Устройства и принтеры, правой кнопкой по принтеру —Настройка печати. - Создайте или выберите формат бумаги, равный этикетке: ширина и высота в миллиметрах, без учёта зазора.
- Укажите тип носителя: этикетки с зазором (gap), с чёрной меткой (black mark) или непрерывная лента.
- Выполните калибровку датчика. В драйвере это кнопка калибровки в настройках, на корпусе — обычно долгое удержание кнопки подачи (Feed). Точную комбинацию берите из инструкции модели.
- Напечатайте тестовую страницу из драйвера. Если тест выходит ровно на одну этикетку — принтер готов.
Сохраните формат этикетки в драйвере как значение по умолчанию. Иначе 1С при первой печати подставит A4, и лента уйдёт метром.
Настройки 1С для печати этикеток и ценников
Типовой механизм печати этикеток есть и в Бухгалтерии 3.0, и в Управлении торговлей 11. Работает он одинаково: есть справочник шаблонов, а при печати открывается обработка, где вы выбираете товары, шаблон и количество копий.
| Конфигурация | Где печатать этикетки | Где лежат шаблоны |
|---|---|---|
| Бухгалтерия 3.0 | Список номенклатуры или документ поступления: Печать → Этикетки | Справочник «Шаблоны этикеток и ценников», открывается из формы печати |
| УТ 11 | Обработка «Печать этикеток и ценников»: из документа поступления, заказа, списка номенклатуры через команду печати | Тот же справочник «Шаблоны этикеток и ценников» |
В УТ 11 есть отдельные виды шаблонов: для этикеток товаров, для ценников, для складских ячеек. В Бухгалтерии набор скромнее: этикетка и ценник по номенклатуре.
Подключение принтера как оборудования
Второй путь — подключить принтер в 1С как оборудование типа «Принтер этикеток». Это нужно, когда печатать надо много и быстро, без промежуточного табличного документа.
- Включите подключаемое оборудование: в Бухгалтерии —
Администрирование → Подключаемое оборудование, в УТ 11 —НСИ и администрирование → Администрирование → РМК и оборудование. - Откройте список оборудования и добавьте экземпляр с типом «Принтеры этикеток».
- Выберите драйвер, совместимый с вашей моделью, и установите его кнопкой в карточке.
- Задайте порт (USB, COM или сетевой адрес) и выполните тест устройства.
Шаблон для драйвера принтера этикеток пишется на языке принтера и не совпадает с шаблоном табличного документа. Обычный шаблон из справочника на такое устройство не уйдёт.
Шаблон этикетки в 1С: как создать и отредактировать
Шаблон — это макет на одну этикетку. В нём есть текстовые поля, подстановки (наименование, артикул, цена) и картинка штрихкода.
Создание шаблона в типовой конфигурации
- Откройте печать этикеток из списка номенклатуры.
- В поле выбора шаблона откройте справочник «Шаблоны этикеток и ценников» и нажмите
Создать. - Укажите назначение шаблона: этикетка товара или ценник.
- В редакторе задайте размер области под этикетку. Ширина и высота должны быть на 1–2 мм меньше физической наклейки — иначе принтер перенесёт край на следующую.
- Перетащите в ячейки нужные поля из списка доступных: наименование, артикул, штрихкод, цену, единицу измерения.
- Для штрихкода выберите вставку картинки и тип кода: EAN-13 для розничного товара, Code 128 для складских кодов.
- Запишите шаблон и проверьте его через предварительный просмотр.
💡 Текст наименования ставьте в ячейку с переносом по словам и фиксированной высотой. Длинное название «Кабель ВВГнг 3х2,5 бухта 100 м» иначе растянет строку и вытолкнет штрихкод на вторую этикетку.
Внешняя печатная форма этикетки
Если типовой шаблон не справляется — нужна своя логика, данные из другого справочника, несколько этикеток на одну позицию по количеству из документа — пишут внешнюю печатную форму (файл .epf). Её подключают без изменения конфигурации, поэтому обновления 1С она не мешает.
Подключение готовой формы:
- Включите флажок дополнительных отчётов и обработок в разделе
Администрирование → Печатные формы, отчеты и обработки. - Откройте
Дополнительные отчеты и обработки, нажмитеДобавить из файлаи выберите.epf. - На вкладке размещения проверьте, что форма привязана к справочнику «Номенклатура».
- Запишите. Команда появится в меню
Печатьсписка номенклатуры.
Каркас модуля объекта для БСП: регистрация и формирование табличного документа. В макете обработки область Этикетка с параметрами Наименование, Артикул и рисунком Штрихкод.
Функция СведенияОВнешнейОбработке() Экспорт
ПараметрыРегистрации = ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке();
ПараметрыРегистрации.Вид = ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиПечатнаяФорма();
ПараметрыРегистрации.Версия = "1.0";
ПараметрыРегистрации.Назначение.Добавить("Справочник.Номенклатура");
Команда = ПараметрыРегистрации.Команды.Добавить();
Команда.Представление = "Этикетка 58x40";
Команда.Идентификатор = "Этикетка5840";
Команда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыВызовСерверногоМетода();
Команда.Модификатор = "ПечатьMXL";
Возврат ПараметрыРегистрации;
КонецФункции
Процедура Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт
ТабДок = СформироватьЭтикетки(МассивОбъектов);
УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм,
"Этикетка5840", "Этикетка 58x40", ТабДок);
КонецПроцедуры
Функция СформироватьЭтикетки(МассивОбъектов)
ТабДок = Новый ТабличныйДокумент;
ТабДок.ПолеСверху = 0;
ТабДок.ПолеСнизу = 0;
ТабДок.ПолеСлева = 0;
ТабДок.ПолеСправа = 0;
ТабДок.АвтоМасштаб = Истина;
Макет = ПолучитьМакет("Этикетка");
Первая = Истина;
Для Каждого Товар Из МассивОбъектов Цикл
Область = Макет.ПолучитьОбласть("Этикетка");
Область.Параметры.Наименование = Товар.Наименование;
Область.Параметры.Артикул = Товар.Артикул;
КодШК = ШтрихкодТовара(Товар);
Если ЗначениеЗаполнено(КодШК) Тогда
ПараметрыШК = ГенерацияШтрихкода.ПараметрыГенерацииШтрихкода();
ПараметрыШК.Штрихкод = КодШК;
ПараметрыШК.ТипКода = 1; // EAN-13
ПараметрыШК.Ширина = 300;
ПараметрыШК.Высота = 100;
Результат = ГенерацияШтрихкода.ИзображениеШтрихкода(ПараметрыШК);
Если Результат.Результат Тогда
Область.Рисунки.Штрихкод.Картинка = Результат.Картинка;
КонецЕсли;
КонецЕсли;
Если Не Первая Тогда
ТабДок.ВывестиГоризонтальныйРазделительСтраниц();
КонецЕсли;
ТабДок.Вывести(Область);
Первая = Ложь;
КонецЦикла;
Возврат ТабДок;
КонецФункции
Функция ШтрихкодТовара(Товар)
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ ПЕРВЫЕ 1 Штрихкоды.Штрихкод КАК Штрихкод
|ИЗ РегистрСведений.Штрихкоды КАК Штрихкоды
|ГДЕ Штрихкоды.Владелец = &Товар";
Запрос.УстановитьПараметр("Товар", Товар);
Выборка = Запрос.Выполнить().Выбрать();
Возврат ?(Выборка.Следующий(), Выборка.Штрихкод, "");
КонецФункции
Главный приём здесь — ВывестиГоризонтальныйРазделительСтраниц() между этикетками. Без него 1С сложит все этикетки в одну длинную страницу, и драйвер нарежет её как попало.
Регистр Штрихкоды с полем Владелец — вариант Бухгалтерии 3.0. В УТ 11 штрихкоды хранятся в регистре ШтрихкодыНоменклатуры с измерениями Номенклатура и Характеристика, запрос нужно поправить. Модуль ГенерацияШтрихкода есть в конфигурациях на БСП 3.1; в более старых релизах картинку штрихкода получают через библиотеку подключаемого оборудования.
Размеры этикеток и настройки под каждый тип
Размер наклейки выбирают под задачу, а настройки драйвера и шаблона — под размер. Ориентиры, проверенные на практике:
| Задача | Типичный размер, мм | Носитель | Разрешение | Что настроить в 1С |
|---|---|---|---|---|
| Ценник на полку | 58×40, 58×30 | Термоэтикетка | 203 dpi | Шрифт цены 18–24 пт, штрихкод необязателен |
| Этикетка товара с EAN-13 | 43×25, 58×40 | Термо или термотрансфер | 203 dpi | Картинка штрихкода шириной не меньше 30 мм |
| Код маркировки DataMatrix | 30×20, 43×25 | Термотрансфер | 300 dpi | Тип кода GS1 DataMatrix, без масштабирования вниз |
| Складская ячейка, паллета | 100×100, 100×150 | Термотрансфер | 203 dpi | Code 128, крупный текст адреса ячейки |
| Курьерская наклейка | 75×120, 100×150 | Термоэтикетка | 203 dpi | Альбомная или книжная ориентация в драйвере |
Термоэтикетка дешевле и не требует риббона, но выцветает на свету и от тепла за несколько месяцев. Для товара, который лежит на складе долго, и для кодов маркировки берите термотрансферную печать.
💡 Для 203 dpi один пиксель печати — около 0,125 мм. Штрихкод, который 1С масштабирует, а не печатает в исходном размере, получает «рваные» полосы. Поэтому в шаблоне задавайте размер картинки штрихкода так, чтобы масштаб был 100%.
Почему этикетка печатается неправильно: ошибки и решения
Ещё одна частая причина — печать на «не тот» принтер. 1С запоминает последний принтер в параметрах табличного документа. Если на компьютере стоят офисный МФУ и термопринтер, перед печатью откройте Параметры страницы в форме печати и явно выберите принтер этикеток. Во внешней форме можно задать его кодом через свойство ИмяПринтера табличного документа.
Если принтер подключён через подключаемое оборудование и перестал отвечать, не удаляйте экземпляр оборудования сразу. Сначала выполните тест устройства в карточке: он покажет, что не так — порт, драйвер или сама связь.
Особенности в разных версиях и режимах 1С
Механизм печати этикеток зависит не столько от конфигурации, сколько от того, как пользователь подключён к базе.
| Режим работы | Что учесть |
|---|---|
| Тонкий клиент Windows | Самый простой случай: доступны и драйвер Windows, и подключаемое оборудование |
| Веб-клиент | Печать идёт через диалог браузера, размер этикетки и поля задают там. Драйверы подключаемого оборудования без расширения работы с 1С в браузере не устанавливаются |
| Удалённый рабочий стол (RDP) | Принтер пробрасывается в сессию. Формат этикетки в драйвере нужно задать на сервере терминалов, иначе подставится A4 |
| Linux-клиент | Драйвер производителя должен поддерживать CUPS; подключаемое оборудование — только с драйверами, у которых есть версия под Linux |
По конфигурациям разница в объёме возможностей. УТ 11 печатает этикетки и ценники из множества документов, умеет печатать по количеству из документа поступления и отдельно — этикетки складских ячеек. Бухгалтерия 3.0 печатает этикетки и ценники по номенклатуре и из документов поступления, без складской адресности.
Для товаров с маркировкой коды DataMatrix получают из Честного знака, а не генерируют в 1С. В УТ 11 для этого есть отдельный механизм печати кодов маркировки. В Бухгалтерии 3.0 работа с кодами маркировки ограничена, и для массовой печати КМ обычно используют товароучётную конфигурацию или отдельное ПО.