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

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
|    УсловияПоставокПоДоговорамКонтрагентовПоНоменклатуреСрезПоследних.Цена
- Выбор не используемых полей

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