При работе в конфигурации 1С:Управление торговлей 10.3 (на платформе 8.3 с обычными формами) пользователи часто сталкиваются с неприятной проблемой при печати ценников и этикеток. Суть проблемы заключается в том, что сам графический штрихкод выводится обрезанным по горизонтали — остаются лишь нижние 20-30% полосок. При этом цифры под штрихкодом становятся непропорционально большими и буквально «выдавливают» графическую часть за пределы видимой области. Давайте детально разберем эту ситуацию и выясним причины такого поведения системы на современных операционных системах, таких как Windows 10.
Проанализируем самый быстрый и эффективный способ исправления данной проблемы, который можно применить непосредственно в режиме «Предприятие» или в Конфигураторе. В большинстве случаев проблема кроется в настройках шрифта, заданных для элемента управления 1С:Печать штрихкодов на макете ценника.
Рассмотрим по шагам, как это исправить:
После установки явно заданного стандартного шрифта и небольшого размера, компонента перестанет выделять лишнее пространство под цифры, и полосы штрихкода снова станут нормальной высоты.
Разберем глубже технические причины, почему вообще возникает такой сбой. Одной из самых частых причин описанного поведения является масштабирование интерфейса в операционной системе 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 есть скрытые настройки минимальной ширины и минимальной высоты. Если в макете высота строки зафиксирована жестко, а шрифт цифр увеличивается (из-за масштабирования или подмены шрифта), компонента вынуждена уменьшать высоту самих штрихов, чтобы уместить всё изображение в заданные габариты картинки.
Что мы можем сделать в этом случае:
Напоследок затронем вопрос разрядности и совместимости. Версия компоненты 8.0.16.4 является 32-битной. При использовании 64-битного клиента 1С:Предприятия на Windows 10 эта компонента может работать нестабильно, некорректно рендерить OLE-объекты или выдавать ошибку о том, что компонента не установлена. В качестве обходного пути иногда помогает запуск 1С из-под 32-битного клиента.
Отметим, что в современных конфигурациях 1С (работающих на управляемых формах) потребность в этой проблемной компоненте полностью отпала. Платформа 8.3 использует нативную (встроенную) генерацию штрихкодов, которая не зависит от внешних ActiveX-элементов, 1CBarCod.dll и масштабирования Windows. Там генерация штрихкодов происходит корректно при любых разрешениях экрана.