Программная модификация форм - текучий конструктор

05.03.25

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

Конструктор для программной модификации форм, разработанный согласно паттерну Текучий строитель. Будет полезен при программной доработке форм, особенно при большом количестве создаваемых реквизитов - при использовании текучего конструктора код будет выглядеть более наглядно и лаконично.

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
Конструктор форм
.epf 12,02Kb ver:1.0.0
3
3 Скачать (1 SM) Купить за 1 850 руб.

Для использования обработку потребуется встроить в конфигурацию, в общем модуле (например, "ОбщегоНазначения") добавить создание конструктора

Функция КонструкторФорм(Форма) Экспорт

    ОбработкаОбъект = Обработки.zdc_КонструкторФорм.Создать();
    ОбработкаОбъект.Инициализировать(Форма);
    
    Возврат ОбработкаОбъект;
	
КонецФункции

Далее, для использования, при создании формы объекта (в модуле формы или ОМ.МодификацияКонфигурацийПереопределяемый) можно выполнять доработку:

1. Создаётся экземпляр объекта обработки через общий модуль.

2. Выполняется доработка формы. Проверка ЗапретДоработкиФормы добавлена на случай необходимости открытия формы без создания новых элементов.

 
 Пример использования

 

 
 Доступные методы
 
 
Для тех, у кого нет SM

На гитхабе пока только релизы обработки без исходного кода (файлы XML) 

https://github.com/QZeddicus/Fluent-Form-Constructor-1C

 

Проверено на следующих конфигурациях и релизах:

  • 1С:Библиотека стандартных подсистем, редакция 3.1, релизы 3.1.10.452

обработка конструктор форм программная модификация

См. также

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

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

15500 руб.

02.09.2020    186343    1037    403    

972

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

Инструмент представляет собой обработку для проведения свёртки или обрезки баз данных. Работает на ЛЮБЫХ конфигурациях (УТ, БП, ERP, УНФ, КА и т.д.). Поддерживаются серверные и файловые базы, управляемые и обычные формы. Может выполнять свертку одновременно в несколько потоков. А так же автоматически, без непосредственного участия пользователя. Решение в Реестре отечественного ПО

8400 руб.

20.08.2024    25771    167    86    

165

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

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

22200 руб.

06.10.2023    20764    53    19    

86

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

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

15000 руб.

10.11.2023    13947    58    33    

78

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

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

9360 руб.

17.05.2024    30934    105    48    

149

Работа с интерфейсом Анализ учета Мониторинг Платформа 1С v8.3 8.3.14 1C:Бухгалтерия 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 Платные (руб)

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

9600 руб.

27.03.2025    1037    3    5    

8

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

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

5000 руб.

07.02.2018    105073    247    100    

312
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. ixijixi 2008 05.03.25 12:37 Сейчас в теме
Отладчик с ума сойдёт))

Я плюсанул, если что
2. dhurricane 05.03.25 13:02 Сейчас в теме
Хотелось бы упростить некоторые конструкции.

1. Создание реквизитов, вложенных в таблицу значений. Удобнее было бы не указывать имя таблицы третьим параметром, как путь к данным, а иметь что-то в духе:
Конструктор
	.СоздатьРеквизит("Тест", "Строка")
	.СоздатьРеквизит("Тест2", "Строка")
	.СоздатьРеквизит(ИмяТаблицы, "ТаблицаЗначений")
		.СПолем("КолонкаБулево1", "Булево")
		.СПолем("КолонкаБулево2", "Булево")
		.СПолем("КолонкаСтрока1", "Строка")
		.СПолем("КолонкаСтрока2", "Строка")
	.ИзменитьРеквизиты();
Показать

2. Аналогично с группами и подчиненными им элементами. Можно, например, всегда вкладывать в последнюю добавленную группу новые элементы, пока не встретится завершающий метод (имя удачного не придумал):
Конструктор
	.СоздатьГруппу("ТестоваяГруппа", "Заголовок группы")
	.УстановитьСвойство("Поведение", ПоведениеОбычнойГруппы.Всплывающая)
		.СоздатьПоле("ПолеРеквизитаТест",, "Тест")
		.УстановитьДействие("ПриИзменении", "ТестПриИзменении");
	.КонецГруппы();

3. Туда же и создание полей таблицы формы. При этом префикс имен элементов и путь к данным вычисляется конструктором:
Конструктор
	.СоздатьТаблицу(ИмяТаблицы)
		.СоздатьПолеФлажка("КолонкаБулево1")
		.СоздатьПолеФлажка("КолонкаБулево2")
		.СоздатьПолеВвода("КолонкаСтрока1")
		.СоздатьПолеВвода("КолонкаСтрока2")
	.КонецТаблицы();
