Программное создание элементов в форме при использовании расширения

04.03.24

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

При работе с формой в расширении многие рекомендуют все дополнительные элементы создавать программно. Рекомендация очень разумная. Т.к. часто расширения множатся и одна и та же форма может изменяться несколько раз. Любые изменения в конструкторе формы могут стать критичными при обновлении или переносе расширений. О том, как придерживаться этой рекомендации без лишний усилий и потерь в скорости разработки, и пойдет речь в этой статье.

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

Сам стараюсь в расширениях изменения в конструкторе форм не практиковать. Но встречаюсь с таким часто. Не исключение, когда у заказчика есть (или было) несколько подрядчиков. И каждый ведет собственное расширение. Чтобы не делить ответственность. Как следствие - изменение одних и тех же объектов в разных расширениях, под разные задачи, не редкое явление.

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

Функции достаточно подробно описаны в коде. Используемые умолчания расположены, как правило, в верху кода функции.

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

//infostart.ru/1c/articles/1118319/?ysclid=lta3h29kir838274485#_Toc18589857

 

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

Конечно, никакого прямого запрета нет. Изменения в конструкторе не запрещены. Никаких нехороших последствий немедленно не наступает. Но со временем и ростом количества расширений это превращается в раздражающую проблему. И для Вас и для других участников разработки. Добавляя Вам их проклятия в карму. Оно Вам надо?

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

Надо только следить, чтобы не исчезли группы формы типовой конфигурации, на которые Вы опирались при создании новых элементов. И стараться их выбирать исходя из разумных предположений.

Для демонстрации методики использования фукций модуля я сделал простую обработку. Вы сами можете ее повторить. Просто создайте новую обработку с формой. И поместите следующие тексты в модуль обработки и модуль формы.

 
 Текст модуля обработки
 
 Текст модуля формы

 

Запускаем и убеждаемся в работоспособности кода. Результат должен быть примерно такой:

 
 Результат запуска обработки

 

Картинка свертывается. Кнопка работает. 

 
 Работа формы

 

 

Убедившись что работает, код модуля обработки можно перенести в общий модуль. Например, свой. Или тематический.

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

Лично я пользуюсь с удовольствием. Чего и Вам желаю.

Обработка писалась и тестировалась на версии платформы 8.3.22.2411. Конфигурация, думаю, значения не имеет.

Как-то так.

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

Расширение управляемая форма программное создание элемент формы БСП конструктор форм приемы разработка

См. также

Богатый редактор картинок, хранимых в базе, с возможностью РИСОВАНИЯ. Редактор внешних файлов картинок. Объект, расширяющий возможности работы с картинками из встроенного языка (Три в одном) + Обработка «Стандартизация картинок»

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

Обработка предназначена для редактирования картинок в режиме «Предприятие», с возможностью РИСОВАТЬ на них. Поддерживается работа как в обычных формах (толстый клиент) так и на управляемых формах (тонкий клиент). Обработка позволяет редактировать как картинки, хранимые в базе, так и графические файлы с диска на файловой системе. Помимо базовых функций (изменение размеров, преобразование формата, обрезание картинки, повороты и т.п.) – редактор имеет богатый набор инструментов для рисования. Доступна функция вставки изображения из буфера обмена. Также обработка может быть использована из встроенного языка как объект для редактирования картинок. Объект может быть использован: на стороне клиента, на стороне сервера, из внешнего соединения. Данная обработка будет особенно полезна тем, кто вносит картинки в базу (изображения номенклатуры, фотографии физических лиц и т.п.). Функционал реализуется с использованием JavaScript и бесплатного ПО ImageMagick (без использования внешних компонент).

6000 руб.

16.01.2015    62099    43    59    

81

[Расширения] Динамическое управление видимостью и доступностью элементов форм (УФ) (8.3.6+)

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

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

5000 руб.

14.01.2016    54702    16    21    

42

Управление дашбордами

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

Обработка предназначена для создания и управления дашбордами.

2400 руб.

29.06.2020    16907    22    4    

36

Новогоднее оформление для 1С

Работа с интерфейсом Платформа 1С v8.3 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Зарплата и Управление Персоналом 3.x 1С:Управление нашей фирмой 3.0 Бесплатно (free)

Добавьте новогоднего настроения! Расширение создает декорацию в виде гирлянды на некоторых формах объектов.

27.12.2023    11172    762    elcoan    45    

106

Конструктор HTML, CSS и javascript

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

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

2 стартмани

10.04.2023    9891    153    acces969    31    

119

Модель состояния для MVC

Работа с интерфейсом Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

"MVC плохо применима в 1С" - познакомьтесь с моделью состояния и, возможно, ваше мнение поменяется! Представленное решение является эволюционным развитием идеи реализации MVC для 1С. В новой версии добавлены DSL для описания модели состояния, а также параметризация свойств параметров и элементов формы.

1 стартмани

05.07.2022    3944    kalyaka    4    

29

Табло очереди заказов на экран телевизора

WEB-интеграция Работа с интерфейсом Платформа 1С v8.3 1С:Розница 2 Платные (руб)

Связка из веб-приложения и расширения для 1С: Розница 2.3.

3600 руб.

29.04.2022    12298    1    5    

10

Условное оформление элементов форм в пользовательском режиме 1С (управление видимостью и доступностью элементов форм)

Работа с интерфейсом Платформа 1С v8.3 Платные (руб)

Подсистема условного оформления элементов форм (далее подсистема) предназначена для настройки оформления элементов форм (видимость, доступность, цвет фона, цвет текста и прочее) в пользовательском режиме 1С. Также подсистему возможно использовать для ограничения доступа к реквизитам формы для определенных пользователей (или групп пользователей).

6000 руб.

18.01.2022    8955    1    2    

6
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. yuha33 05.03.24 09:05 Сейчас в теме
Я прошел через такое. Ничего кроме головной боли программное создание элементов не принесло.
user872840; +1 Ответить
2. KVIKS 401 05.03.24 09:51 Сейчас в теме
(1)На вкус и цвет - все фломастеры разные.
Я приловчился с программными элементами и проблем это не вызывает.
Рамзес; NeLenin; +2 Ответить
3. ixijixi 1801 05.03.24 11:13 Сейчас в теме
Небольшая ремарка насчет процедуры СоздатьРеквизит. Рекомендуется создавать и удалять все реквизиты одним махом, т.к. операция считается очень затратной по ресурсам.

СП
Действия добавления и удаления выполняются за один вызов.
Следует учитывать, что операция изменения состава реквизитов является ресурсоемкой,
поэтому операции изменения состава реквизитов формы выполняются
пакетным образом.
Рамзес; M.Nikitin; NeLenin; ivprovotorov; shard; 0x00; +6 Ответить
6. user1374747 204 05.03.24 15:24 Сейчас в теме
(3)Привет. Знаю ли я об этом? Да знаю.

Здесь вопрос целей и места действия.
Для моих целей на тонком клиенте торможения не заметил.
На web возможно, это критично. Не проверял.
Главная цель была отучить изменять формы в расширении конструктором.

Можно заслать в функцию массив имен. Но тогда функция станет труднее в понимании и использовании.
Т.е. получив мнимый плюс - получает ощутимый минус для главной цели.
Стоит ли оно того?

Извиняюсь, если у кого то другие приоритеты. Если человек займется программным созданием, то он разберется, со временем. Ссылку на шпаргалку я дал. Но каждому овощу свой срок. Главное - чтобы занялся.
4. user1950534 05.03.24 11:32 Сейчас в теме
Программное создание визуальных элементов в любом аналогичном фреймворке - зло злющее, об этом все говорят и пишут.

Да, оно вроде как удобно и понятно но только тому, кто разрабатывает эту шнягу изначально!

А попробуй потом найди, где хайдится кнопель в каком модуле и в каком обработчике.
Кто-то любит "ПриОткрытии", другой "ПриСозданииНаСервере", третий вообще - подписку на событие.
Да и запрятать заветный код где-то в 4м уровне стека вызова, как водится....
Trucker; Award; bulpi; _alex1974; vakham; user872840; +6 1 Ответить
5. starik-2005 3039 05.03.24 11:37 Сейчас в теме
(4)
об этом все говорят и пишут
А ссылки есть на всех?
ЗЫ: Остальные проблемы возникают и без создания программного. Вот, например, эксель. Вроде бы что там такого, да? Но есть, например, выделение цветом по условию - первый раз долго искал.
Рамзес; NeLenin; +2 Ответить
7. user1374747 204 05.03.24 15:32 Сейчас в теме
(4)Очень понимаю. Когда то программное создание меня тоже раздражало.

Казалось бы. Милое дело - зашел в конструктор и все увидел.

А то возись изучая малознакомый код.

Но со временем код перестал быть малознакомым.
Зато столкнулся с изменением формы сразу в четырех расширениях.
Честно говоря, тоже забодался разыскивать визуально все изменения.
Еще и группы норовят интерактивно вставить.

То ли дело - просто объединить код "ПриСозданииНаСервере" в одной форме главного расширения.

Поэтому все зависит от того, с какой колокольни смотреть. У каждого свой жизненный опыт.
Рамзес; NeLenin; +2 Ответить
8. dima_gsv 21 06.03.24 08:58 Сейчас в теме
Мы используем программное создание элементов для доработки форм основной конфигурации, которая обновляется поставщиком. Этим мы решаем две задачи:
1. упрощается обновление формы, если поставщик её сильно изменил,
2. не требуется добавлять реквизит формы "Объект" в расширение, из-за чего в расширение паровозиком "заезжает" куча ненужных реквизитов объектов.
Рамзес; +1 Ответить
9. user1374747 204 06.03.24 17:03 Сейчас в теме
(8)

Ну да.

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

Статья для тех, кто самостоятельно принимает решение как поступать. Никто же не смотрит. И никто не наругает.
Она о том, как и в скорости не проиграть и другим проблем не создать.
Сохранив карму.
10. rpgshnik 3650 07.03.24 12:44 Сейчас в теме
Рад, что понравилась шпаргалка, ещё есть большая библиотека со схожим функционалом https://infostart.ru/1c/articles/1284403/
11. user1374747 204 07.03.24 16:39 Сейчас в теме
(10)
Тоже рад. Что есть такое подспорье. И что есть люди, которые не ленятся его делать.
12. lvictor58 135 11.03.24 15:39 Сейчас в теме
Я так понимаю, что все это (программное создание реквизитов) имеет смысл если мы не тянем в расширение саму форму. В таком случае прописать создание можно только в общем модуле. В ЕРП я использую для этих целей процедуру
МодификацияКонфигурацииПереопределяемый.ПриСозданииНаСервере(Форма, Отказ, СтандартнаяОбработка)
13. user1374747 204 11.03.24 17:19 Сейчас в теме
(12)
Привет.
Нет. Именно тянем. Просто в конструкторе ничего не добавляем.
Добавляем код в процедуре "ПриСозданииНаСервере".
Чтобы потом не было проблем с обновлением или потерей функционала при переносе в другое расширение.
Актуально для конфигураций, которые на замке. И в расширения которых разные люди лезут из разных контор.
Я последнее время работаю, главным образом, в облаке. Там это очень распространенное явление.
Рамзес; +1 Ответить
14. user2065162 12.03.24 16:15 Сейчас в теме
Просто создайте новую обработку с формой. И поместите следующие тексты в модуль обработки и модуль формы.

А также назначьте обработчик события "ПриСозданииНаСервере".
Оставьте свое сообщение