Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
06 апр 2026, 02:51

Единый отбор по нескольким динамическим спискам

Автор Primitiv, 12 фев 2026, 20:58

0 Пользователей и 1 гость просматривают эту тему.

antoneus

А как задача перемещается из первого списка в другие?

Primitiv

antoneus, Я в настройках объекта динамического списка каждому из 5 списков заранее прописал отбор по конкректному статусу из перечисления "статусы выполнения задач"

Primitiv

Вот так. Я так понимаю, что из-за того что этот отбор сбивается ошибка и возникает?

antoneus

А, ну да. Тогда это надо из настроек убрать, после загрузки настроек прописывать этот отбор руками

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

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


antoneus

Вот) И эту установку отборов по статусам вытаскиваем в отдельную процедуру и вызываем ее ПриОткрытии, чтобы изначально у нас списки нормально заполнились.

Primitiv

antoneus, ААА. Чувствую себя австралопитеком на саммите ООН. Я сделал вот так и 1С сказал, что я не очень умный...

antoneus

В кавычки надо

ПредопределенноеЗначение("Перечисление.СтатусыВыполненияЗадач.ВПлане")

Primitiv

antoneus, теперь такого рода ошибка: {Задача.ТекущиеЗадачи.Форма.ФормаСписка.Форма(67,8)}: Переменная не определена (ОтборыСпискаКлиентСервер)
       <<?>>ОтборыСпискаКлиентСервер.УстановитьЭлементОтбораСписка(СписокВПлане, "Статус", ПредопределенноеЗначение("Перечисление.СтатусыВыполненияЗадач.ВПлане")); (Проверка: Тонкий клиент).

Я подозреваю что я вас не так понял до этого. Сейчас у меня 2 процедуры: Процедура СписокВПланеОтборПриИзменении(Элемент)
и Процедура УстановитьНастройкиСписков()

А вы говорили, что их нужно 3, еще добавить перед этими процедуру ПриОткрытии и вытянуть в нее строки вида  ОтборыСпискаКлиентСервер.УстановитьЭлементОтбораСписка(СписокВПлане, "Статус", ПредопределенноеЗначение("Перечисление.СтатусыВыполненияЗадач.ВПлане")) из процедуры СписокВПланеОтборПриИзменении(Элемент), куда я их записал?




Primitiv

Я понимаю, что вы скорее всего уже на блюде преподнесли решение моей задачи, но моего понимания не хватает, чтобы все кусочки мозайки сложить в 1 работающий код

antoneus

ОтборыСпискаКлиентСервер - это бсп-шный общий модуль. Видимо, в конфе его нет. Ну и фиг с ним.

Добавляем в модуль процедуру:

Процедура УстановитьЭлементОтбораСписка(Список, ИмяПоля, ПравоеЗначение, ВидСравнения = Неопределено, Представление = "")

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

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

Далее, отборы

&НаКлиенте
Процедура УстановитьОтборыСписков()

    УстановитьЭлементОтбораСписка(СписокВПлане, "Статус", ПредопределенноеЗначение("Перечисление.СтатусыВыполненияЗадач.ВПлане"));
    и остальные четыре списка

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

потом

&НаСервере
Процедура УстановитьНастройкиСписков()
   
    Настройки = СписокВПлане.КомпоновщикНастроек.ПолучитьНастройки();
    бла-бла-бла

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

&НаКлиенте
Процедура СписокВПланеОтборПриИзменении(Элемент)
   
    УстановитьНастройкиСписков()
    УстановитьОтборыСписков();
    //именно в таком порядке!

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

И напоследок, к событию формы ПриОткрытии прикручиваем

&НаКлиенте
Процедура ПриОткрытии(Отказ)

    УстановитьОтборыСписков();

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

Как-то так. Если процедура ПриОткрытии уже есть - просто добавляем в нее эту строчку.

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск