0
1Сергей
18.03.14
✎
15:32
|
#8.2 #ОбычныеФормы #ЭлементФормы
На форме есть табличное поле (дерево значений), где задаются определенные отборы. И есть одна колонка, которая имеет тип Системное перечисление ВидСравнения. Можно ли как-то автоматические отфильтровать доступные значения выбора в данном поле, в зависимости от типа сравниваемого реквизита?
Например, для типа Булево не имеет смысла виды сравнения "В Списке", "В группе", "Содержит" и т.п.
Перем ВидыСравненияВсе, ВидыСравненияБулево;
Процедура ПередОткрытием(Отказ, СтандартнаяОбработка)
...
ВидыСравненияВсе = Новый СписокЗначений;
ВидыСравненияБулево = Новый СписокЗначений;
ВидыСравненияБулево.Добавить(ВидСравнения.Равно);
ВидыСравненияБулево.Добавить(ВидСравнения.НеРавно);
...
КонецПроцедуры
Процедура ТабличноеПолеУсловияВидСравненияНачалоВыбора(Элемент, СтандартнаяОбработка)
ТекущиеДанные = ЭлементыФормы.ТабличноеПолеУсловия.ТекущиеДанные;
Если ТипЗнч(ТекущиеДанные.ПравоеЗначение) = Тип("Булево") Тогда
Элемент.ДоступныеЗначения = ВидыСравненияБулево;
Иначе
Элемент.ДоступныеЗначения = ВидыСравненияВсе;
КонецЕсли;
КонецПроцедуры
Сейчас делаю таким способом, но возможных типов великое множество, и поведение для каждого случая описать довольно трудоемко. Может, я чего-то не знаю? Может, это можно сделать автоматически?
|
|