Почему в 1С обрезается штрихкод и цифры слишком большие при печати ценников?

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

При работе в конфигурации 1С:Управление торговлей 10.3 (на платформе 8.3 с обычными формами) пользователи часто сталкиваются с неприятной проблемой при печати ценников и этикеток. Суть проблемы заключается в том, что сам графический штрихкод выводится обрезанным по горизонтали — остаются лишь нижние 20-30% полосок. При этом цифры под штрихкодом становятся непропорционально большими и буквально «выдавливают» графическую часть за пределы видимой области. Давайте детально разберем эту ситуацию и выясним причины такого поведения системы на современных операционных системах, таких как Windows 10.

Решение проблемы через настройку макета ценника

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

Рассмотрим по шагам, как это исправить:

  1. Откройте обработку печати ценников и перейдите к редактированию макета (или откройте макет в Конфигураторе).
  2. Выделите объект штрихкода (обычно это OLE-объект, использующий внешнюю компоненту).
  3. Откройте палитру свойств данного элемента управления.
  4. Найдите свойство, отвечающее за шрифт текста штрихкода. Если там установлено значение «из стиля» или используется специфический системный шрифт, измените его.
  5. Установите стандартный шрифт, например Arial, и задайте фиксированный размер шрифта от 4 до 6 пунктов (например, Arial, 6).
  6. Сохраните изменения в макете и проверьте вывод на печать.

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

Влияние масштабирования экрана в Windows 10 (DPI)

Разберем глубже технические причины, почему вообще возникает такой сбой. Одной из самых частых причин описанного поведения является масштабирование интерфейса в операционной системе Windows 10. Старая внешняя компонента 1CBarCod.dll (например, версия 8.0.16.4, которая часто используется в УТ 10.3) представляет собой устаревший элемент ActiveX.

Технология ActiveX очень плохо работает с системным масштабированием экрана (DPI), отличным от 100%. Если на проблемном компьютере в настройках дисплея Windows установлен масштаб 125% или 150%, компонента некорректно вычисляет метрики для отрисовки шрифтов. В результате цифры становятся огромными. Поскольку компонента формирует штрихкод в виде единой картинки, где текст и полосы делят общее пространство заданных габаритов, огромный текст просто не оставляет места для графических полос, и они визуально обрезаются.

Чтобы убедиться, что проблема именно в этом, попробуйте временно установить масштаб экрана в Windows на 100%, перезапустить 1С и распечатать ценник. Если печать пройдет успешно, значит, причина именно в DPI.

Подмена отсутствующих шрифтов системой

Проанализируем еще одну возможную причину — отсутствие нужного шрифта в системе. Если в настройках компоненты 1С:Печать штрихкодов установлен шрифт, которого фактически нет в вашей ОС (например, старый шрифт EanGnivc или специфический шрифт из стиля 1С), Windows автоматически попытается подобрать замену (fallback font).

Метрики подменного шрифта (ширина символов, межстрочный интервал, базовые линии) могут кардинально отличаться от оригинала. Из-за этого текст под штрихкодом раздувается до неадекватных размеров. Установка явного Arial с размером 4-6 решает эту проблему, так как этот шрифт гарантированно присутствует во всех версиях Windows и его метрики считываются корректно.

Внутренняя логика компоненты и размеры макета

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

Что мы можем сделать в этом случае:

  1. Проверить свойства строки макета, где расположен штрихкод.
  2. Если высота строки стоит «авто», убедитесь, что соседние ячейки не ограничивают ее высоту искусственно.
  3. Если высота фиксированная, попробуйте немного увеличить ее, чтобы дать компоненте больше пространства для маневра, либо обязательно уменьшите размер шрифта внутри самого OLE-объекта штрихкода.

Разрядность платформы и переход на новые технологии

Напоследок затронем вопрос разрядности и совместимости. Версия компоненты 8.0.16.4 является 32-битной. При использовании 64-битного клиента 1С:Предприятия на Windows 10 эта компонента может работать нестабильно, некорректно рендерить OLE-объекты или выдавать ошибку о том, что компонента не установлена. В качестве обходного пути иногда помогает запуск 1С из-под 32-битного клиента.

Отметим, что в современных конфигурациях 1С (работающих на управляемых формах) потребность в этой проблемной компоненте полностью отпала. Платформа 8.3 использует нативную (встроенную) генерацию штрихкодов, которая не зависит от внешних ActiveX-элементов, 1CBarCod.dll и масштабирования Windows. Там генерация штрихкодов происходит корректно при любых разрешениях экрана.

← На главную