Программное создание элементов УФ
Я встречал и другие библиотеки программного создания элементов, но мне они по разным причинам неудобны — не отвечают моему чувству прекрасного. Поэтому делаю свою.
Во всех примерах кода приняты следующие имена переменных:
- ИмяЭлемента — имя элемента
- Привязка — группа для вставки элемента
- ЭтаФорма — ссылка на форму
- Элемент — добавленный элемент
Для добавления элемента всегда используется метод Вставить, а не Добавить, потому что методом Вставить можно добавить элемент в группу если указать только группу и вставить элемент в нужное место группы, если указать группу и элемент, перед которым вставлять.
Поле ввода
Обычное поле ввода:
Элемент = ЭтаФорма.Элементы.Вставить(ИмяЭлемента, Тип("ПолеФормы"), Привязка); Элемент.Вид = ВидПоляФормы.ПолеВвода; Элемент.Заголовок = ""; Элемент.ПутьКДанным = "";
Поле ввода-флажок:
Элемент = ЭтаФорма.Элементы.Вставить(ИмяЭлемента, Тип("ПолеФормы"), Привязка); Элемент.Вид = ВидПоляФормы.ПолеФлажка; Элемент.Заголовок = ""; Элемент.ПутьКДанным = "";
Если это реквизит формы, то в пути данных указывается просто его идентификатор ИмяРеквизита. Если это реквизит объекта формы, то Объект.ИмяРеквизита.
Команда и кнопка для нее
ИмяКоманды = ""; Команда = ЭтаФорма.Команды.Добавить(ИмяКоманды); Команда.Заголовок = ""; Команда.Действие = ИмяКоманды; Команда.Картинка = БиблиотекаКартинок.ИмяКартинки; Команда.Отображение = ОтображениеКнопки.КартинкаИТекст; КнопкаФормы = ЭтаФорма.Элементы.Вставить(ИмяКоманды, Тип("КнопкаФормы"),Привязка.Родитель, Привязка); КнопкаФормы.ИмяКоманды = ИмяКоманды; &НаКлиенте Процедура ИмяКоманды(Команда) Экспорт КонецПроцедуры
Добавление реквизитов формы
Если в элементе должны отображаться реквизиты, их нужно добавить в форму.
Реквизит = Новый РеквизитФормы(ИмяРеквизита, Новый ОписаниеТипов("...")); МассивРеквизитов = Новый Массив; МассивРеквизитов.Добавить(Реквизит); ЭтаФорма.ИзменитьРеквизиты(МассивРеквизитов);
Особые виды полей формы
Добавление поля табличного документа:
ИмяЭлемента = "..."; Реквизит = Новый РеквизитФормы(ИмяЭлемента, Новый ОписаниеТипов("ТабличныйДокумент")); МассивРеквизитов = Новый Массив; МассивРеквизитов.Добавить(Реквизит); ЭтаФорма.ИзменитьРеквизиты(МассивРеквизитов); Элемент = ЭтаФорма.Элементы.Вставить(ИмяЭлемента, Тип("ПолеФормы"), Элемент); Элемент.Вид = ВидПоляФормы.ПолеТабличногоДокумента; Элемент.ПутьКДанным = ИмяЭлемента; Элемент.ПоложениеЗаголовка = ПоложениеЗаголовкаЭлементаФормы.Нет;
Группы формы, страницы
Добавление группы формы:
Привязка = ...; Группа = ЭтаФорма.Элементы.Вставить(ИмяЭлемента, Тип("ГруппаФормы"), Привязка); Группа.Вид = ВидГруппыФормы.ОбычнаяГруппа; Группа.Заголовок = "..."; Группа.Группировка = ГруппировкаПодчиненныхЭлементовФормы.ГоризонтальнаяВсегда; Группа.Отображение = ОтображениеОбычнойГруппы.Нет;
Элементы добавляются точно так же, в ЭтаФорма.Элементы, а не в Группа.
Если не указать заголовок, его не будет. Заговолок всегда выводится сверху, по умолчанию зеленым цветом, справа его не вывести штатно. Свойства для положения заголовка нет.
Добавление страницы:
Привязка = ...; Группа = ЭтаФорма.Элементы.Вставить(ИмяЭлемента, Тип("ГруппаФормы"), Привязка); Группа.Вид = ВидГруппыФормы.Страница; Группа.Заголовок = "...";
Декорации формы
Декорация формы в виде картинки:
Элемент = ЭтаФорма.Элементы.Вставить(ИмяЭлемента, Тип("ДекорацияФормы"), Привязка); Элемент.Вид = ВидДекорацииФормы.Картинка; Элемент.Картинка = БиблиотекаКартинок.ИмяКартинки;
Вычисляемые поля
Программно можно добавить и особые вычисляемые поля.
Например, чтобы посчитать итог по колонке Сумма табличной части таблицы Запасы, путь к данным элемента нужно прописать как Объект.Запасы.ИтогСумма (добавляем префикс Итог). Такой же путь надо прописывать и в поле ПутьКДаннымПодвала, если нужно разместить итог в подвале таблицы.




Так а где библиотека?
начал писать.