При работе в старых конфигурациях, таких как Управление торговлей 10.3, на платформах 1С v8.1 или v8.2 (а также в режиме обычных форм на v8.3) пользователи часто сталкиваются с неприятной ситуацией. На одном рабочем месте этикетки и ценники со штрихкодом печатаются идеально, а на другом — вместо штрихкода отображается нечитаемая тонкая полоска либо вообще красный прямоугольник с заштрихованной областью (сеткой).
Такое поведение не связано с ошибками в самой базе данных или конфигурации 1С. Причина кроется во взаимодействии внешней ActiveX-компоненты печати штрихкодов 1CBarCode.dll (объект V8.Barcod.1) с окружением операционной системы, настройками масштабирования, драйверами принтеров и правами доступа. Разберем подробно причины возникновения этой неполадки и пошагово решим проблему для операционных систем Windows 10 и Windows Server 2008.
Это самая частая причина разного поведения печати на компьютерах с новыми операционными системами по сравнению с Windows XP или Windows 7. На современных мониторах с высоким разрешением Windows 10 по умолчанию выставляет масштабирование интерфейса в 125%, 150% или даже выше. Старая библиотека 1CBarCode.dll не умеет корректно обрабатывать системный масштаб DPI (Dots Per Inch).
В результате геометрические размеры области штрихкода в пикселях сжимаются. Если размер области в макете оказывается меньше минимально допустимого предела для формирования штрихкода выбранного формата (например, EAN-13), компонента выдает ошибку визуализации — ту самую красную сетку или ультратонкую полоску. Проанализируем, как это исправить:
1cv8.exe), перейдем в Свойства, затем на вкладку Совместимость.Платформа 1С:Предприятие рассчитывает геометрические размеры графических объектов в табличном документе динамически. Этот расчет опирается на технические характеристики принтера, который назначен в операционной системе принтером по умолчанию. Выясним, почему это приводит к ошибкам:
Рассмотрим шаги для исправления этой ситуации:
Версия установленной ActiveX-компоненты напрямую влияет на логику отрисовки. Например, старая версия 8.0.14.2 более лояльно относится к небольшим размерам рамки на макете, в то время как более поздняя версия 8.0.16.4 жестко контролирует свойства минимальной ширины и высоты штрихкода. Если на компьютерах установлены разные версии, результат рендеринга будет отличаться.
Для гарантированного решения выполним переустановку и ручную регистрацию нужной версии библиотеки:
regsvr32 "C:\Program Files (x86)\1C\1CBarCode\1CBarCode.dll"
При успешной регистрации операционная система выдаст окно с подтверждением: "Успешное выполнение DllRegisterServer".
Современные механизмы безопасности в Windows 10 и Windows Server 2008 могут блокировать корректную инициализацию устаревших ActiveX-элементов, к которым относится 1CBarCode. Объект внутри макета 1С может создаться, но система безопасности запретит заполнять его свойства из кода, что приведет к пустому месту или красной сетке.
Выполним следующие защитные настройки:
1cv8.exe или 1cv8s.exe). Применим настройки и перезагрузим компьютер.Если мы являемся разработчиками и у нас есть доступ к изменению кода печати этикеток, мы можем программно предотвратить возникновение этой ошибки. Для этого перед выводом макета на печать зададим параметры компоненты штрихкода явно, обернув вызовы в безопасные блоки. Рассмотрим пример кода:
// Получаем рисунок штрихкода из области макета
ОбластьМакета = Макет.ПолучитьОбласть("Строка");
РисунокШтрихкод = ОбластьМакета.Рисунки.Штрихкод;
Попытка
// Получаем ActiveX объект компоненты
КомпонентШК = РисунокШтрихкод.Объект;
// Заполняем ключевые свойства программно
КомпонентШК.ТипКода = 1; // Устанавливаем EAN-13
КомпонентШК.Сообщение = "2000000123456"; // Наш штрихкод
КомпонентШК.ОтображатьТекст = Истина;
// Принудительно отключаем рамки, если они сжимают полезную площадь
КомпонентШК.Рамка = 0;
Исключение
Сообщить("Внимание! Компонента печати штрихкодов 1С не зарегистрирована на этом ПК!", СтатусСообщения.Важное); КонецПопытки;
Применение этого комплекса мер гарантированно решает проблему некорректной визуализации штрихкодов. Рекомендуется начинать диагностику с проверки настроек масштабирования DPI в Windows 10 и смены принтера по умолчанию, так как в 90% случаев старые конфигурации 1С страдают именно из-за плохой совместимости со сверхвысокими разрешениями современных дисплеев и специализированных термопринтеров.