Имя: Пароль:
1C
1С v8
Как программно в динамическом списке сгруппировать условия отбора?
0 fierylions
 
20.11.13
17:13
Вот пример как делается программно отбор в динамическом списке:

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


Мне нужно программно сгруппировать несколько условий. Например ОтказОт Задачи = Ложь или Выполнена = Ложь;

В пользовательском режиме это возможно сделать а программно не пойму как... Подскажите коллеги...
1 acsent
 
20.11.13
17:13
Добавить(Тип("Группа...
2 fierylions
 
20.11.13
17:14
(1) а можете полностью пример привести пожалуйста.
3 zladenuw
 
20.11.13
17:24
да сделай ручками в ДС. потом в отладчике посмотри и сделай так же кодом.
4 Noob_Of_1C
 
20.11.13
17:29
Объект ГруппаЭлементовОтбораКомпоновкиДанных.
соответственно у объектов ЭлементОтбораКомпоновкиДанных в свойство Родитель указываешь группу
5 fierylions
 
20.11.13
17:39
//Отбор в динамическом списке дс
    ГруппаОтбора = ТекущиеЗаявкиТикеты.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
    ГруппаОтбора.Использование  = Истина;
    ГруппаОтбора.ТипГруппы  = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИли;

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

Если делаю напрямую ЭлементОтбора.Родитель = ГруппаОтбора;
Выдает ошибку.
Что не так делаю???
6 acsent
 
20.11.13
17:40
ГруппаОтбора.Элементы.Добавить
7 Noob_Of_1C
 
20.11.13
17:41
тьфу наврал, элементы создаешь уже так:

ГруппаОтбора.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"))
8 fierylions
 
20.11.13
17:51
Кому интересно получилось так:
//Отбор
    //Отбор в динамическом списке дс c группой условий
    ЭлементыОтбора = ТекущиеЗаявкиТикеты.Отбор.Элементы;
    ЭлементыОтбора.Очистить();
    Группа = ЭлементыОтбора.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
    Группа.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИли;
    //ДатаПостановки
    ЭлементОтбора = Группа.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
    НовыйПолеКомпоновкиДанных = Новый ПолеКомпоновкиДанных("ДатаПостановки");
    ЭлементОтбора.Использование  = Истина;
    ЭлементОтбора.ЛевоеЗначение  = НовыйПолеКомпоновкиДанных;
    ЭлементОтбора.ВидСравнения   = ВидСравненияКомпоновкиДанных.Больше;
    ЭлементОтбора.ПравоеЗначение = (НачалоДня(ТекущаяДата())-((3600*24)*7));;
    //Выполнить
    ЭлементОтбора = Группа.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
    НовыйПолеКомпоновкиДанных = Новый ПолеКомпоновкиДанных("Выполнена");
    ЭлементОтбора.Использование  = Истина;
    ЭлементОтбора.ЛевоеЗначение  = НовыйПолеКомпоновкиДанных;
    ЭлементОтбора.ВидСравнения   = ВидСравненияКомпоновкиДанных.Равно;
    ЭлементОтбора.ПравоеЗначение = Ложь;
    //ОтказОтЗадачи
    ЭлементОтбора = Группа.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
    НовыйПолеКомпоновкиДанных = Новый ПолеКомпоновкиДанных("ОтказОтЗадачи");
    ЭлементОтбора.Использование  = Ложь;
    ЭлементОтбора.ЛевоеЗначение  = НовыйПолеКомпоновкиДанных;
    ЭлементОтбора.ВидСравнения   = ВидСравненияКомпоновкиДанных.Равно;
    ЭлементОтбора.ПравоеЗначение = Ложь;
Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование. Фредерик Брукс-младший