Как программно изменить шрифт этикетки штрихкода в 1С и исправить падение платформы?

Программист 1С v8.3 (Обычные формы) IT и автоматизация бизнеса
← На главную

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

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

Почему применение метода «Новый Шрифт» к ячейке не работает

Выясним причину, почему следующий стандартный код 1С не изменяет размер текста под штрихкодом:


НовыйРазмер = 24;
ТабДок.Область(3, 2, 3, 2).Шрифт = Новый Шрифт("Verdana", НовыйРазмер);

Дело в том, что свойство Шрифт у объекта ОбластьТабличногоДокумента управляет текстовым содержимым самой ячейки таблицы. В то же время штрихкод формируется с помощью внешнего графического объекта ActiveX (компонента «1С:Печать штрихкодов» / 1CBarCod.dll), расположенного поверх ячеек. Изменение шрифта ячейки под рисунком никак не затрагивает внутренние свойства графического элемента.

Причина падения платформы (дамп памяти) при открытии свойств штрихкода

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

  1. Несоответствие разрядности платформы и ActiveX-компоненты: Внешняя библиотека 1CBarCod.dll является 32-разрядным COM-объектом. Если конфигуратор или клиент 1С запущен в 64-битной версии, обращение к графическому окну свойств 32-битного ActiveX вызывает критический сбой памяти.
  2. Ошибки регистрации библиотеки в ОС: Компонента не была корректно зарегистрирована утилитой regsvr32 или у пользователя RDP-сессии отсутствуют права на доступ к библиотеке.

Способ 1. Программное управление шрифтом через объект ActiveX

Разберем, как правильно обратиться напрямую к свойствам самого объекта штрихкода. У рисунка табличного документа есть свойство Объект, предоставляющее доступ к методам компоненты 1CBarCode.

Для изменения параметров текста под штрихкодом используем специализированный метод УстановитьШрифт:


Область = Макет.ПолучитьОбласть("Этикетка");
РисунокШтрихкод = Область.Рисунки.Штрихкод;

// Синтаксис метода:
// УстановитьШрифт(ИмяШрифта, Размер, Толщина, Наклонный, Перечеркнутый, Подстрочный)
РисунокШтрихкод.Объект.УстановитьШрифт("Tahoma", 12, 0, Ложь, Ложь, Ложь);

Посмотрим на параметры данного метода:

  1. ИмяШрифта — строка с системным названием гарнитуры (например, "Arial", "Tahoma", "Verdana").
  2. Размер — число, определяющее кегль шрифта.
  3. Толщина — числовое значение толщины (обычно 0 для нормального или 700 для полужирного).
  4. Наклонный — булево значение (Истина / Ложь).
  5. Перечеркнутый — булево значение.
  6. Подстрочный — булево значение.

Способ 2. Интерактивная настройка макета

Если требуется изменить шрифт непосредственно в макете через Конфигуратор, выполним следующие действия:

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

Альтернативные решения без использования ActiveX

Чтобы избежать зависимости от 32-битной компоненты 1CBarCode и устранить возможные падения платформы, рассмотрим альтернативные подходы:

  1. Использование TrueType-шрифтов (Barcode TTF): Штрихкод выводится в обычную ячейку как текстовая строка с использованием специального шрифта (например, EAN13.ttf или Code39.ttf). В этом случае размер меняется стандартным вызовом Область.Шрифт = Новый Шрифт(...).
  2. Формирование штрихкода в виде картинки: Использование механизмов БСП или NativeAPI позволяет генерировать штрихкод в виде графического файла (BMP/PNG) и подставлять его в обычный рисунок с типом Картинка.
← На главную