Имя: Пароль:
1C
1С v8
Автоматическое ограничение доступных значений ВидСравнения
0 1Сергей
 
18.03.14
15:32
#8.2 #ОбычныеФормы #ЭлементФормы

На форме есть табличное поле (дерево значений), где задаются определенные отборы. И есть одна колонка, которая имеет тип Системное перечисление ВидСравнения. Можно ли как-то автоматические отфильтровать доступные значения выбора в данном поле, в зависимости от типа сравниваемого реквизита?

http://savepic.net/4913722.htm

Например, для типа Булево не имеет смысла виды сравнения "В Списке", "В группе", "Содержит" и т.п.


Перем ВидыСравненияВсе, ВидыСравненияБулево;

Процедура ПередОткрытием(Отказ, СтандартнаяОбработка)
    ...
    ВидыСравненияВсе = Новый СписокЗначений;
    
    ВидыСравненияБулево = Новый СписокЗначений;
    ВидыСравненияБулево.Добавить(ВидСравнения.Равно);
    ВидыСравненияБулево.Добавить(ВидСравнения.НеРавно);
    ...
КонецПроцедуры

Процедура ТабличноеПолеУсловияВидСравненияНачалоВыбора(Элемент, СтандартнаяОбработка)
    ТекущиеДанные = ЭлементыФормы.ТабличноеПолеУсловия.ТекущиеДанные;
    Если ТипЗнч(ТекущиеДанные.ПравоеЗначение) = Тип("Булево") Тогда
        Элемент.ДоступныеЗначения = ВидыСравненияБулево;
    Иначе
        Элемент.ДоступныеЗначения = ВидыСравненияВсе;
    КонецЕсли;
КонецПроцедуры


Сейчас делаю таким способом, но возможных типов великое множество, и поведение для каждого случая описать довольно трудоемко. Может, я чего-то не знаю? Может, это можно сделать автоматически?
1 shuhard
 
18.03.14
15:41
(0) или использовать СКД
либо позырить как это сделано в бюджетировании УПП
2 1Сергей
 
18.03.14
15:44
нет под рукой упыпырыща
3 shuhard
 
18.03.14
16:14
(2) сам знаешь где всегда есть полный cf
4 1Сергей
 
18.03.14
16:25
в общем, посмотрел в бухне Казахстана Групповая обработка справочников и документов. Там в качестве источника данных табличного поля используется замечательный объект - Отбор.

Мне не очень удобно его использовать
Пользователь не знает, чего он хочет, пока не увидит то, что он получил. Эдвард Йодан