В эпоху разработки на платформе 1С:Предприятие 7.7 программисты часто сталкивались с серьезными ограничениями штатного интерфейса. Одной из самых острых проблем была невозможность качественного вывода изображений с прозрачностью и отсутствие инструментов для отображения вертикального или наклонного текста непосредственно на формах. Для решения этих задач сообществом были разработаны специализированные ActiveX элементы, такие как bmp_1c.ocx (ActiveBMP) и text_1c.ocx (ActiveText), созданные Андреем Моревым (Z1).
В данной статье мы подробно разберем возможности этих компонентов, методы управления ими из программного кода 1С и важные технические нюансы, которые необходимо учитывать при их внедрении в конфигурацию.
Компонент ActiveBMP предназначен для динамического отображения графической информации в формах и табличных документах. В отличие от стандартного объекта "Картинка", этот ActiveX предоставляет расширенное управление визуализацией. Рассмотрим основные функции, которые мы можем использовать в работе:
Transparent позволяет убирать фон иконки, что критично при создании современных интерфейсов с наложением объектов.Проанализируем основные методы и свойства, которые используются при работе с ActiveBMP:
LoadFromFile(Путь) — основной метод для загрузки изображения. В качестве параметра передается полный путь к файлу на диске.Transparent — логическое свойство (0 или 1). При значении 1 первый пиксель изображения (обычно левый нижний) принимается за цвет прозрачности.Stretch — определяет, будет ли изображение растягиваться по границам элемента ActiveX.Rotate — позволяет повернуть картинку на фиксированный угол (90, 180, 270 градусов), что удобно для создания индикаторов или специфических интерфейсных решений.Разберем пример кода для инициализации картинки на форме:
// Пример загрузки логотипа с прозрачным фоном
Процедура ПриОткрытии()
Попытка
ОбъектBMP = Форма.КонтролКартинка.Объект;
ОбъектBMP.LoadFromFile("C:\Images\logo.bmp");
ОбъектBMP.Transparent = 1;
ОбъектBMP.Stretch = 1;
Исключение
Предупреждение("Компонента ActiveBMP не зарегистрирована!");
КонецПопытки;
КонецПроцедуры
Стандартные формы 1С 7.7 не позволяют выводить текст под углом, что часто требуется для подписи вертикальных диаграмм или специфических меток. Компонент ActiveText решает эту задачу. Выясним, какие инструменты он предоставляет программисту:
Рассмотрим ключевые свойства ActiveText:
Caption — строковое свойство, содержащее сам текст.Angle — числовое значение угла поворота в градусах.FontName, FontSize, FontBold — параметры оформления текста.Alignment — выравнивание текста внутри контейнера ActiveX.Пример программной настройки вертикальной метки:
// Установка вертикального заголовка
Процедура УстановитьПодпись()
Метка = Форма.АктивТекст.Объект;
Метка.Caption = "Отчет за период";
Метка.Angle = 90; // Поворот на 90 градусов
Метка.FontName = "Arial";
Метка.FontSize = 12;
Метка.FontBold = 1;
КонецПроцедуры
Поскольку данные файлы являются ActiveX-элементами, перед их использованием в 1С они должны быть зарегистрированы в реестре Windows. Рассмотрим, как правильно выполнить эту процедуру, особенно на современных 64-битных системах.
Для регистрации используем стандартную утилиту regsvr32. Важно помнить, что 1С 7.7 является 32-битным приложением, поэтому регистрация должна проходить в контексте 32-битных библиотек. Проанализируем последовательность действий:
bmp_1c.ocx и text_1c.ocx в системную папку. На 64-битных ОС это C:\Windows\SysWOW64, на 32-битных — C:\Windows\System32.regsvr32 C:\Windows\SysWOW64\bmp_1c.ocx.Важный момент: Если вы планируете распространять конфигурацию среди пользователей, регистрацию лучше автоматизировать через инсталлятор или при первом запуске программы с проверкой прав администратора.
При эксплуатации данных компонентов важно учитывать их техническое состояние. По отзывам опытных разработчиков, при интенсивном использовании ActiveBMP наблюдается проблема "текущей" памяти. Выясним причину этой ситуации.
Проблема заключается в некорректном освобождении ресурсов GDI (интерфейса графических устройств) при закрытии форм или обновлении объектов. Если в вашей форме используется большое количество таких элементов или они динамически перерисовываются в многострочной части (например, в списке товаров с иконками), это может привести к:
1cv7.exe.Рекомендация: Используйте эти компоненты умеренно. Не рекомендуется вставлять их в каждую строку динамического списка. Оптимальное применение — статические элементы управления в шапке или подвале формы.
Если вы столкнулись с нестабильностью OCX-компонентов или сложностями их регистрации на новых версиях Windows, проанализируем альтернативный вариант. Наиболее мощным и стабильным решением для 1С 7.7 является внешняя компонента FormEx.
FormEx не требует регистрации в реестре (загружается через ЗагрузитьВнешнююКомпоненту()) и предоставляет гораздо более широкие возможности:
Однако, если ваша задача — поддержка старого кода, где уже внедрены ActiveBMP и ActiveText, знание их методов и способов регистрации остается необходимым условием для успешного администрирования системы.