FormEditor - поставляемый модуль программного создания элементов форм

30.12.19

Разработка - Инструментарий разработчика

Упрощенное добавление реквизитов формы, добавление их на форму (в том числе и таблиц), также добавление групп, команд формы и кнопок к ним.

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

Наименование Файл Версия Размер
FormEditor - Поставляемый модуль программного создания элементов форм:
.cf 18,34Kb
47
.cf 1.0.3.4 18,34Kb 47 Скачать

В публикации представлен модуль программного добавления реквизитов и пример его использования при доработке типовых форм.

Концепция модуля:  Модуль поставляется через поставку. Проверка обратной совместимости новых версий модуля, обеспечивается обработкой тестирования, обновляющейся версии. Модуль имеет сборочную линию на Jenkins, собирающую релиз из проекта EDT и запускающую сценарий тестирования ADD(не опубликована).

Программный интерфейс, добавляющий элементы на форму всегда использует контекст элемента, создается функцией СоздатьКонтекстЭлемента.

Контекст элемента - структура, со свойствами:

  1. Форма - Форма добавления элемента.
  2. Родитель - Группа добавляемого элемента
  3. РасположитьПередЭлементом - элемент, перед которым будет расположен элемент.
  4. Свойства -  структура, содержащая свойства элемента, которые будут установлены новому элементу.

Остальная логика реализована в функциях, отвечающих за добавление соответствующих элементов.

Полная документацияhttps://github.com/huxuxuya/1cFormEditor/blob/master/README.md

Область применения: доработка всех типовых форм, для облегчения последующей поддержки конфигурации(обновления).

Основные возможности:

  • Добавление групп на форму
  • Добавление таблиц на форму
  • Добавление команд и вывод на форму
  • Добавление элементов формы и объекта

Зачем нужен модуль?

Меньше строк

Лучше читабельность

Пример формы полностью сгенерированной модулем:

 

Описание демонстрационного примера использования:

  • В примере показывается добавление модуля в типовую конфигурацию, изначально, находящуюся на поддержке, с добавлением конфигурации поставщика поставляемого модуля.
  • Добавление реквизитов и табличной части в метаданные документа.
  • Программный вывод элементов на форму: 
  • Новой страницы
  • Булевого реквизита
  • Числового реквизита
  • Многострочного реквизита
  • Табличной части документа с колонками

