Как программно создавать элементы управления (кнопки, флажки) на форме в 1С 7.7?

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

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

Ограничения стандартной платформы и использование расширений

Стандартные средства платформы 1С 7.7 не предусматривают инструментов для создания визуальных объектов интерфейса в режиме «Предприятие». Поэтому для выполнения этой задачи разработчики используют мощные внешние библиотеки-расширители, такие как FormEx и 1С++. Эти библиотеки позволяют напрямую обращаться к функциям WinAPI для управления окнами 1С.

Реализация создания кнопок через метод ДобавитьАтрибут

Основным инструментом для решения нашей задачи является метод ДобавитьАтрибут(), предоставляемый расширением формы. Рассмотрим по шагам, как это реализовать на практике.

  1. Подключаем расширение формы: создаем объект РасширениеФормы и привязываем его к текущей форме.
  2. Используем метод ДобавитьАтрибут, указывая идентификатор и тип элемента (где 3 — это BUTTON, а 12 — CHECKBOX).
  3. Настраиваем свойства созданного объекта: координаты, заголовок, подсказку и формулу (действие при нажатии).

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


срр_РасширениеФормы = СоздатьОбъект("РасширениеФормы");
срр_РасширениеФормы.УстановитьФорму(Форма);

// Добавляем атрибут с типом 3 (Кнопка)
доп_рекв = срр_РасширениеФормы.ДобавитьАтрибут("ИдентификаторКнопки", 3);

Если ТипЗначенияСтр(доп_рекв) = "АтрибутФормы" Тогда
    доп_рекв.УстановитьКоординаты(лево, верх, ширина, высота);
    доп_рекв.Заголовок = "Нажми меня";
    доп_рекв.Формула = "МояПроцедураОбработки";
КонецЕсли;

Создание флажков (Checkbox) и управление стилями

При попытке создать флажок напрямую иногда возникают проблемы с отрисовкой, когда элемент отображается как кнопка. Чтобы превратить элемент в полноценный CHECKBOX, необходимо принудительно задать ему соответствующий стиль Windows.

Рассмотрим, как заставить флажок работать корректно:


// Создаем атрибут как элемент управления
Атр = ФормаРасш.ДобавитьАтрибут("ИмяФлажка", 3); 

// Устанавливаем специфический стиль для отображения флажка
Атр.Стиль = 1342324739; 
Атр.Заголовок = "Выбрать реквизит";

Важные рекомендации и предостережения

Работая с динамическим созданием элементов, важно помнить о нескольких аспектах:

Таким образом, мы выяснили, что создание элементов на форме через FormEx — это мощный, но требующий осторожности прием. Используйте его только в крайних случаях, отдавая предпочтение статичным элементам с динамически изменяемыми свойствами, где это возможно.

← На главную