Как настроить печать наименования в две строки на весах Штрих-Принт из 1С:Розница?

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

При автоматизации розничной торговли часто возникает проблема: стандартные весы Штрих-Принт при выгрузке данных из 1С:Розница обрезают длинные названия товаров. Это происходит из-за того, что стандартный сертифицированный драйвер «1С» передает наименование одним полем в формате XML, а весы физически рассчитаны на две строки по 28 символов каждая. В результате покупатель видит на этикетке обрубок фразы, что затрудняет идентификацию товара.

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

Причина проблемы: почему стандартный драйвер «режет» названия

Проанализируем ситуацию с технической стороны. Весы Штрих-Принт версии 4.5 и выше имеют внутреннюю структуру памяти, где под наименование товара (PLU) выделено два отдельных поля. Каждое поле вмещает 28 символов. Однако драйверы, встроенные в типовые конфигурации 1С:Розница 2.2/2.3, зачастую работают по упрощенному протоколу обмена через XML-пакеты. В этом пакете предусмотрен только один узел для наименования.

Даже если вы настроите макет этикетки в редакторе (Label Editor) так, чтобы там было два поля Name 1 и Name 2, весы получат данные только для первого поля, а второе останется пустым. Более того, сама 1С перед отправкой может принудительно обрезать строку до 28 символов, чтобы пакет соответствовал спецификации драйвера.

Решение №1: Использование стандартного загрузчика (Shtrikh-M Loader)

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

Рассмотрим структуру файла, который должна формировать 1С для корректной передачи двух строк. Файл должен быть в кодировке Windows-1251 (CP1251). Каждая строка — это один товар. Поля разделяются специальным символом (обычно это точка с запятой или вертикальная черта, в зависимости от настроек загрузчика).

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

[PLU#]|[Наименование 1]|[Наименование 2]|[Цена]|[Срок годности]|[Тара]|[Код группы]|[Код товара]|[Номер сообщения]|[Картинка]|[Сертификат]|[Дата реализации]|[Тип товара]|[Структура ШК]|[Формат этикетки]|[Префикс ШК]|[Дата производства]

Разберем по шагам, как подготовить данные в 1С для такого файла:

  1. Берем полное наименование товара из справочника Номенклатура.
  2. Разбиваем его на две части. Важно делать это корректно, чтобы слова не разрывались посередине.
  3. Первую часть (до 28 символов) записываем в поле ITEM NAME 1.
  4. Оставшуюся часть (еще до 28 символов) — в поле ITEM NAME 2.

Пример кода на стороне 1С для формирования такой строки:


Функция ПодготовитьСтрокуДляВесов(Товар)
    ПолноеИмя = Товар.Наименование;
    Стр1 = Лев(ПолноеИмя, 28);
    Стр2 = "";
    Если СтрДлина(ПолноеИмя) > 28 Тогда
        Стр2 = Сред(ПолноеИмя, 29, 28);
    КонецЕсли;
    
    // Формируем строку с разделителями (символ |)
    Результат = Строка(Товар.КодПЛУ) + "|" + Стр1 + "|" + Стр2 + "|" + Строка(Товар.Цена) + "|||||||||||";
    Возврат Результат;
КонецФункции

Решение №2: Программная доработка драйвера в 1С

Если вы хотите сохранить возможность нажимать кнопку «Выгрузить в кассу ККМ» прямо из интерфейса 1С:Розница, придется внести изменения в программный код. Нам нужно найти процедуру, отвечающую за формирование XML-пакета для оборудования.

Как правило, это метод СформироватьДанныеДляВыгрузки в модуле обработки обслуживания весов. Проанализируем логику: вам нужно добавить проверку длины наименования и, если драйвер поддерживает расширенные параметры (что можно проверить в документации к конкретной версии DrvLP.dll), передавать вторую строку в соответствующий узел XML.

Если же XML жестко ограничен, программисты часто прибегают к использованию COM-объекта драйвера напрямую. Вместо формирования файла или XML, 1С подключается к весам как к объекту:


Весы = Новый COMОбъект("AddIn.DRVLP");
Весы.Password = 30; // Стандартный пароль
Весы.ConnectionDevice = 0; // TCP/IP
Весы.IPAddress = "192.168.1.100";
Весы.Connect();

Весы.PLUNumber = 123;
Весы.ItemName1 = "Колбаса Докторская в/с";
Весы.ItemName2 = "ГОСТ 23670-2019";
Весы.Price = 550.50;
Весы.WritePLU(); // Запись товара в память весов
Весы.Disconnect();

Решение №3: Настройка макета в Label Editor

Иногда данные в весы уходят корректно (в обе строки), но принтер все равно печатает одну. Выясним причину: она может крыться в самом шаблоне этикетки. Весы Штрих-Принт позволяют хранить пользовательские форматы этикеток.

Рассмотрим алгоритм проверки макета:

  1. Запустите утилиту Label Editor (Редактор этикеток Штрих-М).
  2. Считайте текущий формат этикетки из весов (обычно это формат №5 или выше, так как первые пять — встроенные).
  3. Посмотрите на графический конструктор. Вы должны увидеть два отдельных текстовых блока.
  4. Если на этикетке только один блок Наименование, добавьте второй блок из панели инструментов и привяжите его к полю Name 2.
  5. Загрузите измененный формат обратно в весы.

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

Решение №4: Использование поля «Сообщение» (Message)

Бывают случаи, когда даже 56 символов (две строки по 28) недостаточно — например, когда нужно вывести полный состав продукта или информацию о производителе. В весах Штрих-Принт для этого предусмотрено поле «Сообщение».

Это поле может содержать до 400-800 символов текста. В редакторе этикеток вы можете разместить блок Сообщение, который будет динамически расширяться или печататься мелким шрифтом. В 1С при этом нужно будет заполнять таблицу сообщений и привязывать индекс сообщения к конкретному товару (PLU).

Советы по стабильной работе

Проанализируем основные ошибки при реализации этих методов:

Подводя итог, можно сказать, что наиболее гибким и масштабируемым решением является отказ от стандартного XML-драйвера в пользу формирования текстовых файлов для Shtrikh-M Loader. Это дает полный контроль над каждой строкой наименования и позволяет легко управлять парком весов в нескольких магазинах одновременно.

← На главную