Код демонстрационного примера:

	//Добавление страницы
	КонтекстСтраницы = РедакторФорм.СоздатьКонтекстЭлемента(ЭтотОбъект);
	КонтекстСтраницы.Свойства.Вставить("Вид", ВидГруппыФормы.Страница);
	КонтекстСтраницы.Свойства.Вставить("Заголовок", "График оплат");
	КонтекстСтраницы.Родитель = Элементы.Страницы;
	СтраницаГрафикОплат = РедакторФорм.ДобавитьГруппуНаФорму(КонтекстСтраницы, "префикс_СтраницаГрафикОплат");
	
	//Добавление таблицы на форму
	КонтекстГрафикОплат = РедакторФорм.СоздатьКонтекстЭлемента(ЭтотОбъект, СтраницаГрафикОплат);
	СтруктураКолонок = Новый Структура;
	СтруктураКолонок.Вставить("префикс_ГрафикОплатДатаОплаты", "ДатаОплаты");
	СтруктураКолонок.Вставить("префикс_ГрафикОплатПроцентОплаты", "ПроцентОплаты");
	ЭлементТаблицаОплат = РедакторФорм.ДобавитьТаблицуНаФорму(КонтекстГрафикОплат, "префикс_ГрафикОплаты", "Объект.префикс_ГрафикОплаты", СтруктураКолонок);
	
	//Добавление многострочного поля
	КонтекстОписания = РедакторФорм.СоздатьКонтекстЭлемента(ЭтотОбъект, СтраницаГрафикОплат);
	РедакторФорм.ДобавитьМногострочноеПолеРеквизитОбъекта(КонтекстОписания, "префикс_ОписаниеЭтаповОплаты");
	
	//Добавление группы скидки
	КонтекстГруппаСкидка = РедакторФорм.СоздатьКонтекстЭлемента(ЭтотОбъект, ЭтотОбъект, Элементы.ОтветственныйКомментарий);
	КонтекстГруппаСкидка.Свойства.Вставить("Группировка", ГруппировкаПодчиненныхЭлементовФормы.ГоризонтальнаяВсегда);
	
	ГруппаСкидка = РедакторФорм.ДобавитьГруппуОбычную(КонтекстГруппаСкидка, "ГруппаСкидка");
	
	КонтекстСумма = РедакторФорм.СоздатьКонтекстЭлемента(ЭтотОбъект, ГруппаСкидка);
	ЭлементПроцентСкидки = РедакторФорм.ДобавитьРеквизитОбъектаНаФорму(КонтекстСумма, "префикс_ПроцентСкидки");
	
	КонтекстСумма.Свойства.Вставить("ТолькоПросмотр", Истина);
	ЭлементСуммаСкидки = РедакторФорм.ДобавитьРеквизитОбъектаНаФорму(КонтекстСумма, "префикс_СуммаСкидки");
	
	//Добавление группы менеджера
	КонтекстМенеджерГруппа = РедакторФорм.СоздатьКонтекстЭлемента(ЭтотОбъект, Элементы.ШапкаСправа);
	РедакторФорм.ДобавитьГруппуСКолонкамиЛевоИПраво(КонтекстМенеджерГруппа, "ГруппаМенеджер");
	
	КонтекстМенеджер = РедакторФорм.СоздатьКонтекстЭлемента(ЭтотОбъект, Элементы.ГруппаМенеджерЛево);
	ЭлементЕстьМенеджер = РедакторФорм.ДобавитьРеквизитОбъектаНаФорму(КонтекстМенеджер, "префикс_ЕстьМенеджер");
	
	КонтекстМенеджер.Родитель = Элементы.ГруппаМенеджерПраво;
	КонтекстМенеджер.Свойства.Вставить("ПоложениеЗаголовка", ПоложениеЗаголовкаЭлементаФормы.Нет);
	КонтекстМенеджер.Свойства.Вставить("РастягиватьПоГоризонтали", Ложь);
	КонтекстМенеджер.Свойства.Вставить("Ширина", 35);
	
	ЭлементМенеджер = РедакторФорм.ДобавитьРеквизитОбъектаНаФорму(КонтекстМенеджер, "префикс_Менеджер");

Видеозапись разработки примера для демонстрации использования модуля и добавление его через поставку для типовой конфигурации(видео без звука).

Платформы на которых протестирована работа конфигурации:
8.3.13.1644
8.3.14.1630
8.3.16.869
8.3.16.1063

UI UX Интерфейс Элементы Управляемая форма ЭтаФорма Кнопка Поле Группа Динамический список программно программное

См. также

SALE! 20%

Infostart Toolkit: Инструменты разработчика 1С 8.3 на управляемых формах

Инструментарий разработчика Роли и права Запросы СКД Платформа 1С v8.3 Управляемые формы Запросы Система компоновки данных Конфигурации 1cv8 Платные (руб)

Набор инструментов программиста и специалиста 1С для всех конфигураций на управляемых формах. В состав входят инструменты: Консоль запросов, Консоль СКД, Консоль кода, Редактор объекта, Анализ прав доступа, Метаданные, Поиск ссылок, Сравнение объектов, Все функции, Подписки на события и др. Редактор запросов и кода с раскраской и контекстной подсказкой. Доработанный конструктор запросов тонкого клиента. Продукт хорошо оптимизирован и обладает самым широким функционалом среди всех инструментов, представленных на рынке.

13000 10400 руб.

02.09.2020    122217    673    389    

715

SALE! 25%

Infostart PrintWizard

