Цель управления доступом в форме - централизованно определить:
видимость, доступность и работу в режиме «только просмотр» для элементов формы и колонок табличных полей,
видимость для страниц панелей,
разрешение настраивать видимость для колонок табличного поля.
Управление сосредоточено в процедуре УстановитьДоступ().
Её необходимо вызывать из тех мест, где происходит изменение значений, на основании которых определяется доступ.
Сама процедура УстановитьДоступ() не занимается определением доступа, а на основании списков, полученных из функций
ПолучитьСписокУправлениеВидимостью(),
ПолучитьСписокУправлениеДоступностью(),
ПолучитьСписокУправлениеТолькоПросмотр(),
ПолучитьСписокДоступаКУправлениюВидимостью()
устанавливает необходимые значения видимости, доступности, свойства «ТолькоПросмотр» и разрешения настраивать видимость колонок в форме.
Содержание процедуры УстановитьДоступ() является эталонным, его требуется только перенести без изменений.
Работа каждой из функций строится по одинаковому принципу. Рассмотрим на примере ПолучитьСписокУправлениеВидимостью().
В качестве исходных данных для этой функции выступают реквизиты (свойства) объекта и формы, а также значение в локальных переменных или экспортных переменных модуля приложения.
В случае, когда в качестве исходных данных требуется результат работы каких-либо процедур/функций, вычислять их в процедуре ПолучитьСписокУправлениеВидимостью() категорически воспрещается.
Все требуемые результаты должны быть подготовлены заранее и храниться в переменных либо реквизитах формы (объекта) при начале работы или изменении данных для расчета этих результатов.
ЭтоКомиссия = (ДоговорКонтрагента.ВидДоговора = Перечисления.ВидыДоговоровКонтрагентов.СКомиссионером); ВидимостьСчетов = НЕ ЭтоКомиссия; |
На основании исходных данных рассчитываются флаги видимости:
После вычисления флагов видимости заполняется список видимости. Для этого при проектировании формы определяем список элементов формы, которые будут изменять видимость. Каждый элемент списка в представлении содержит имя одного из этих элементов формы, а в качестве значения – значение видимости – как результат логического выражения из флагов видимости.
Например , в нашей форме видимость будут менять НадписьСчетРасчетовУСН, НадписьСчетАвансовУСН, СчетУчетаРасчетовСКонтрагентомУСН и СчетУчетаРасчетовПоАвансамУСН.
СписокУправлениеВидимостью.Добавить(ОтражатьВНалоговомУчете И ЭтоРасходыУСН, "НадписьСчетРасчетовУСН"); СписокУправлениеВидимостью.Добавить(ОтражатьВНалоговомУчете И ЭтоРасходыУСН, "НадписьСчетАвансовУСН"); СписокУправлениеВидимостью.Добавить(ОтражатьВНалоговомУчете И ЭтоРасходыУСН, "СчетУчетаРасчетовСКонтрагентомУСН"); СписокУправлениеВидимостью.Добавить(ОтражатьВНалоговомУчете И ЭтоРасходыУСН, "СчетУчетаРасчетовПоАвансамУСН"); |
Устанавливаем в список 4 элемента (по числу элементов формы с управляемой видимостью):
После добавления в список всех необходимых элементов (каждый раз могут меняться только значения у элементов, но ни их количество или представления) список возвращается из функции в вызывающий участок кода.
Аналогично строятся и остальные функции.
Следует обратить внимание, что в процедурах заполнения (очистки) необходимо учесть состояние видимости заполняемых (очищаемых) элементов в форме. Невидимые элементы изменяют свое значение без согласия со стороны пользователя. Вопросы и уточнения для данных элементов формы со стороны программы не задаются.
Дата: 2018-11-18, просмотров: 291.