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

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    177571    986    403    

943

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

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

8400 руб.

20.08.2024    19072    127    70    

130

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

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

15000 руб.

10.11.2023    12791    53    33    

72

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

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

22200 руб.

06.10.2023    18750    49    19    

82

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

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

9360 руб.

17.05.2024    28899    100    48    

146

Инструментарий разработчика Программист 8.3.14 Россия Платные (руб)

Расширение для конфигурации “Конвертация данных 3”. Добавляет подсветку синтаксиса, детальную контекстную подсказку, глобальный поиск по коду.

20000 руб.

07.10.2021    18611    7    32    

43

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

Разработка Конструктор автоматизированных рабочих мест "Конструктор АРМ" реализована в виде расширения и является универсальным инструментом для создания АРМ любой сложности в пользовательском режиме.

3600 руб.

27.12.2024    1708    2    0    

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

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

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

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

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


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

пора делать текстовый преобразователь - трансформирует текст текучего синтаксиса в текст стандартного синтаксиса, типа:
было:
УстановитьГРуппу()
.СоздатьПоле()
стало:
Об = НужнаяОбработка;
Об.УстановитьГруппу();
Об.СоздатьПоле();
7. Viktor_Ermakov 373 06.03.25 09:10 Сейчас в теме
(4)
За все текучее сразу ставлю минус, т.к. отлаживать это - боль.

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

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

Основное преимущество текучего интерфейса - это получение легкого кода. В смысле легкого для чтения и понимания, но сложного в написании и отладке. Практически разработка текучего интерфейса это как создание мини DSL для конкретной узкой задачи. Соответственно этот DSL тоже нужно изучать при применении.
21. Viktor_Ermakov 373 06.03.25 14:11 Сейчас в теме
(11)
Никита, как раз я про твой инструмент тут и говорил, что кажется что они делают одно и то же)))
22. NikitaIvanchenko 282 06.03.25 14:17 Сейчас в теме
(21) Ага, я понял. Ну да, цели, и подход похожи. Но разве это плохо =)
23. Viktor_Ermakov 373 06.03.25 14:31 Сейчас в теме
(22) В целом конечно не плохо, хочу понять мотивацию. Просто если каждый будет создавать по инструменту и бросать его потом от выгорания... то развития не будет. А если объединиться то можно сделать что то типа VA ))
13. kalyaka 1128 06.03.25 10:21 Сейчас в теме
(4) Отлаживать можно через комбинацию Вход-Выход: F11 - Shift F11 или в EDT: F5 - F7
6. Viktor_Ermakov 373 06.03.25 09:09 Сейчас в теме
Уважаемый автор, а ведь есть уже такой инструмент formhelper, он делает ровно то же самое, и вроде как используется в сообществе, по крайней мере я точно его использую. Для чего делали новый? Предыдущий не подошел по каким параметрам?
20. starik-2005 3162 06.03.25 14:07 Сейчас в теме
(6) тоже вот задался вопросом, ибо тоже юзается изредка какая-то обработина с тем же синтаксисом.
10. Viktor_Ermakov 373 06.03.25 09:14 Сейчас в теме
Еще уважаемый автор, слово "Конструктор." может пересекаться в разных конфигурациях, расширениях, лучше сделать конкретное наименование "КонструкторИмя."
Оставьте свое сообщение