JohnyDeath; alex_sayan; Evg-Lylyk; +3 Ответить
3. Zeddicus 43 05.03.25 15:53 Сейчас в теме
(2) Спасибо за идеи, подумаю над реализацией.
user1438475; +1 Ответить
8. RustIG 1880 06.03.25 09:11 Сейчас в теме
(2)
.СоздатьГруппу("ТестоваяГруппа", "Заголовок группы")
.УстановитьСвойство("Поведение", ПоведениеОбычнойГруппы.Всплывающая)
.СоздатьПоле("ПолеРеквизитаТест",, "Тест")
.УстановитьДействие("ПриИзменении", "ТестПриИзменении");
.КонецГруппы();


а как узнать в каком порядке вызывать подчиненные функции?
что будет , если перепутать их местами?
например так:
СоздатьГРуппу()
СоздатьПоле()
УстановитьСвойство()
КонецГРуппы()
14. dhurricane 06.03.25 10:29 Сейчас в теме
(8) Применять к тому элементу, что был создан последним, очевидно.
15. RustIG 1880 06.03.25 11:26 Сейчас в теме
(14) я не об этом :)
откуда мне знать какие свойства применять?
вот мне понадобится добавить кнопку, как мне с этим списком функций разобраться? в каком порядке вызывать?
по идее, надо лезть в синтакс-помощник и хорошо разобраться как вообще программируются элементы формы, а потом лезть в модуль текучего интерфейса искать нужную мне функцию - уже по идее пора синтакс-помощник создать для текучего интерфейса....
16. dhurricane 06.03.25 11:38 Сейчас в теме
(15) Эм. Также, как и с любым другим программным интерфейсом какого-либо модуля: открываешь и читаешь описание к методам. Или я опять что-то не так понял? :)
17. RustIG 1880 06.03.25 11:51 Сейчас в теме
(16) ну да, вы сильно упрощаете или я везде вижу сложности :)
на гитхабе обработка выложена без исходников - печально....
на каждую такую обработку нужно создать описание, пусть кто-нибудь приложит скрин, как у него описан текучий интерфейс....думаю, что мало кто заморачивается над этим описанием....
читать как устроено программное добавление кнопки в платформе 1с, чтобы потом еще раз читать описание (если оно имеется) у текучего интерфейса - задача просто неоценимая - думаю как раз ИИ тут пригодится, а вот нам разработчикам легче не станет....
4. tormozit 7276 06.03.25 07:17 Сейчас в теме
За все текучее сразу ставлю минус, т.к. отлаживать это - боль.
Yashazz; bulpi; Revachol; Evg-Lylyk; qwinter; triviumfan; +6 Ответить
5. kalyaka 1132 06.03.25 07:38 Сейчас в теме
(4) Да, есть такое. Читать и понимать легче, за счет того, что нет избыточности, а вот отлаживать сложнее.
9. RustIG 1880 06.03.25 09:13 Сейчас в теме
(5)
а вот отлаживать сложнее

пора делать текстовый преобразователь - трансформирует текст текучего синтаксиса в текст стандартного синтаксиса, типа:
было:
УстановитьГРуппу()
.СоздатьПоле()
стало:
Об = НужнаяОбработка;
Об.УстановитьГруппу();
Об.СоздатьПоле();
24. starik-2005 3172 07.03.25 10:05 Сейчас в теме
(9) Прям вот ужос-кошмар )))

Чета не вижу проблем с "текучим" стилем особых. Что там отлаживать? Библиотеку? Просто логика меняется. Да, не на каждой строке можно остановиться отладчиком, но в 99% случаев при отладке каждая строка и не нужна - нужны как раз группы строк. С другой стороны, строки тут тоже никуда не деваются - они внутри объекта, реализующего "текучесть", и на них все это остановится. Прям как на типовой с ее миллионом after-вызовов всех этих ловушек событий. И ты, такой: "да когда же это кончится!!!" )))
7. Viktor_Ermakov 375 06.03.25 09:10 Сейчас в теме
(4)
За все текучее сразу ставлю минус, т.к. отлаживать это - боль.

Согласен, отлаживать боль, но ведь отлаживать должен только автор инструмента, а мы должны пользоваться, и в гите в истории изменений очень понятно кто что менял, удобно читать и писать.
11. NikitaIvanchenko 284 06.03.25 09:46 Сейчас в теме
(4) Ну зачем отлаживать? ДобавитьКнопку, ДобавитьРеквизит. Под капот лезть не нужно. Я не поддерживают такие принципиальные минусования =(
JohnyDeath; starik-2005; Evg-Lylyk; sleemp; Viktor_Ermakov; dhurricane; +6 Ответить
12. kalyaka 1132 06.03.25 10:07 Сейчас в теме
(11)
зачем отлаживать?
Когда долго не используешь и нужно побыстрому въехать можно и забыть последовательность применения методов там где это критично. Например создание реквизита таблицы должно предшествовать созданию таблицы. Ну или таблиц несколько и пропущено создание одной. Или более неоднозначный случай, когда есть похожие методы, но различающиеся по контексту. Например у меня в модели запроса есть УсловиеСвязи, Условие - 1-й для соединения, а 2-й для виртуальной таблицы.

Здесь в помощь Конструкторы типа построителя Запроса и Шаблоны текста с подсказкой, использование отступов.
18. RustIG 1880 06.03.25 11:53 Сейчас в теме
(12) вот и я задаю те же вопросы выше - как разобраться в чужом коде, не то что бы свое вспомнить...
19. kalyaka 1132 06.03.25 13:16 Сейчас в теме
(18) мне очень помогают двунаправленные конструкторы. Это когда из текучего интерфейса можно получить исходный объект (из модели запроса - текст запроса, из модели отчета - схему компоновки, из модели формы - форму или xml описание) и, отредактировав исходный объект, сформировать код в текучем интерфейсе.

Основное преимущество текучего интерфейса - это получение легкого кода. В смысле легкого для чтения и понимания, но сложного в написании и отладке. Практически разработка текучего интерфейса это как создание мини DSL для конкретной узкой задачи. Соответственно этот DSL тоже нужно изучать при применении.
21. Viktor_Ermakov 375 06.03.25 14:11 Сейчас в теме
(11)
Никита, как раз я про твой инструмент тут и говорил, что кажется что они делают одно и то же)))
22. NikitaIvanchenko 284 06.03.25 14:17 Сейчас в теме
(21) Ага, я понял. Ну да, цели, и подход похожи. Но разве это плохо =)
23. Viktor_Ermakov 375 06.03.25 14:31 Сейчас в теме
(22) В целом конечно не плохо, хочу понять мотивацию. Просто если каждый будет создавать по инструменту и бросать его потом от выгорания... то развития не будет. А если объединиться то можно сделать что то типа VA ))
25. starik-2005 3172 07.03.25 10:07 Сейчас в теме
(11)
такие принципиальные
Издержки обращения.
13. kalyaka 1132 06.03.25 10:21 Сейчас в теме
(4) Отлаживать можно через комбинацию Вход-Выход: F11 - Shift F11 или в EDT: F5 - F7
27. alex_sayan 61 10.03.25 19:21 Сейчас в теме
(4) в чем боль? Всё там нормально отлаживается
28. tormozit 7276 10.03.25 22:50 Сейчас в теме
(27) Можешь показать, как остановить отладчик в середине текущей цепочки (например на 4-м вызове из 9)?
29. alex_sayan 61 11.03.25 06:21 Сейчас в теме
(28) ставишь точку останова в начале вызываемого метода и готово
30. tormozit 7276 11.03.25 07:31 Сейчас в теме
(29) А если он вызывается в каждом вызове, т.е. 9 раз но с разными параметрами?
31. alex_sayan 61 11.03.25 10:25 Сейчас в теме
(30) а это уже архитектурный просчет автора. Текучий интерфейс не должен превращаться в километровую цепочку. 2-3 вызова, ну максимум 5-6 вызовов за раз
32. tormozit 7276 11.03.25 14:21 Сейчас в теме
(31)
2-3 вызова

Шах и мат, текучие архитекторы!
6. Viktor_Ermakov 375 06.03.25 09:09 Сейчас в теме
Уважаемый автор, а ведь есть уже такой инструмент formhelper, он делает ровно то же самое, и вроде как используется в сообществе, по крайней мере я точно его использую. Для чего делали новый? Предыдущий не подошел по каким параметрам?
Evg-Lylyk; sleemp; kalyaka; +3 Ответить
20. starik-2005 3172 06.03.25 14:07 Сейчас в теме
(6) тоже вот задался вопросом, ибо тоже юзается изредка какая-то обработина с тем же синтаксисом.
10. Viktor_Ermakov 375 06.03.25 09:14 Сейчас в теме
Еще уважаемый автор, слово "Конструктор." может пересекаться в разных конфигурациях, расширениях, лучше сделать конкретное наименование "КонструкторИмя."
26. ixijixi 2008 08.03.25 12:18 Сейчас в теме
(10) Так Конструктор - локальная переменная, ничего страшного нет
33. Viktor_Ermakov 375 11.03.25 14:35 Сейчас в теме
(26)
Спасибо, я не заметил. Тогда да, никаких проблем нет))
Оставьте свое сообщение