Отбор в динамическом списке

Внимание! Тема закрыта. Добавлять сообщения в закрытую тему запрещено.
1. Гость 31.01.12 15:41
Можно ли в динамическом списке программно установить отбор по нескольким полям (с использованием логических условий И, ИЛИ и т.д.)

Отбор = Список.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
Отбор.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Наименование");
Отбор.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
Отбор.Использование = Истина;
Отбор.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Недоступный;
ЭлементОтбора.ПравоеЗначение = "000000001";
По теме из базы знаний
Найденные решения
3. SPID 31.01.12 16:36 Сейчас в теме
(2) mkostya,
Это не для динамических списков вроде.

По вопросу:
Можно. Нужно создать группу условий вначале
ГруппаОтбор = Список.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаОтбор.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИЛИ;

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

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


Или что то типо того, писал по памяти.
user1484583; GonziK_KIV; Кениец; maxunov95; grfsd; myoker; fortran; NN2P; Igor Igorevich; marku; gglvov; Alexey55; +12 Ответить
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. mkostya 30 31.01.12 16:01 Сейчас в теме
Основная таблица для Список Справочник.Корпуса
Основная таблица для СписокПомещений Справочник.Помещения

В форме списка справочника корпуса
&НаКлиенте
Процедура СписокПриАктивизацииСтроки(Элемент)
Если Элементы.Список.ТекущаяСтрока <> Неопределено Тогда
УстановитьОтборУСпискаНаРавенство(СписокПомещений.Отбор,Новый ПолеКомпоновкиДанных("Владелец"),Элементы.Список.ТекущаяСтрока);
//или ОбщегоНазначенияКлиентСервер.УстановитьОтборУСпискаНаРавенство(СписокПомещений.Отбор,Новый ПолеКомпоновкиДанных("Владелец"),Элементы.Список.ТекущаяСтрока);
КонецЕсли;
КонецПроцедуры


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

ЭлементыОтбора = ОтборСКД.Элементы;
ЭлементОтбораДанных = Неопределено;

Для Каждого ЭлементОтбора Из ЭлементыОтбора Цикл
Если ЭлементОтбора.ЛевоеЗначение = ЛевоеЗначение Тогда
Если ЭлементОтбораДанных = Неопределено Тогда
ЭлементОтбораДанных = ЭлементОтбора;
Иначе
ЭлементОтбора.Использование = Ложь;
КонецЕсли;
КонецЕсли;
КонецЦикла;

Если ЭлементОтбораДанных = Неопределено Тогда
ЭлементОтбораДанных = ЭлементыОтбора.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбораДанных.ЛевоеЗначение = ЛевоеЗначение;
КонецЕсли;

ЭлементОтбораДанных.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ЭлементОтбораДанных.ПравоеЗначение = ПравоеЗначение;
ЭлементОтбораДанных.Использование = Истина;

КонецПроцедуры
trigor; black_doctor; tgr123; +3 Ответить
3. SPID 31.01.12 16:36 Сейчас в теме
(2) mkostya,
Это не для динамических списков вроде.

По вопросу:
Можно. Нужно создать группу условий вначале
ГруппаОтбор = Список.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаОтбор.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИЛИ;

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

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


Или что то типо того, писал по памяти.
user1484583; GonziK_KIV; Кениец; maxunov95; grfsd; myoker; fortran; NN2P; Igor Igorevich; marku; gglvov; Alexey55; +12 Ответить
4. valeriy-vm 32 15.08.12 11:03 Сейчас в теме
спс помогло
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот