Имя: Пароль:
1C
1С v8
Отбор в списке.
0 antihacker
 
29.06.18
09:08
Всем привет !

Вот работающий отбор.

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)

        СтандартнаяОбработка = Ложь;
        Список.Отбор.Элементы.Очистить();
        
        //рррр = Параметры.АБП;
        Если Параметры.Свойство("Программа") Тогда
            
            ЭтотОбъект.вхПрограмма = Параметры.Программа;
            
            ЭлементОтбора = Список.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
            ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Программа");
            ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
            ЭлементОтбора.Использование = Истина;
            ЭлементОтбора.ПравоеЗначение =Параметры.Программа;
        КонецЕсли;
        
        Если Параметры.Свойство("АБП") Тогда
            
            ЭтотОбъект.вхАБП = Параметры.АБП;
            
            ЭлементОтбора = Список.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
            ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("АБП");
            ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
            ЭлементОтбора.Использование = Истина;
            ЭлементОтбора.ПравоеЗначение = Параметры.АБП;

        КонецЕсли;

КонецПроцедуры

Но в справочнике есть предопределенный элемент кодом "000". И он отпадает. Но этот элемент всегда должен быть доступен. Есть какой нить вариант по проще кроме произвольного запроса в отборе ?
1 sechs
 
29.06.18
09:15
Добавить в отбор группу ИЛИ
2 antihacker
 
29.06.18
09:24
Это как ?  Че то не понял.
3 sechs
 
29.06.18
09:36
Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"))

Дальше сам.
4 antihacker
 
29.06.18
09:49
Вроде так

        СтандартнаяОбработка = Ложь;
        Список.Отбор.Элементы.Очистить();
        
        //рррр = Параметры.АБП;
        Если Параметры.Свойство("Программа") Тогда
            
            ЭтотОбъект.вхПрограмма = Параметры.Программа;
            
            ЭлементОтбора = Список.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
            ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Программа");
            ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.ВСписке;
            ЭлементОтбора.Использование = Истина;
            ЭлементОтбора.ПравоеЗначение =Параметры.Программа;
        КонецЕсли;
        
        Если Параметры.Свойство("АБП") Тогда
            
            ЭтотОбъект.вхАБП = Параметры.АБП;
            
            ЭлементОтбора = Список.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
            ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("АБП");
            ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.ВСписке;
            ЭлементОтбора.Использование = Истина;
            ЭлементОтбора.ПравоеЗначение = Параметры.АБП;

        КонецЕсли;

ГруппаОтбора = Список.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаОтбора.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИли;

//далее добавляем первое условие отбора
//ЭлементОтбора = Список.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбора = ГруппаОтбора.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Код");
ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ЭлементОтбора.Использование = Истина;
ЭлементОтбора.ПравоеЗначение = "000";

Не работает. Если убрать отборы по "АБП" и "Программа", то работает как то не понятно. Показывает "000", но остальные нету.
5 aleks_default
 
29.06.18
09:54
СНАЧАЛА добавить группу а потом В НЕЕ добавить свои отборы
6 aleks_default
 
29.06.18
09:55
Ты что с Урала?
7 antihacker
 
29.06.18
10:09
ГруппаОтбора = Список.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаОтбора.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИЛИ;

        
        //рррр = Параметры.АБП;
        Если Параметры.Свойство("Программа") Тогда
            
            ЭтотОбъект.вхПрограмма = Параметры.Программа;
            
            ГруппаОтбора = Список.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
            ГруппаОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Программа");
            ГруппаОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
            ГруппаОтбора.Использование = Истина;
            ГруппаОтбора.ПравоеЗначение =Параметры.Программа;
        КонецЕсли;
        
        Если Параметры.Свойство("АБП") Тогда
            
            ЭтотОбъект.вхАБП = Параметры.АБП;
            
            ГруппаОтбора = Список.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
            ГруппаОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("АБП");
            ГруппаОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
            ГруппаОтбора.Использование = Истина;
            ГруппаОтбора.ПравоеЗначение = Параметры.АБП;

        КонецЕсли;


            ГруппаОтбора = Список.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
            ГруппаОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Код");
            ГруппаОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
            ГруппаОтбора.Использование = Истина;
            ГруппаОтбора.ПравоеЗначение = "000";
8 antihacker
 
29.06.18
10:10
Опять не работает.
  aleks_default, С Юга.
9 aleks_default
 
29.06.18
10:11
(8) Читай еще раз внимательно вторую часть предложения в (5)
10 antihacker
 
29.06.18
10:13
Все разобрался.
        СтандартнаяОбработка = Ложь;
        Список.Отбор.Элементы.Очистить();  
        
        ГруппаОтбора = Список.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
        ГруппаОтбора.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИЛИ;

        Если Параметры.Свойство("Программа") Тогда
            
            ЭтотОбъект.вхПрограмма = Параметры.Программа;
            
            ЭлементОтбора = ГруппаОтбора.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
            ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Программа");
            ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
            ЭлементОтбора.Использование = Истина;
            ЭлементОтбора.ПравоеЗначение =Параметры.Программа;
        КонецЕсли;
        
        Если Параметры.Свойство("АБП") Тогда
            
            ЭтотОбъект.вхАБП = Параметры.АБП;
            
            ЭлементОтбора = ГруппаОтбора.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
            ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("АБП");
            ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
            ЭлементОтбора.Использование = Истина;
            ЭлементОтбора.ПравоеЗначение = Параметры.АБП;

        КонецЕсли;


            ЭлементОтбора = ГруппаОтбора.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
            ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Код");
            ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
            ЭлементОтбора.Использование = Истина;
            ЭлементОтбора.ПравоеЗначение = "000";
11 antihacker
 
29.06.18
10:14
Спасибо тебе большущий !
12 aleks_default
 
29.06.18
10:15
Давай не тупи больше, земеля
13 antihacker
 
29.06.18
10:17
ОК !