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

19.02.12

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

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

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

Наименование Файл Версия Размер
Текст общего модуля
.txt 68,08Kb
157
.txt 68,08Kb 157 Скачать

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

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

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

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

Я конечно не исключение, и так же разработал для себя некоторый механизм, которым успешно пользуюсь уже несколько лет.

Нового ничего не изобрел, все старо как мир и просто в реализации.

Принцип работы прост: есть общий модуль, в котором расположены необходимы процедуры для прорисовки элементов формы, в форме документа или справочника в процедуре "ПриОткрытии" располагаем вызов основной процедуры этого модуля с передачей в нее формы. Можно пойти и иначе, расположить вызов в типовом модуле, который вызывается из большинства форм с передачей самой формы: я расположил вызов этого модуля в модуле "МеханизмНумерацииОбъектов" (УПП) в конце процедуры "УстановитьДоступностьПоляВводаНомера". Она вызывается из большинства документов и справочников, с передачей в нее формы. Мне этого оказалось достаточно.

Далее добавляем в типовой справочник или документ нужный нам реквизит (реквизит табличной части), табличную часть. В свойстве реквизита "Комментарий" описываем свои "свойства" реквизита. Все, на этом работу можно считать законченной. При открытии формы (справочника,  документа) форма передается в модуль обработки, там происходит перебор всех реквизитов объектов и "разбор свойств" каждого из них. Если модуль найдет нужный реквизит (отличительной особенностью является префикс в комментарии, который располагается на первом месте "свойств"), он прочитает его "свойства" и расположит его согласно указанным "свойствам".

Что же может механизм авторазмешения реквизитов: разместить колонку в табличной части (в заданной позиции), заменить типовой реквизит в табличной части. Разместить новую табличную часть на отдельной странице. Разместить реквизит (ы) на форме на отдельной странице или заменить типовой реквизит на форме. Вывести подвал табличной чисти с отображением итогов колонки. Скрыть видимость типового реквизита. Для создаваемой страницы указать заголовок и картинку. Сгруппировать реквизиты на новой странице.

При желании каждый из вас может расширять возможности авторазмешения настолько, насколько хватит фантазии.

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

Для управления типовыми реквизитами используется макет с именем "Форма_Реквизиты", его описание вы найдете в процедуре "ИзменитьСвойстваТиповыхЭлементовФормы".

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

См. также

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

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

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

6000 руб.

16.01.2015    61792    43    59    

80

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

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

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

5000 руб.

14.01.2016    54395    16    21    

42

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

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

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

2400 руб.

29.06.2020    16695    21    4    

35

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

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

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

27.12.2023    10732    750    elcoan    45    

106

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

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

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

2 стартмани

10.04.2023    9606    151    acces969    31    

118

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

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

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

1 стартмани

05.07.2022    3663    kalyaka    2    

27

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

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

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

3600 руб.

29.04.2022    12077    1    5    

10
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. kapustinag 11.02.12 18:02 Сейчас в теме
Да, пожалуй, если бы 5 лет назад при начале внедрения УПП (тогда еще 8.0) остановились бы и придумали что-то подобное - сейчас было бы легче.
2. almas 254 15.02.12 09:02 Сейчас в теме
(1) kapustinag, Применить подобные наработки никогда не поздно. После перехода на ЗуП 2.5 при помощи франча. Еще с год мучились с обновлениями. Потом это надоело и переделали на подобные разработки. В результате к отчетности обновления занимают чуть более 30 минут против 1дня+1дня тестирования пользователями. Стоит Задуматься?
Автору респект!
3. Valerich 1633 15.02.12 11:51 Сейчас в теме
идея интересная, главное не запутаться в этих запятых при написании комментария...

