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