Пакетная печать Печатные формы Инструментарий разработчика Платформа 1С v8.3 Запросы 1С:Зарплата и кадры бюджетного учреждения 1С:Конвертация данных 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 Платные (руб)

Инструмент, позволяющий абсолютно по-новому взглянуть на процесс разработки печатных форм. Благодаря конструктору можно значительно снизить затраты времени на разработку печатных форм, повысить качество и "прозрачность" разработки, а также навести порядок в многообразии корпоративных печатных форм.

18000 15300 руб.

06.10.2023    7309    22    6    

39

SALE! 20%

Infostart УДиФ: Управление данными и формами

Инструменты администратора БД Инструментарий разработчика Роли и права Платформа 1С v8.3 Конфигурации 1cv8 Россия Платные (руб)

Расширение позволяет без изменения кода конфигурации выполнять проверки при вводе данных, скрывать от пользователя недоступные ему данные, выполнять код в обработчиках. Не изменяет данные конфигурации, легко устанавливается практически на любую конфигурацию на управляемых формах.

10000 8000 руб.

10.11.2023    3556    11    1    

34

SALE! 30%

PowerTools

Инструментарий разработчика Инструменты администратора БД Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Россия Платные (руб)

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

3600 2520 руб.

14.01.2013    177765    1074    0    

849

Многопоточность. Универсальный «Менеджер потоков» 2.1

Инструментарий разработчика Платформа 1С v8.3 Конфигурации 1cv8 Россия Платные (руб)

Восстановление партий или взаиморасчетов, расчет зарплаты, пакетное формирование документов или отчетов - теперь все это стало доступнее. * Есть желание повысить скорость работы медленных алгоритмов! Но... * Нет времени думать о реализации многопоточности? * о запуске и остановке потоков? * о поддержании потоков в рабочем состоянии? * о передаче данных в потоки и как получить ответ из потока? * об организации последовательности? Тогда ЭТО - то что надо!!!

5000 руб.

07.02.2018    99357    239    97    

296

[ЕХТ] Фреймворк для Расширений 1С

Инструментарий разработчика Платформа 1С v8.3 Управляемые формы Платные (руб)

"Фреймворк для Расширений 1С" это универсальное и многофункциональное решение, упрощающее разработку и поддержку создаваемых Расширений. Поставляется в виде комплекта из нескольких Расширений с открытым исходным кодом. Работает в любых Конфигурациях в режиме Управляемого приложения с режимом совместимости 8.3.12 и выше без необходимости внесения изменений в Конфигурацию.

3000 руб.

27.08.2019    18122    6    8    

40

1С HTML Шаблоны / HTML Templates

Инструментарий разработчика Платформа 1С v8.3 Конфигурации 1cv8 Платные (руб)

Быстрая и удобная обработка для работы с шаблонами HTML. Позволяет легко и быстро формировать код HTML.

2040 руб.

27.12.2017    28113    3    10    

15

Выполнение произвольного кода или запроса с параметрами через Web-сервис (замена COM-подключений)

Инструментарий разработчика Обмен между базами 1C Платформа 1С v8.3 Платные (руб)

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

2400 руб.

24.09.2019    23605    15    15    

32
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. Dzenn 870 20.12.19 12:18 Сейчас в теме
А что не так с обычным программным созданием элементов форм?
2. noprogrammer 236 20.12.19 12:28 Сейчас в теме
(1) Это и есть обычное программное создание элементов формы - только преподнесено́ как подсистема.
3. Dzenn 870 20.12.19 12:30 Сейчас в теме
(2) как всё сложно в нашем бренном мире ;-)
4. noprogrammer 236 20.12.19 12:33 Сейчас в теме
(3) Так никто и не говорил, что будет легко :)

