Динамическое управление свойствами реквизитов управляемых форм






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

Создаем элемент справочника "Настройки реквизитов форм по ролям и пользователям", выбираем объект и форму:


 

Выбираем роль и/или пользователей, для которых будут применяться изменения формы:

 

Указываем нужные изменения реквизитов:

 

Сохраняем и открываем справочник под указанным пользователем:

 

Изменены заголовки и доступность реквизитов.

Ограничения:

Расширение тестировалось в конфигурациях УТ (11.4.6)  и БП Проф (3.0.66), подойдет и к другим типовым конфигурациям и версиям, с незначительными изменениями, если версия платформы и режим совместимости не ниже 8.3.12. Для остальных случаев можно не использовать расширение, а включить объекты из него в основную конфигурацию.

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

Решение не универсальное на 100%. Например есть динамически изменяющиеся элементы форм в процессе работы формы или есть формы не адаптированные для АвтоТеста и вызывающие исключение если им не передать нужные параметры открытия. Все это решается путем внесения изменений в работу формы через расширение.

ВНИМАНИЕ: Чтобы расширение работало, необходимо при установке убрать галочку с "Безопасного режима", иначе не срабатывает инъекция в общий модуль.

UPD: Добавлен экспериментальный вариант расширения без использования вызова из модуля форм или других общих модулей. Вариант 2 в списке файлов.

5 Comments

  1. Vlad_2008

    Весело.

    Я, обычно, в управляемых формах пользуюсь кнопкой «Еще» — «Изменить форму» и меняю название реквизита как мне угодно.

    Без расширений … без кода … без лишних тормозов при открытии … а если пользователь отключил видимость поля, то зачем молотит программа … а если пользователь выведет на форму поле через механизм характеристик — кто его переименует … а если функциональные опции … а если еще одно расширение … а если обновление конфигурации …

    Не, ну понято, что «не 100%-ая универсальность».

    Reply
  2. b66

    (1) Изменит форму это конечно хорошо, но у меня прямо сейчас проблема на 8.3.15 у разных пользователей в разное время слетают те самые настройки, которые они вносят через изменить форму. Приходится выгонять их из базы и копировать настройки с шаблонного пользователя. Каждый день. По 2-3 раза.

    Reply
  3. Vlad_2008

    Да, эти настройки — вечная проблема! У меня на УТ 11, после какого-то обновления релиза, при попытке «Изменить форму» система падала намертво. Чинилось возвратом к исходным и повторной настройкой нужных полей заново.

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

    М-да, скоро от «управляемости» в управляемых формах ничего не останется … жаль ((.

    Я очень часто перемещаю колонки в списках и поля на формах объектов (чтоб были, но не мешали).

    Кстати да, я уже и сам частенько склоняюсь к программному выводу полей на форму. Вот недавно выводил характеристику, а она булево. Так вот, если выводить через «Изменить форму», то получаем уродскую колонку заполненную «Ложь» или «Истина». А мне «Ложь» не нужна, она мешает, я хочу видеть флажок! Можно конечно форматированием задать представления, но это как-то не по феньшую )). Пришлось выводить программно.

    Reply
  4. b66

    Вариант 2 — Без использования вызова из модуля форм, я так понимаю, реализован через обработчик ожидания? У меня при таком варианте работы форма не успевает измениться перед визуальным открытием, т.е. реквизиты меняются прямо на глазах пользователя. Удалось решить эту проблему?

    Reply
  5. shalex5

    (4) Да, через обработчик ожидания, Нет не удалось, даже не думал об этом. Можно попробовать уменьшить период сканирования, там полсекунды стоит, но, скорее всего все равно будет видно, система занята когда открывает форму и обработчики не работают в это время.

    Reply

Leave a Comment

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