Вход | Регистрация

1С:Предприятие :: 1С:Предприятие 8 общая

Отбор на форме списком значений

Отбор на форме списком значений
Я
   vanyshan
 
11.10.18 - 11:55
Добрый день! Делаю отбор в событии НачалоВыбора:

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

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

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Рекламное место пустует