Автору стоит посмотреть в сторону расширений (и перехвата событий "ПриСозданииФормы" и т.д.).
5. huxuxuya 366 20.12.19 12:48 Сейчас в теме
(4)Не хотелось бы начинать холивар, но этот модуль как раз что бы не использовать расширение, а дорабатывать конфигурацию, находящуюся на поддержке и в дальнейшем обновлять ее используя трёхсторонней сравнение.
15. DELOVOYDOM 09.02.24 03:17 Сейчас в теме
(2) Я тоже не понял столько текста из ничего. Все современные решения сейчас на расширениях, пару минут и внедрил клиенту. Пару минут и 1с не узнать. Автор молодец что провел лабораторную работу "как я научился программно создавать форму" так, что поддерживать потом от 100 клиентов было бы невозможно).
6. huxuxuya 366 20.12.19 13:56 Сейчас в теме
(1)Тут можно переиспользовать контекст элемента, т.е. настроил как должен выглядеть определенный вид элемента и клепаешь дальше одной строчкой аналогичные.
Так же думаю что быстрее ту же табличную часть на форму добавить, для этого нужно имя табличной части, да имена колонок в структуре.
Группу создать у которой будут две группы внутри - правая и левая, тоже достаточно частая задача которая тоже решается одной строчкой.
Команду - гиперссылки добавить тоже строчек меньше должно получиться чем все писать кодом обычным.
Грубо говоря фреймворк.

Если будут идеи, чего не хватает, буду рад узнать.
7. Steelvan 302 20.12.19 18:15 Сейчас в теме
Мало написать программу, надо еще доказать что она нужна :)
DELOVOYDOM; VitalyKepov; ITSun; rovenko.n; acanta; +5 Ответить
16. DELOVOYDOM 09.02.24 03:19 Сейчас в теме
(7) В этой публикации 1% информации про 1с и 99% процентов доказывания как это нужно и почему автору так показалось
8. kirill_sh 1 23.12.19 12:08 Сейчас в теме
Добрый день, данная подсистема может добавлять команды формы, общие команды?
9. Светлый ум 406 23.12.19 12:33 Сейчас в теме
10. huxuxuya 366 23.12.19 12:39 Сейчас в теме
(8) Добавлять команды формы и выводить команды на форму можно как в виде кнопок так и гиперссылок и кнопок командной панели.

Общие команды пока что нет.

https://github.com/huxuxuya/1cFormEditor/blob/master/README.md

Тут перечень функций есть можно посмотреть что есть.

Картинку тестовой обработки которая программно сформирована сегодня постараюсь выложить, что бы были визуально видны возможности модуля.
11. JohnyDeath 301 29.03.21 12:10 Сейчас в теме
Как создать новый реквизит формы и на его основании новый элемент формы.
Судя по коду общего модуля, метод "ИзменитьРеквизиты" вызывается только в функции "ДобавитьДинамическийСписокФормы".
Или я что-то не так смотрю?
12. huxuxuya 366 01.04.21 16:46 Сейчас в теме
(11) Новые реквизиты формы добавлять надо самым обычным кодом перед тем как выводить их на форму, чтобы один раз вызывать ИзменитьРеквизиты.

Стандартный код добавления реквизита на форму с среднем занимает одну строчку, если количество реквизитов больше 3х штук. :)

Поэтому тут особо упрощать нечего.

А ИзменитьРеквизиты при добавлении динамического списка, я над этим медитирую периодически и убрать хочется и если убрать, то функция смысл теряет, не знаю еще что с динамическим списком делать :(.
13. sergo5 07.09.22 12:53 Сейчас в теме
Добрый день. Подскажите, пожалуйста, есть ли обновление данной разработки. и как можно их получить? спасибо
14. huxuxuya 366 13.09.22 10:19 Сейчас в теме
Добрый день.
На гитхабе должно быть все самое актуальное, но сомневаюсь что в разработке менялось в последнее время.
Если какие проблемы есть пишите там ишьюзы
https://github.com/huxuxuya/1cFormEditor
https://github.com/huxuxuya/FormCodeGenerator
Оставьте свое сообщение