gifts2017

Программное создание элементов формы

Опубликовал seugenys в раздел Программирование - Работа с интерфейсом

Механизм для программного создания элементов формы "одной строкой"

Все сталкивались с обновлением доработанных конфигураций. Одной из самых неприятных моментов - это обновление измененной формы. На которую добавлены новые реквизиты. Глазами увидеть отличия от типовой бывает очень сложно. По этому многие прибегают к программному созданию реквизитов на форме. Но это дело очень неблагодарное. На создание одной кнопочки приходится писать кучу кода. А если это сложная табличная часть - то задача превращается вообще во что-то пугающие.

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

В архиве пример конфигурации с использованием данного механизма. Смотрите документ "Поступление товаров". Часть реквизитов в нем создана программно.

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

Наименование Файл Версия Размер Кол. Скачив.
Пример
.7z 52,91Kb
28.06.13
70
.7z 52,91Kb 70 Скачать

См. также

Подписаться Добавить вознаграждение

Комментарии

1. anry mc (AnryMc) 01.07.13 12:50
А зачем конфигурация? Пример можно сделать и в форме обработки. Вставить несколько реквизитов в форму и несколько добавить программно... Объем скачивания уменьшиться в разы...
2. seugenys 01.07.13 14:36
Просто там использовался общий модуль, для наглядности. Объем в 54 килобайта по современным меркам не считаю значительным.
WhiteOwl; dimaster; +2 Ответить
3. ivanov660 ivanov660 (ivanov660) 02.07.13 09:33
Не понял что нового в отличии от public/171514/?
4. Сергей Марченко (MarSeN) 02.07.13 10:18
(3) ivanov660,
Текущую обработку не качал, но думаю что здесь в качестве "хранилища настроек" добавляемых элементов форм используется реальная форма. при такой реализации для того чтобы считать необходимые элементы автор, я так понимаю, создает форму источник (ПолучитьФорму), и из нее уже считывает настройки элементов форм. Остается непонятным как автор считывает тексты процедур обработчиков (не наименования обработчиков в реквизитах).
Вообще в реализации данного механизма без "много буковок" в коде явно не обошлось )
5. seugenys 02.07.13 11:25
(4) MarSeN,
>в качестве "хранилища настроек" добавляемых элементов форм используется реальная форма
Да, все именно так.
Тексты процедур обработчиков к сожалению никак не прочитать (во всяком случае я не знаю как). По этому их необходимо добавлять в основную форму
6. Сергей Марченко (MarSeN) 02.07.13 13:42
(5) seugenys,
Тексты процедур можно получить при помощи внешних "программ-распаковщиков". Но в этом случае будет тратиться время на их распаковку, что не есть гуд.
Есть вариант распаковывать их и сохранять в другом хранилище, но это определенный гемор который требует и корректную синхронизацию текстов м/у формой и распакованным текстом в хранилище. Работа не из приятных и трудоемкость не оправдана )
Но в принципе ваш подход заслуживает внимания )
7. Алексей (Емельянов Алексей) 03.07.13 09:29
Делал раньше так же.
Но столкнулся с такими проблемами.
Для расположения реквизитов, приходилось копировать типовую форму (тратил время на удаление ненужных мне типовых реквизитов) и там размещать свои реквизиты, чтобы и координаты копировались. Но если при обновлении изменялась типовая форма, то мои реквизиты уже стояли не так как надо и приходилось опять все править.
Поэтому теперь для дополнительных реквизитов создаю отдельную форму, размещаю там все что нужно. В форме делаю программно кнопку "Доп. сервис", которая открывает мою форму. Все привыкли быстро.

Ну а для процедур, написал парсер свой. Принцип такой, из типовой конфигурации "Выгрузить тексты конфигурации" - программно вношу туда свои изменения (создал для этих целей справочник), и "Загрузить тексты конфигурации".
echo77; KapasMordorov; +2 Ответить 2
8. seugenys 03.07.13 12:28
(7) Емельянов Алексей,
>(тратил время на удаление ненужных мне типовых реквизитов

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

>Но если при обновлении изменялась типовая форма, то мои реквизиты уже стояли не так как надо и приходилось опять все править

С этой проблемой еще не сталкивался. Надо думать...

>Ну а для процедур, написал парсер свой

Давно над этим задумываюсь, да все руки не доходят. А можно взглянуть на него, не выкладывал его здесь?
9. Алексей (Емельянов Алексей) 04.07.13 10:09
Парсер не выкладывал свой, потому что нужно описание к нему делать, а время на это нет.
А так давно думаю сюда его выложить.
10. Александр Крынецкий (echo77) 04.07.13 21:40
(7) Емельянов Алексей, о! Покажите пример! Что за парсер?
11. anry mc (AnryMc) 04.07.13 21:51
(9) Емельянов Алексей, Присоединяюсь к (10)
12. Алексей (Емельянов Алексей) 06.07.13 08:54
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа