Имя: Пароль:
1C
1С v8
РегистрСведенийСписок для управляемой формы
0 ghostrid3r
 
26.06.14
00:47
Доброго времени суток. Подскажите плз. Есть обычная форма списка регистра сведений. Данными для нее служит регистр сведений список. Форма имеет некоторые процедуры. Вот одна из них.


    Для Каждого Элемент Из РегистрСведенийСписок.Отбор Цикл
        
        Если НЕ Элемент.Использование Тогда
            Продолжить;
        КонецЕсли;    
        
        Параметр = Элемент.Имя;
        
        ВидСравн = Элемент.ВидСравнения;
        
        //Режимы сравнения
        // 0  обычный
        // 1  список
        // 2  интервал
        РежимСравнения = 0;
        // Режим 0
        Если ВидСравн = ВидСравнения.Равно Тогда
            ВидСравненияТекст = "=";
        ИначеЕсли ВидСравн = ВидСравнения.НеРавно Тогда
            ВидСравненияТекст = "<>";
        ИначеЕсли ВидСравн = ВидСравнения.Больше Тогда
            ВидСравненияТекст = ">";
        ИначеЕсли ВидСравн = ВидСравнения.БольшеИлиРавно Тогда
            ВидСравненияТекст = ">=";
        ИначеЕсли ВидСравн = ВидСравнения.Меньше Тогда
            ВидСравненияТекст = "<";
        ИначеЕсли ВидСравн = ВидСравнения.МеньшеИлиРавно Тогда
            ВидСравненияТекст = "<=";            
        // Режим 1 Список
        ИначеЕсли ВидСравн = ВидСравнения.ВСписке Тогда
            ВидСравненияТекст = "В";
            РежимСравнения = 1;
        ИначеЕсли ВидСравн = ВидСравнения.НеВСписке Тогда
            ВидСравненияТекст = "НЕ В";
            РежимСравнения = 1;
        ИначеЕсли ВидСравн = ВидСравнения.ВСпискеПоИерархии
            ИЛИ ВидСравн = ВидСравнения.ВИерархии Тогда
            ВидСравненияТекст = "В ИЕРАРХИИ";
            РежимСравнения = 1;
        ИначеЕсли ВидСравн = ВидСравнения.НеВСпискеПоИерархии
            ИЛИ ВидСравн = ВидСравнения.НеВИерархии Тогда
            ВидСравненияТекст = "НЕ В ИЕРАРХИИ";
            РежимСравнения = 1;
        // Режим 2 Интервал
        ИначеЕсли ВидСравн = ВидСравнения.Интервал Тогда
            ВидСравненияТекстС = ">";
            ВидСравненияТекстПо = "<";
            РежимСравнения = 2;
        ИначеЕсли ВидСравн = ВидСравнения.ИнтервалВключаяГраницы Тогда
            ВидСравненияТекстС = ">=";
            ВидСравненияТекстПо = "<=";
            РежимСравнения = 2;
        ИначеЕсли ВидСравн = ВидСравнения.ИнтервалВключаяНачало Тогда
            ВидСравненияТекстС = ">=";
            ВидСравненияТекстПо = "<";
            РежимСравнения = 2;
        ИначеЕсли ВидСравн = ВидСравнения.ИнтервалВключаяОкончание Тогда
            ВидСравненияТекстС = ">";
            ВидСравненияТекстПо = "<=";
            РежимСравнения = 2;
        Иначе    
            Сообщить("Не установлен отбор: " + ВидСравн, СтатусСообщения);
            Продолжить;
        КонецЕсли;
        
        Если РежимСравнения = 0 Тогда
            УсловиеОтбора = УсловиеОтбора + " И Данные." + Параметр + " " + ВидСравненияТекст + " &" + Параметр;
        ИначеЕсли РежимСравнения = 1 Тогда
            УсловиеОтбора = УсловиеОтбора + " И Данные." + Параметр + " " + ВидСравненияТекст + "(&" + Параметр + ")";
        ИначеЕсли РежимСравнения = 2 Тогда
            УсловиеОтбора = УсловиеОтбора + " И Данные." + Параметр + " " + ВидСравненияТекстС + " &" + Параметр + "С";
            УсловиеОтбора = УсловиеОтбора + " И Данные." + Параметр + " " + ВидСравненияТекстПо + " &" + Параметр + "По";
            Запрос.УстановитьПараметр(Параметр + "С", Элемент.ЗначениеС);
            Запрос.УстановитьПараметр(Параметр + "По", Элемент.ЗначениеПо);
        КонецЕсли;
                
        Запрос.УстановитьПараметр(Параметр, Элемент.Значение);
        
    КонецЦикла;



Как для управляемой формы получить такие отборы, если в управляемой формы в качестве данных динамический список
1 Адский плющ
 
26.06.14
00:58
Наркоманы. Захотели получить строки из списка?
СКД копай. Глубина копания зависит от версии 1Ски. Чем новее, тем меньше гемора. Скоро вот вообще можно будет двумя строками: http://v8.1c.ru/o7/201404list/index.htm