Имя: Пароль:
1C
1С v8
Отбор на форме списком значений
0 vanyshan
 
11.10.18
11:55
Добрый день! Делаю отбор в событии НачалоВыбора:

СтандартнаяОбработка = Ложь;
    
    ФормаВыбора = Справочники.Номенклатура.ПолучитьФормуВыбора(,Элемент);
    Отбор = ФормаВыбора.СправочникСписок.Отбор.Ссылка;
    Отбор.Использование = Истина;
    Отбор.ВидСравнения = ВидСравнения.ВСпискеПоИерархии;
    
    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    |    УсловияПоставокПоДоговорамКонтрагентовПоНоменклатуреСрезПоследних.Номенклатура,
    |    УсловияПоставокПоДоговорамКонтрагентовПоНоменклатуреСрезПоследних.Цена
    |ИЗ
    |    РегистрСведений.УсловияПоставокПоДоговорамКонтрагентовПоНоменклатуре.СрезПоследних(
    |            &Период,
    |            ДоговорКонтрагента = &ДоговорКонтрагента
    |                И Грузополучатель = &Грузополучатель) КАК УсловияПоставокПоДоговорамКонтрагентовПоНоменклатуреСрезПоследних
    |ГДЕ
    |    УсловияПоставокПоДоговорамКонтрагентовПоНоменклатуреСрезПоследних.Цена <> 0";
    
    Запрос.УстановитьПараметр("Период", Дата);
    Запрос.УстановитьПараметр("ДоговорКонтрагента", ДоговорКонтрагента);
    Запрос.УстановитьПараметр("Грузополучатель", Грузополучатель);
    
    Результат = Запрос.Выполнить();
    
    СписокЭлементов = Новый СписокЗначений;
    
    Если Не Результат.Пустой() Тогда
        СписокЭлементов.ЗагрузитьЗначения(Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Номенклатура"));
    Иначе
        СписокЭлементов.Добавить(Справочники.Номенклатура.ПустаяСсылка());
    КонецЕсли;
        
    Отбор.Значение = СписокЭлементов;
    ФормаВыбора.ЭлементыФормы.СправочникСписок.ИерархическийПросмотр = Ложь;
    ФормаВыбора.НачальноеЗначениеВыбора = Элемент.Значение;
    ФормаВыбора.Открыть();

Если запрос не пустой, то все работает и форма заполняется списком значений из запроса, в противном случае если не делать проверку и не присваивать списку значений пустое значение, то при открытии формы появляется куча ненужных позиций и отбор вообще не работает. Нужно ли в моем случае проверять запрос на пустоту и правильно ли я это делаю? Обычное приложение.
1 aleks_default
 
11.10.18
12:04
А как должен работать отбор при пустом списке? Может правильнее сначала делать запрос а потом в зависимости непустоты запроса накладывать отбор?
2 VenSaitto
 
11.10.18
13:37
|    УсловияПоставокПоДоговорамКонтрагентовПоНоменклатуреСрезПоследних.Цена
- Выбор не используемых полей