я бы предложил макет с определенной структурой и именем добавлять в объект. Вот там можно в удобной форме все расписывать. И тут вообще полет фантазии - используй либо набор параметров либо программный код туда записывай.
leshiy26; igormiro; Сергей Осипенко; i132; +4 Ответить
4. AlexBar 51 15.02.12 14:16 Сейчас в теме
Реализация механизма может быть любой. Когда я разрабатывал механизм, меня устроил вариант именно с комментарием, чтобы не добавлять новых объектов метаданных, свойств сначала было не много, прибавлялись по мере развития. Указание всех свойств не является обязательным, т.е. если нужно отобразить элемент по-умолчанию то достаточно написать в комментарии Префикс, Истина.
Конечно же можно выполнить реализацию и через макеты, как это сделано для модификациии типовых реквизитов, тут все зависит от полета фантазии. Я преподнес саму идею.
5. Kamikadze 46 15.02.12 17:28 Сейчас в теме
В управляемых формах есть опция "Изменить форму", только вот настройки не сохраняются. если доделать сохранение настроек - проблема будет решена на раз
6. gavrikprog 117 15.02.12 18:22 Сейчас в теме
Подсистема дополнительные реквизиты в БСП гораздо красивее.
Надо только научиться ей пользоваться
7. AlexBar 51 15.02.12 18:25 Сейчас в теме
Кто же спорит что в БСП красивее и что можно настроить управляемые формы? Речь в моем предложении идет об обычных формах, о чем я явно вроде написал. Конкурировать с управляемыми формами и с БСМ не было моей целью.
8. пользователь 15.02.12 18:51
Сообщение было скрыто модератором.
...
9. fixin 4252 15.02.12 19:41 Сейчас в теме
ничто не ново под луной.
Мы делали так - формочка отдельная и код, который ее размещает в заданном месте (более-менее универсальный).
Действительно, тексты обновлять проще чем формы. Респект за популяризацию
10. Новиков 292 15.02.12 21:08 Сейчас в теме
Грамотный подход. Плюсую.
11. AlexBar 51 15.02.12 21:30 Сейчас в теме
В совокупности с механизмом переопределения событий http://kb.mista.ru/article.php?id=268, который я активно использую, можно достичь гораздо больших результатов и в итоге обновлять формы в автоматическом режиме. С помощью механизма авторазмещения элементов расставлять их в форме, с помощью переопределения событий подвешивать обработчики событий. Если в модуле формы ввести универсальную процедуру обработки команд, с передачей в общий модуль формы и имени команды, то можно с легкостью на форме и кнопки располагать.
12. Veduin 16.02.12 04:48 Сейчас в теме
Хорошо так сказано!
Наверно пора переходить с 1С на SUP!!!
13. adhocprog 1139 16.02.12 09:50 Сейчас в теме
Круто! Спасибо! Очень полезная инфа.
14. cerg110 3 16.02.12 09:57 Сейчас в теме
спасибо за интересную статью.
15. kievanton 16.02.12 22:24 Сейчас в теме
Давно думал о таком подходе. Особенно во время обновлений =)
Спасибо!
16. BalVlad 19.02.12 15:01 Сейчас в теме
Спасибо за статью. Буду пробовать. Плюс.
17. tulaka 28.02.12 11:24 Сейчас в теме
18. electronik 26.03.12 18:27 Сейчас в теме
19. electronik 26.03.12 18:27 Сейчас в теме
20. kokscharov 48 08.06.12 11:45 Сейчас в теме
при добавление табличной части, в которой есть колонка с типом булево. Ошибка. Проверка только на заполненость данных: ЗначениеЗаполнено(Элемент.Данные). Нуна еще ЗначениеЗаполнено(Элемент.ДанныеФлажка)
21. AlexBar 51 10.06.12 13:51 Сейчас в теме
(20) kokscharov,
Спасибо за замечание. Добавление табличной части целиком практически не использовал, поэтому и не нарвался на эту ошибку. В любом случаем огромное спасибо за замечание.
22. alekseies 12.07.12 14:06 Сейчас в теме
В совокупности с механизмом переопределения событий http://kb.mista.ru/article.php?id=268, который я активно использую, можно достичь гораздо больших результатов и в итоге обновлять формы в автоматическом режиме. С помощью механизма авторазмещения элементов расставлять их в форме, с помощью переопределения событий подвешивать обработчики событий. Если в модуле формы ввести универсальную процедуру обработки команд, с передачей в общий модуль формы и имени команды, то можно с легкостью на форме и кнопки располагать.

Анологично используем ...
23. briz 71 31.07.12 13:12 Сейчас в теме
Если на форме нет ни одной панели с заклдаками , то форму всё-таки придеться изменить. При добавлении 2-х реквизитов с типом Дата в группу (в одной строке) вылетает ошибка : строка 809: Деление на 0
ШиринаПоля = (ШиринаПанели-ОбщаяШирина)/КоличествоПолей;
24. AlexBar 51 31.07.12 21:55 Сейчас в теме
(23) briz,
>Если на форме нет ни одной панели с заклдаками , то форму всё-таки придеться изменить.
Совершенно верно, такое ограничение есть. Механизм не изменяет форму целиком, а только использует имеющиеся элементы формы. Как я писал ранее, каждый волен развивать механизм в любом направлении, если ему понравилась сама идея.
>При добавлении 2-х реквизитов с типом Дата в группу (в одной строке) вылетает ошибка : строка 809: Деление на 0
Это конечно неприятность. Проанализирую, исправлю.

Коллеги, если у кого-то есть предложения по развитию данного механизма или имеются уже собственные доработки, не стесняйтесь делиться, включим их в общий функционал.
25. galinka1c8 25.09.12 12:53 Сейчас в теме
Замечательный подход. Трудовых затрат в принципе не очень много, а результат(скорость и качество обновления) себя оправдывают. А размещать удобно в общий модуль работасдиалогами в процедуру УстановитьЗаголовокФормыДокумента.
26. Sabfir 08.08.13 16:02 Сейчас в теме
Почему именно так пошли?
Почему не создать регистр сведений и не хранить всю эту информацию в нем, а не в комментариях.
Добавить обработку, которая поможет безошибочно заполнить Р.Св.
27. AlexBar 51 10.08.13 00:23 Сейчас в теме
(26)Вы вправе реализовать так, как Вам удобнее. Последняя версия используемого мною механизма работает через макеты. Если у объекта есть соответствующий макет, то идет построение элементов (конкретных), в противном случае ничего не обрабатывается. Это несколько ускорило работу механизма.
Оставьте свое сообщение