Как использовать ActiveX компоненты ActiveBMP и ActiveText для расширения интерфейса в 1С 7.7

Программист 1С v7.7 IT и автоматизация бизнеса
← На главную

В эпоху разработки на платформе 1С:Предприятие 7.7 программисты часто сталкивались с серьезными ограничениями штатного интерфейса. Одной из самых острых проблем была невозможность качественного вывода изображений с прозрачностью и отсутствие инструментов для отображения вертикального или наклонного текста непосредственно на формах. Для решения этих задач сообществом были разработаны специализированные ActiveX элементы, такие как bmp_1c.ocx (ActiveBMP) и text_1c.ocx (ActiveText), созданные Андреем Моревым (Z1).

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

Назначение и возможности ActiveBMP (bmp_1c.ocx)

Компонент ActiveBMP предназначен для динамического отображения графической информации в формах и табличных документах. В отличие от стандартного объекта "Картинка", этот ActiveX предоставляет расширенное управление визуализацией. Рассмотрим основные функции, которые мы можем использовать в работе:

Проанализируем основные методы и свойства, которые используются при работе с ActiveBMP:

  1. LoadFromFile(Путь) — основной метод для загрузки изображения. В качестве параметра передается полный путь к файлу на диске.
  2. Transparent — логическое свойство (0 или 1). При значении 1 первый пиксель изображения (обычно левый нижний) принимается за цвет прозрачности.
  3. Stretch — определяет, будет ли изображение растягиваться по границам элемента ActiveX.
  4. Rotate — позволяет повернуть картинку на фиксированный угол (90, 180, 270 градусов), что удобно для создания индикаторов или специфических интерфейсных решений.

Разберем пример кода для инициализации картинки на форме:


// Пример загрузки логотипа с прозрачным фоном
Процедура ПриОткрытии()
    Попытка
        ОбъектBMP = Форма.КонтролКартинка.Объект;
        ОбъектBMP.LoadFromFile("C:\Images\logo.bmp");
        ОбъектBMP.Transparent = 1;
        ОбъектBMP.Stretch = 1;
    Исключение
        Предупреждение("Компонента ActiveBMP не зарегистрирована!");
    КонецПопытки;
КонецПроцедуры

Использование ActiveText (text_1c.ocx) для вывода наклонного текста

Стандартные формы 1С 7.7 не позволяют выводить текст под углом, что часто требуется для подписи вертикальных диаграмм или специфических меток. Компонент ActiveText решает эту задачу. Выясним, какие инструменты он предоставляет программисту:

Рассмотрим ключевые свойства ActiveText:

  1. Caption — строковое свойство, содержащее сам текст.
  2. Angle — числовое значение угла поворота в градусах.
  3. FontName, FontSize, FontBold — параметры оформления текста.
  4. Alignment — выравнивание текста внутри контейнера ActiveX.

Пример программной настройки вертикальной метки:


// Установка вертикального заголовка
Процедура УстановитьПодпись()
    Метка = Форма.АктивТекст.Объект;
    Метка.Caption = "Отчет за период";
    Метка.Angle = 90; // Поворот на 90 градусов
    Метка.FontName = "Arial";
    Метка.FontSize = 12;
    Метка.FontBold = 1;
КонецПроцедуры

Регистрация компонентов в операционной системе

Поскольку данные файлы являются ActiveX-элементами, перед их использованием в 1С они должны быть зарегистрированы в реестре Windows. Рассмотрим, как правильно выполнить эту процедуру, особенно на современных 64-битных системах.

Для регистрации используем стандартную утилиту regsvr32. Важно помнить, что 1С 7.7 является 32-битным приложением, поэтому регистрация должна проходить в контексте 32-битных библиотек. Проанализируем последовательность действий:

  1. Скопируйте файлы bmp_1c.ocx и text_1c.ocx в системную папку. На 64-битных ОС это C:\Windows\SysWOW64, на 32-битных — C:\Windows\System32.
  2. Запустите командную строку (cmd) от имени администратора.
  3. Выполните команду регистрации: regsvr32 C:\Windows\SysWOW64\bmp_1c.ocx.
  4. В случае успеха вы увидите сообщение "DllRegisterServer в ... успешно выполнено".

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

Критические проблемы и утечки памяти

При эксплуатации данных компонентов важно учитывать их техническое состояние. По отзывам опытных разработчиков, при интенсивном использовании ActiveBMP наблюдается проблема "текущей" памяти. Выясним причину этой ситуации.

Проблема заключается в некорректном освобождении ресурсов GDI (интерфейса графических устройств) при закрытии форм или обновлении объектов. Если в вашей форме используется большое количество таких элементов или они динамически перерисовываются в многострочной части (например, в списке товаров с иконками), это может привести к:

Рекомендация: Используйте эти компоненты умеренно. Не рекомендуется вставлять их в каждую строку динамического списка. Оптимальное применение — статические элементы управления в шапке или подвале формы.

Современные альтернативы

Если вы столкнулись с нестабильностью OCX-компонентов или сложностями их регистрации на новых версиях Windows, проанализируем альтернативный вариант. Наиболее мощным и стабильным решением для 1С 7.7 является внешняя компонента FormEx.

FormEx не требует регистрации в реестре (загружается через ЗагрузитьВнешнююКомпоненту()) и предоставляет гораздо более широкие возможности:

Однако, если ваша задача — поддержка старого кода, где уже внедрены ActiveBMP и ActiveText, знание их методов и способов регистрации остается необходимым условием для успешного администрирования системы.

← На главную