При работе с печатными формами и этикетками в обычных формах 1С разработчики часто сталкиваются с ситуацией, когда стандартная попытка изменить шрифт ячейки табличного документа не дает никакого эффекта. Шрифт цифр и текста под штрихкодом остается прежнего размера, а при попытке интерактивно зайти в свойства объекта в макете платформа 1С аварийно завершает работу с дампом памяти.
Рассмотрим подробно причины такого поведения платформы и разберем по шагам, как правильно управлять параметрами шрифта штрихкода программно и интерактивно.
Выясним причину, почему следующий стандартный код 1С не изменяет размер текста под штрихкодом:
НовыйРазмер = 24;
ТабДок.Область(3, 2, 3, 2).Шрифт = Новый Шрифт("Verdana", НовыйРазмер);
Дело в том, что свойство Шрифт у объекта ОбластьТабличногоДокумента управляет текстовым содержимым самой ячейки таблицы. В то же время штрихкод формируется с помощью внешнего графического объекта ActiveX (компонента «1С:Печать штрихкодов» / 1CBarCod.dll), расположенного поверх ячеек. Изменение шрифта ячейки под рисунком никак не затрагивает внутренние свойства графического элемента.
Проанализируем ситуацию, когда при нажатии правой кнопкой мыши на рисунок штрихкода и выборе пункта «Свойства» происходит завершение работы 1С с ошибкой. Основные причины этого явления:
1CBarCod.dll является 32-разрядным COM-объектом. Если конфигуратор или клиент 1С запущен в 64-битной версии, обращение к графическому окну свойств 32-битного ActiveX вызывает критический сбой памяти.regsvr32 или у пользователя RDP-сессии отсутствуют права на доступ к библиотеке.Разберем, как правильно обратиться напрямую к свойствам самого объекта штрихкода. У рисунка табличного документа есть свойство Объект, предоставляющее доступ к методам компоненты 1CBarCode.
Для изменения параметров текста под штрихкодом используем специализированный метод УстановитьШрифт:
Область = Макет.ПолучитьОбласть("Этикетка");
РисунокШтрихкод = Область.Рисунки.Штрихкод;
// Синтаксис метода:
// УстановитьШрифт(ИмяШрифта, Размер, Толщина, Наклонный, Перечеркнутый, Подстрочный)
РисунокШтрихкод.Объект.УстановитьШрифт("Tahoma", 12, 0, Ложь, Ложь, Ложь);
Посмотрим на параметры данного метода:
"Arial", "Tahoma", "Verdana").0 для нормального или 700 для полужирного).Истина / Ложь).Если требуется изменить шрифт непосредственно в макете через Конфигуратор, выполним следующие действия:
Рисунок на спецификацию объекта 1С:Печать штрихкодов.Чтобы избежать зависимости от 32-битной компоненты 1CBarCode и устранить возможные падения платформы, рассмотрим альтернативные подходы:
EAN13.ttf или Code39.ttf). В этом случае размер меняется стандартным вызовом Область.Шрифт = Новый Шрифт(...).Картинка.