Открыть форму выбора со сложным отбором

1. rozenckova 01.04.21 08:53 Сейчас в теме
Доброго всем дня.
Есть задача. При выборе реквизита (Событие НачалоВыбора) открывать форму выбора с отбором. Отбор сложный (есть условие не в списке, поэтому через параметры выбора данный вопрос решить не получается)
Нашла в интернете такой способ

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


Код отрабатывает, фиксированные настройки заполняются, появляются в открываемой форме, но на саму форму эти отборы не повлияли. Какие еще настройки необходимо заполнить, чтобы форма открылась с отбором? (форма выбора содержит динамический список)
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. nomad_irk 81 01.04.21 08:58 Сейчас в теме
(1)Отладка открываемой формы в ПриОткрытии что говорит по поводу ваших установленных отборов: они в ней установлены и включены? Запросто может быть, что происходит изменение запроса динамического списка где-то в дебрях "ПриСозданииНаСервере"
3. rozenckova 01.04.21 09:09 Сейчас в теме
(2)у формы заполнились только фиксированные настройки (там есть тот отбор, который я задала), в отборе формы и в отборе динамического списка пусто. Вот какие из настроек надо заполнить, чтобы отбор точно сработал?
Прикрепленные файлы:
4. nomad_irk 81 01.04.21 09:20 Сейчас в теме
(3)Не сразу заметил, а что у вас в СтруктураОтбора.МассивДоговоров: Массив или все же СписокЗначений?

Судя по последнему скриншоту, массив.
7. rozenckova 01.04.21 09:22 Сейчас в теме
(4)Передается массив. Сейчас попробую заменить на список значений.
5. SlavaKron 01.04.21 09:21 Сейчас в теме
Отборы можно установить и после получения формы на клиенте:
// получаете форму
Форма = ПолучитьФорму(...);

// устанавливаете отборы
Форма.Список...

//открывете форму
Форма.Открыть()
6. TimurD 6 01.04.21 09:22 Сейчас в теме
Во первых в качестве коллекции в отбор нужно передавать СписокЗначений. Это такая особенность. Во вторых, на форме выбора, скорее всего выведены обычные реквизиты формы, значения которых устанавливается в отборе. Если так, то вряд ли можно будет повлиять на эти отборы. Если форма обычная (без всяких специфических полей и пр.) тогда не фиксированные настройки передавайте, а Пользовательские. Они по умолчанию должны вывестись, как если бы пользователь сам делал отборы.
8. rozenckova 02.04.21 09:08 Сейчас в теме
В ходе эксперимента выяснила, что фиксированные настройки из первого варианта отрабатывают. Причина была в том, что у меня на форме в пользовательском режиме не было выведено поле, по которому шел отбор. В динамическом списке оно было, поэтому подумала, что отбор должен сработать, но нет. Как только я сделала, чтобы отбор шел по партнеру(оно было на форме), а не по контрагенту(этого поля не было), все заработало по примеру кода из первого сообщения.
Оставьте свое сообщение

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