Как повернуть штрихкод на 90 градусов в 1С:УТ 11.4 и исправить ошибку «The size is too small»

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

При разработке или редактировании ценников и этикеток в 1С:Управление торговлей 11.4 часто возникает необходимость изменить ориентацию штрихкода. Стандартная задача — повернуть штрихкод на 90 градусов, чтобы сэкономить место на узкой этикетке. Однако вместо ожидаемых полос штрихкода на печать может выводиться непонятная надпись на английском языке. Разберем, что это за ошибка и как ее исправить.

Выясним причину: почему появляется странный текст?

Текст, который многие пользователи принимают за случайный набор символов (например, «tre site is tod»), на самом деле является диагностическим сообщением компоненты 1С:Печать штрихкодов. При увеличении или детальном рассмотрении можно прочитать фразу «The size is too small».

Проанализируем ситуацию: эта ошибка генерируется программным модулем компоненты, когда выделенная область в макете (рамка объекта «Рисунок» или «Картинка») оказывается меньше минимально допустимого размера для корректного отображения штрихкода. При повороте на 90 градусов алгоритм расчета «тихих зон» (пустых полей по краям) и толщины штрихов меняется. Если компонента понимает, что при заданном разрешении принтера она не сможет отрисовать считываемый код, она блокирует вывод графики и выводит текстовое предупреждение.

Решение 1: Геометрическая корректировка макета

Первым делом попробуем решить проблему через визуальный редактор макета. Рассмотрим шаги по изменению параметров объекта:

  1. Откроем макет этикетки или ценника в конфигураторе или в режиме «1С:Предприятие» (если используется редактируемый шаблон).
  2. Выберем объект, содержащий штрихкод.
  3. Проанализируем границы: Растянем рамку объекта шире. Важно понимать, что при повороте на 90 градусов бывшая «высота» становится «шириной». Если ваш штрихкод должен быть узким и длинным по вертикали, убедитесь, что ширина рамки (которая теперь отвечает за высоту полос) достаточна.
  4. Зайдем в свойства рисунка и найдем параметр РазмерКартинки. Рекомендуется установить значение Автомасштабирование или Реальный размер. Режим Пропорционально часто приводит к ошибкам при повороте, так как компонента пытается сохранить пропорции, которые конфликтуют с требованиями стандарта штрихкода (например, EAN-13).

Решение 2: Отключение текстового представления кода

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

Разберем пример изменения параметров программно перед выводом в макет:


// В процедуре формирования печатной формы
ПараметрыШтрихкода = Новый Структура;
ПараметрыШтрихкода.Вставить("Ширина", 100);
ПараметрыШтрихкода.Вставить("Высота", 50);
ПараметрыШтрихкода.Вставить("Штрихкод", ТекущийШтрихкод);
ПараметрыШтрихкода.Вставить("ТипКода", 1); // EAN13
ПараметрыШтрихкода.Вставить("ОтображатьТекст", Ложь); // Отключаем текст для экономии места
ПараметрыШтрихкода.Вставить("УголПоворота", 90);

// Передаем параметры в функцию генерации изображения
КартинкаШтрихкода = МенеджерОборудованияВызовСервера.ПолучитьКартинкуШтрихкода(ПараметрыШтрихкода);

После установки свойства ОтображатьТекст в значение Ложь, компонента перестает резервировать место под цифры, и ошибка «The size is too small» часто исчезает.

Решение 3: Переход на использование шрифтов штрихкода

Посмотрим на ситуацию с точки зрения надежности. Графическая компонента сильно зависит от DPI (разрешения) принтера. На обычных принтерах все может выглядеть хорошо, а на термопринтерах этикеток с разрешением 203 dpi — вылетать ошибка. Самый надежный способ повернуть штрихкод на 90 градусов — отказаться от картинки в пользу специализированного шрифта (например, EAN13.ttf или Code128.ttf).

Разберем по шагам, как это реализовать:

  1. Установим нужный шрифт в операционную систему на сервере и рабочих станциях.
  2. В макете 1С вместо объекта «Рисунок» будем использовать обычную ячейку (область текста).
  3. В свойствах ячейки установим Ориентация текста равной 90.
  4. Выберем для этой ячейки установленный шрифт штрихкода.
  5. Важный момент: Штрихкоды типа EAN-13 требуют специального преобразования цифр в символы шрифта (добавление контрольных символов, знаков «старт» и «стоп»).

Пример функции для подготовки строки под шрифт (упрощенно):


Функция ПодготовитьШтрихкодДляШрифта(Знач ТекстКода)
    // Здесь должна быть логика преобразования цифр в спецсимволы
    // Для каждого типа штрихкода (EAN, Code128) алгоритм свой
    Возврат "*" + ТекстКода + "*"; // Пример для Code39
КонецФункции

Преимущество этого метода в том, что платформа 1С обрабатывает текст гораздо стабильнее, чем графические объекты, и поворот текста на любой угол не вызывает искажений или ошибок размера.

Решение 4: Проверка версии компоненты и API

Проанализируем техническую составляющую: в старых версиях УТ 11 использовалась внешняя компонента ActiveX (1CBarCod.ocx). Она была крайне капризна к системным настройкам и масштабированию Windows. В современных релизах применяется Native API компонента.

Если вы столкнулись с ошибкой, проверьте следующее:

Рекомендация по настройке принтера

Если ошибка появляется только при выводе на печать на конкретный принтер этикеток, проверим настройки драйвера. В свойствах принтера (в Windows) убедитесь, что размер бумаги в драйвере совпадает с физическим размером этикетки и размером макета в 1С. Если 1С пытается «впихнуть» макет большего размера в маленькую этикетку через драйвер, происходит пересчет пикселей, компонента теряет точность и выдает The size is too small. Для решения проблем корректного вывода на термопринтеры можно использовать расширение для печати этикеток в УТ 11 через БПО.

Итог: Для быстрого исправления — увеличьте рамку объекта и отключите текст под кодом. Для долгосрочного и стабильного результата — рассмотрите переход на шрифты.

← На главную