Программное создание элементов УФ

Я встречал и другие библиотеки программного создания элементов, но мне они по разным причинам неудобны — не отвечают моему чувству прекрасного. Поэтому делаю свою.

Во всех примерах кода приняты следующие имена переменных:

  • ИмяЭлемента — имя элемента
  • Привязка — группа для вставки элемента
  • ЭтаФорма — ссылка на форму
  • Элемент — добавленный элемент

Для добавления элемента всегда используется метод Вставить, а не Добавить, потому что методом Вставить можно добавить элемент в группу если указать только группу и вставить элемент в нужное место группы, если указать группу и элемент, перед которым вставлять.

Поле ввода

Обычное поле ввода:

Элемент = ЭтаФорма.Элементы.Вставить(ИмяЭлемента, Тип("ПолеФормы"), Привязка);
Элемент.Вид = ВидПоляФормы.ПолеВвода;
Элемент.Заголовок = "";
Элемент.ПутьКДанным = "";

Поле ввода-флажок:

Элемент = ЭтаФорма.Элементы.Вставить(ИмяЭлемента, Тип("ПолеФормы"), Привязка);
Элемент.Вид = ВидПоляФормы.ПолеФлажка;
Элемент.Заголовок = "";
Элемент.ПутьКДанным = "";

Если это реквизит формы, то в пути данных указывается просто его идентификатор ИмяРеквизита. Если это реквизит объекта формы, то Объект.ИмяРеквизита.

Команда и кнопка для нее

ИмяКоманды = "";
Команда = ЭтаФорма.Команды.Добавить(ИмяКоманды);
Команда.Заголовок = "";
Команда.Действие  = ИмяКоманды;                
Команда.Картинка = БиблиотекаКартинок.ИмяКартинки;
Команда.Отображение = ОтображениеКнопки.КартинкаИТекст;

КнопкаФормы = ЭтаФорма.Элементы.Вставить(ИмяКоманды, Тип("КнопкаФормы"),Привязка.Родитель, Привязка);
КнопкаФормы.ИмяКоманды = ИмяКоманды;           

&НаКлиенте
Процедура ИмяКоманды(Команда) Экспорт

КонецПроцедуры

Добавление реквизитов формы

Если в элементе должны отображаться реквизиты, их нужно добавить в форму.

Реквизит = Новый РеквизитФормы(ИмяРеквизита, Новый ОписаниеТипов("..."));
МассивРеквизитов = Новый Массив;
МассивРеквизитов.Добавить(Реквизит);
ЭтаФорма.ИзменитьРеквизиты(МассивРеквизитов);

Особые виды полей формы

Добавление поля табличного документа:

ИмяЭлемента = "...";
Реквизит = Новый РеквизитФормы(ИмяЭлемента, Новый ОписаниеТипов("ТабличныйДокумент"));
МассивРеквизитов = Новый Массив;
МассивРеквизитов.Добавить(Реквизит);
ЭтаФорма.ИзменитьРеквизиты(МассивРеквизитов);
	
Элемент = ЭтаФорма.Элементы.Вставить(ИмяЭлемента, Тип("ПолеФормы"), Элемент);
Элемент.Вид = ВидПоляФормы.ПолеТабличногоДокумента;
Элемент.ПутьКДанным = ИмяЭлемента;
Элемент.ПоложениеЗаголовка = ПоложениеЗаголовкаЭлементаФормы.Нет;

Группы формы, страницы

Добавление группы формы:

Привязка = ...;
Элемент = ЭтаФорма.Элементы.Вставить(ИмяЭлемента, Тип("ГруппаФормы"), Привязка);
Элемент.Вид = ВидГруппыФормы.ОбычнаяГруппа;
Элемент.Заголовок = "...";
Элемент.ПоложениеЗаголовка = ПоложениеЗаголовкаЭлементаФормы.Нет;

Добавление страницы:

Привязка = ...;
Элемент = ЭтаФорма.Элементы.Вставить(ИмяЭлемента, Тип("ГруппаФормы"), Привязка);
Элемент.Вид = ВидГруппыФормы.Страница;
Элемент.Заголовок = "...";
Элемент.ПоложениеЗаголовка = ПоложениеЗаголовкаЭлементаФормы.Нет;

Декорации формы

Декорация формы в виде картинки:

Элемент = ЭтаФорма.Элементы.Вставить(ИмяЭлемента, Тип("ДекорацияФормы"), Привязка);      
Элемент.Вид = ВидДекорацииФормы.Картинка;
Элемент.Картинка = БиблиотекаКартинок.ИмяКартинки;
image_pdfimage_print

fixin

Программирую на 1С с 1999 года. В 1С просто Гений. В 2020 году ушел из офиса на вольные хлеба фриланса. Принимаю заказы.

Вам может также понравиться...

комментария 2

  1. rzd:

    Так а где библиотека?

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *