0. rpgshnik 1623 06.09.19 13:30 Сейчас в теме

[Шпаргалка] Программное создание элементов формы

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

Перейти к публикации

Комментарии
Избранное Подписка Сортировка: Древо
1. lmnlmn 53 06.09.19 13:38 Сейчас в теме
Каждый раз при необходимости создать программно элементы формы посещает мысль что надо бы сделать модуль, но все некогда и некогда. А у автора руки, таки, дошли. Полезно!
JohnyDeath; ids79; magdeevik; Senator_I; user774630; mnemchinov; rpgshnik; +7 Ответить
2. VmvLer 06.09.19 13:47 Сейчас в теме
как шпаргалка неплохо для новичков

пара замечаний, ну куда ж без них
1. Напишите жирным шрифтом
синтаксис ЭтаФорма.Элементы.
использовать только если этот фрагмент кода расположена в методе с параметром
ЭтаФорма, например Функция СоздатьГруппуФормы(ЭтаФорма, ПараметрыГруппы)
если же этот фрагмент кода будет расположен в модуле формы, то достаточно
написать Элементы.
Когда будет копипастить код из этой шпаргалки, то всегда думайте чтобы НЕ рукоягодничить.


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

пожалуй все остальное чики-пуки, больше замечаний нет.
unichkin; Interrupted; Yashazz; +3 Ответить
5. user774630 06.09.19 14:45 Сейчас в теме
(2)
можно найти в общих модулях типовых конфигураций

Ну вы бы сказали куда смотреть хотя бы для старта.
6. VmvLer 06.09.19 15:01 Сейчас в теме
(5) раздел "общие модули"

искать аналоги глобальным поиском от пары секунд до минуты если вы конечно видели конфигуратор.
7. user774630 06.09.19 15:09 Сейчас в теме
(6) Ну т.е. как и большинство ваших комментов - вякнуть и всё.
8. VmvLer 06.09.19 15:25 Сейчас в теме
(7) Большинство моих комментариев по существу, но прямолинейно - это неприятно многим.

А от вас пока лишь хамство.

В чем я не прав конкретно в комментарии в (2) или в (6) - разве это не по существу вопроса?
13. Yashazz 2521 06.09.19 19:53 Сейчас в теме
(7) А вы, товарисч, не ленитесь, время - оно денег стоит, а опыт по отыскиванию чего-либо в коде БСП и вовсе бесценен. А то вам мало что разжуй, так ещё и пищеварить, а как отказывают, так вы сразу хамите? Ну-ну.
10. rpgshnik 1623 06.09.19 15:48 Сейчас в теме
(2) этот код вызывается из общего модуля, по другому не получилось. Я знаю, что в модуле формы не обязательно писать ЭтаФорма. Я предлагаю не функции копипастить в модуль формы, а целиком модуль создать для этих целей. И при необходимости вызывать с модуля формы, функцию общего модуля.
12. Labotamy 06.09.19 19:08 Сейчас в теме
Свойство ЭтаФорма объекта УправляемаяФорма удалено и поддерживается для совместимости. https://dl04.1c.ru/content/Platform/8_3_3_641/1cv8upd.htm

Как бы 6ть лет прошло. Пора уже вообще забыть "ЭтаФорма"
azhilichev; MVK80; +2 Ответить
16. rpgshnik 1623 07.09.19 09:18 Сейчас в теме
(12) хорошее замечание, проверю. Удаленно "условно" выходит 🙃
22. MVK80 09.09.19 14:50 Сейчас в теме
(12), это будет до тех пор, пока разработчики типовых сами не избавятся от этого. Так-то, да я сам всегда использую ЭтотОбъект вместо ЭтаФорма и другим рекомендую.
rpgshnik; +1 Ответить
26. unichkin 1188 13.09.19 02:48 Сейчас в теме
3. TanisIntec 3 06.09.19 14:18 Сейчас в теме
Как раз занимался динамическим созданием, полезная инфа
rpgshnik; +1 Ответить
4. Timic 12 06.09.19 14:26 Сейчас в теме
В примере создания полей я бы поменял местами присваивание вида и пути к данным. Сначала устанавливаем путь к данным, потом вид поля формы. По крайней мере раньше при установке пути к данным вид автоматически устанавливался в поле надписи
9. Senator_I 2 06.09.19 15:45 Сейчас в теме
Спасибо, полезная вещь, добавил себе в "Избранное".
rpgshnik; +1 Ответить
11. ids79 3791 06.09.19 15:56 Сейчас в теме
Спасибо, полезный материал!
Сам хотел написать подобную статью, Вы меня опередили ))
Для расширений динамическое создание элементов форм - это уже почти стандарт.
rpgshnik; +1 Ответить
14. Yashazz 2521 06.09.19 19:54 Сейчас в теме
(11) Вот и убивать надо за такой стандарт. Есть же нормальная возможность перегрузить форму своей собственной, нафига такие танцы с бубном? Чтоб ваши последователи тратили втрое больше времени, пытаясь а) спрогнозировать внешний вид, б) поменять, чтоб ничего не сдохло?
17. ids79 3791 07.09.19 09:19 Сейчас в теме
(14)Позволю себе с Вами не согласиться. Я сам сперва добавлял и изменял реквизиты в загруженной в расширение форме. Но потом перешел на программное создание именно для большей прозрачности и управляемости. Хотя, в целом, я сторонник использования расширений.
Anchoret; rpgshnik; +2 Ответить
20. azhilichev 148 09.09.19 10:32 Сейчас в теме
(14) Программное создание отлично подходит для подключаемых механизмов, в виде API. Пример. Вы реализовали визуальный инструмент, который нужно подключить к нескольким формам. Вносить интерфейсные изменения во все формы - так себе решение. При каждом изменении внешнего вида и поведения необходимо будет вносить изменения во все экземпляры. Работа же через API - более логичное решение. Условно, при создании формы вызывается конструктор, который дополняет форму. И вся работа инструмента идет через 1-3 обработчика, которые используют единую логику, вынесенную в общий модуль.
rpgshnik; +1 Ответить
15. Yashazz 2521 06.09.19 19:57 Сейчас в теме
Как и любая мода, этот подход сейчас на слуху и популярен, а потому шпаргалка, безусловно, невредная для начинающих. Но, уверен, программное создание под тяжестью собственной непрозрачности, негибкости, времязатратности и громоздкости рано или поздно займёт подобающее ему небольшое место в ряду иных инструментов. Это костыль, однажды он на 90% отомрёт.
FreeArcher; +1 4 Ответить
18. Yashazz 2521 08.09.19 10:21 Сейчас в теме
(15) Знаете, примерно так же со мной не соглашались, когда я говорил, что концепция "переопределяемых" модулей - это костыль. Мне говорили, ты что, это удобно, прогрессивно и прозрачно, дописал своё в типовой и обновлять легче! А потом появились расширения)
Так что, господа, попрыгаете на грабли программной доработки формы (особенно чужой и криво сделанной), поймёте. Лет через 5 вернёмся к этой теме)
27. lvictor58 129 18.09.19 12:31 Сейчас в теме
(18) Ну, во-первых 5 лет еще как-то надо прожить, работать и зарабатывать, а не ждать непонятно чего.
А во вторых, кто на этих расширениях уже что называется "собаку съел" советуют новые элементы форм создавать в расширениях программно, что бы потом не было проблем с обновлениями.
rpgshnik; +1 Ответить
19. azhilichev 148 09.09.19 10:24 Сейчас в теме
(15)
программное создание под тяжестью собственной непрозрачности, негибкости, времязатратности и громоздкости

Если сделана грамотная декомпозиция методов по созданию элементов, команд, реквизитов и обработчиков, то трудозатраты на доработку программно-генерируемого интерфейса формы лишь незначительно больше, чем на изучение и разработку в конструкторе.
28. Yashazz 2521 18.09.19 22:26 Сейчас в теме
(19) Только это уникально редко встречается.
azhilichev; +1 Ответить
32. azhilichev 148 19.09.19 09:57 Сейчас в теме
(28) Пожалуй, плюсану. Среди 1С-ников качественный и осмысленный код встречается не столь часто. Увы.
21. Andrefan 09.09.19 10:41 Сейчас в теме
Отличная работа, спасибо. Для полноты картины хотелось бы ещё увидеть сложные ЭУ: таблица формы, динамический список, командная панель, контекстное меню таблиц.
rpgshnik; +1 Ответить
23. rpgshnik 1623 09.09.19 14:57 Сейчас в теме
(21) Динамический список включен в код модуля в конце публикации, а писал я про него уже давненько https://infostart.ru/public/728597/
24. smirnov.es 16 11.09.19 10:36 Сейчас в теме
Дима, спасибо за такой качественный контент.
rpgshnik; +1 Ответить
25. rpgshnik 1623 11.09.19 15:02 Сейчас в теме
29. sulitckaja 19.09.19 08:48 Сейчас в теме
Есть реквизит формы "Таблица значений". При выборе у колонки на форме "ПутьКДанным"
открывается форма "Выбор реквизита" в которой помимо реквизитов (колонки) есть еще реквизит Строка[0]
в которой тоже присутствуют колонки. Может кто то подсказать, как и для чего используется реквизит Сnрока[0]? или ссылку где можно почитать? Изображение прикреплено.
Спасибо заранее.
Прикрепленные файлы:
30. dhurricane 19.09.19 09:15 Сейчас в теме
(29) Т.о. можно, например, реализовать два варианта интерфейса: полный (с таблицей) и упрощенный (реквизиты первой строки отображаются как обычные поля ввода). Такое встречается в типовых конфигурация, например УТ11, документ "Заявка на расходование денежных средств". Он содержит переключатель для расшифровки платежа "Без разбиения / Списком" (см. рис.)

P.S. Я немного слукавил. В УТ используется не первая строка таблицы, а текущая. Подход немного другой, но сути это не меняет.
Прикрепленные файлы:
sulitckaja; +1 Ответить
31. sulitckaja 19.09.19 09:30 Сейчас в теме
(30)Спасибо большое за помощь.
Оставьте свое сообщение
Новые вопросы с вознаграждением
Автор темы объявил вознаграждение за найденный ответ, его получит тот, кто первый поможет автору.

Вакансии


Программисты 1С УТ / БУЗ/ЗУП / БИТ ФИНАНС
Москва
зарплата от 100 000 руб. до 180 000 руб.
Полный день

Программист 1С
Москва
зарплата от 150 000 руб. до 150 000 руб.
Полный день

Программист, аналитик, эксперт 1С
Санкт-Петербург
По совместительству

Программист 1С
Владивосток
зарплата от 80 000 руб. до 120 000 руб.
Полный день