Альтернативный способ добавления элементов и реквизитов на формы

Публикация № 1119926

Разработка - Работа с интерфейсом

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

23
Предлагаю альтернативный вариант добавления динамически создаваемых элементов и реквизитов на форму.

Предлагаю альтернативный вариант добавления элементов, реквизитов и обработчиков данных добавленных элементов.

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

Итак что нужно сделать.

1) Создать Общий Серверный модуль и скопировать из модуля обработки в модуль код.

2 Создать ОбщийМакет с наименованием "NF_ПФ_MXL_ДопЭлементыФорм" и скопировать макет из обработки в ваш общий макет.

3) Если конфигурация на БАЗЕ БСП или есть модуль "МодификацияКонфигурацииПереопределяемый" тогда добавить вызов в функцию "ПриСозданииНа Сервере"

ИмяОбластиПоУмолчанию=СтрЗаменить(Форма.ИмяФормы,".","_");
ИмяОбщегоМодуляизПункта1.ДобавитьЭлементыНаФормуПоМакету(Форма,ИмяОбластиПоУмолчанию);

 Если же такого модуля нет то можно вставить данный код в формы "ПриСозданииНаСервере"

   Все в части программирования закончено.

Теперь что умеет делать этот макет..да почти все.

1 Добавить реквизиты формы

2 Добавить элементы формы, в том числе и декорации, кнопки и.т.д.

3 Добавить, изменить обработчики элементов формы.

Итак что бы добавить что нибудь на форму нужно.

1) Добавить в макет горизонтальную область с полным именем формы, где точки заменены на "_" Пример

Документ_КорректировкаПриобретения_Форма_ФормаДокумента

  В макете определены 7 вертикальных областей они подписаны, в каждой области есть колонки которые отвечают за создание элементов, реквизитов, или кнопок.

1-ая область "ДанныеЭлемента" содержит 8 колонок.

  1. ИмяЭлемента - Это собственно как будет называться ваш элемент на форме, если не хотите его создавать, например вам нужен реквизит, без связанного элемента в этой колонке нужно написать "НеСоздавать". Поле обязательное.
  2. ТипЭлемента - Тип создаваемого элемента ПолеФормы,ТаблицаФормы,ГруппаФормы,КнопкаФормы, и т.д. то что есть в конфигурации
  3. ВидЭлемента - Ну тут понятно из названия, это и есть вид создаваемого элемента, ВидПоляФормы.ПолеВвода,ВидДекорацииФормы.Надпись, т.е. так же как вы бы писали это в коде. - обязательное поле если хотите увидеть свой элемент
  4. ПутьКданным - Собственно путь к данным элемента, например "Объект.Дата", или если это реквизит формы то просто "Дата"
  5. РодительЭлемента - Тут указывается куда будет добавлен элемент, наименование элемента родителя , если не указать будет вставлен на форму
  6. СоздаватьКолонки - Не используется.
  7. ИменаКолонок - Не используется.
  8. ВставитьПеред - Наименование элемента перед которым вы хотите вставить свой -не обязательное поле

2-ая область "ДопСвойстваЭлемента" 1 колонка.

  1. ДопСвойстваЭлемента Здесь указываются свойства элемента, свойства зависят от типа и вида элемента т.е здесь можно перечислить свойства элемента как они заданы в конфигураторе . Формат в данном поле"НаименованиеСвойства,ЗначениеСвойства",Отделяются свойства точкой с запятой примеры,если тип значения Свойства текст, то значение пишется в кавычках, в остальных случаях без. примеры есть в прилагаемом макете.

3-ая область "ДанныеРеквизита" данная область заполняется только тогда когда вам помимо элемента нужен еще и связанный с ним реквизит, ну или вы просто хотите добавить реквизит без элемента содержит три колонки.

  1. ИмяРеквизита - Ну тут все понятно, это как ваш реквизит будет называться.
  2. ТипРеквизита - Здесь указываете ТипСоздаваемого реквизита пока без поддержки составного типа. т.е если тип Число пишите тут "число". в общем так же как и в функции Новый ОписаниеТипа( ТипРеквизита ) только тут не тип а как раз то что в в функцию тип попадет Тип("ТипРеквизита")
  3. Путь - Тут указывается путь к реквизиту родителю, если вы хотите допустим добавить колонку в таблицу то тут будет что то типа "Товары", тогда реквизит будет создан как Товары.ИмяРеквизита.

4-ая область "ДопСвойстваРеквизита" аналогична ДопСвойстваЭлемента, только для реквизита 1 колонка

5-ая область "ДанныеКнопки" заполнять нужно если вы указали элемент как кнопку и хотите потом как то обработать нажатие данной кнопки, 2 колонки

  1. ИмяКоманды - Собственно как и в конфигураторе имякоманды.
  2. ДействиеКоманды - А вот тут вы прописываете как будет называться обработчик данной команды, потом в форме или в расширении формы вам нужно будет прописать процедуру с таким же именем, что бы у вас отработала кнопка.

6-ая область "ДопСвойстваКоманды" - аналогична другим доп свойствам.

7-ая область "ОбработчикиСобытий" , А вот тут можно прописать обработчики событий элементов которые вы добавили, или же заменить обработчик элемента на свой собственный( сейчас в связи с расширением это не актуально) но для своих элементов нужно

  1. ИменаОбработчиков - Через запятую перечислите имена обработчиков которые вы хотите потом в коде прописать(обработчики зависят от типа и вида элемента), Пример для элемента полеВвода с наименованием "Тратата" здесь можно написать "ПриИзменении", тогда в форме или расширении Процедура будет называться
    ДОП_ТрататаПриИзменении(Элемент)

    Обратите внимание на то что наименование процедуры практически такое же как если бы вы формировали ее из конфигуратора, только спереди добавляется префикс "ДОП_"

 Ну вот собственно и все.

Да есть одна интересная вещь в ЕРП , если вы макет оставите наименование таким как есть, то там можно изменять макеты прямо из базы. Т.е. можно добавить элемент даже не заходя в конфигуратор, открываете макет в базе добавляете строку, сохраняете и вуаля при следующем открытии формы у вас уже виден добавленный элемент.

Данный код работает уже более года на ЕРП в макете более тысячи строк записей, торможений не замечено.

В прилагаемом макете есть несколько записей для примера как нужно их заполнять.

Тестировалось все на платформе 8.3.13.1865

Конфигурация ЕРП 2.4.6.207 и более ранних версиях.

23

Скачать файлы

Наименование Файл Версия Размер
Альтернативный способо добавления элементов и реквизитов на формы:
.epf 15,43Kb
09.09.19
2
.epf 15,43Kb 2 Скачать

См. также

Специальные предложения

Избранное Подписка Сортировка: Древо
В этой теме еще нет сообщений.
Оставьте свое сообщение