8.х фильтр (отбор) на основе списка значений в номенклатуре

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем S1971, 16 окт 2010.

  1. TopicStarter Overlay
    S1971
    Offline

    S1971

    Регистрация:
    31 июл 2010
    Сообщения:
    24
    Симпатии:
    0
    Баллы:
    1
    Подскажите как отобрать по фильтру значения в номенклатуре по известному списку кодов номенклатуры.

    Форма = Справочники.Номенклатура.ПолучитьФормуВыбора(, Элемент);
    Форма.ДокументСписок.Отбор.Код.ВидСравнения = ВидСравнения.ВСписке;
    ....
    как дальше заполнить список отбора?
    ....
    Форма.ДокументСписок.Отбор.Код.Использование = Истина;
    ...
    как отключить иерархический просмотр в форме?
    ...
    Форма.Открыть();
  2. DrBlack
    Offline

    DrBlack Опытный в 1С

    Регистрация:
    8 янв 2010
    Сообщения:
    79
    Симпатии:
    1
    Баллы:
    29
    Форма.ДокументСписок.Отбор.Код.Значение = <ИскомыйКод>;
    Справка рулит:
    Код:
    Отбор = ОтчетОстатки.ПостроительОтчета.Отбор;
    Если Отбор.Найти("Номенклатура") = Неопределено Тогда
    Отбор.Добавить("Номенклатура");
    КонецЕсли;
    Отбор["Номенклатура"].Использование = Истина;
    Отбор["Номенклатура"].Значение = Номенклатура;
    Отбор["Номенклатура"].ВидСравнения = 
    ?(Номенклатура.ЭтоГруппа, 
    ВидСравнения.ВСпискеПоИерархии, 
    ВидСравнения.Равно);
    
  3. TopicStarter Overlay
    S1971
    Offline

    S1971

    Регистрация:
    31 июл 2010
    Сообщения:
    24
    Симпатии:
    0
    Баллы:
    1
    Форма.ДокументСписок.Отбор.Код.Значение = <ИскомыйКод>;

    Эта строчка работает когда необходимо выбрать по одному критерию (коду), а если их несколько , то в фильтре формы предусмотрен отбор "по списку" значений. как до него добраться?

    толком не понял к чему этот код, "Справка рулит" - Это отбор из отчета остатки по одной заданной номеналатуре ? куда потом девается выбранное?
  4. sergey
    Offline

    sergey Курильщик

    Регистрация:
    13 апр 2006
    Сообщения:
    365
    Симпатии:
    0
    Баллы:
    26
    Нарисуйте по аналогии:
    Код:
    СправочникСписок.Отбор.Код.ВидСравнения = ВидСравнения.ВСписке;
    СправочникСписок.Отбор.Код.Значение = <СписокДляОтбора>;
    СправочникСписок.Отбор.Код.Использование = Истина;
    
    
    а в Вашем случае:
    Код:
    ЭтаФорма.ДокументСписок.Отбор.Код.ВидСравнения = ВидСравнения.ВСписке;
    ЭтаФорма.ДокументСписок.Отбор.Код.Значение = <СписокИскомыхКодов>;
    ЭтаФорма.ДокументСписок.Отбор.Код.Использование = Истина;
    
    
  5. TopicStarter Overlay
    S1971
    Offline

    S1971

    Регистрация:
    31 июл 2010
    Сообщения:
    24
    Симпатии:
    0
    Баллы:
    1
    Как заполнить эти списки если есть значения самих кодов (00000000123, 00000000126, ......) ?

    СписокИскомыхКодов - это названия списка для отбора в форме фильтра номенклатуры,
    как найти к нему путь?
  6. sergey
    Offline

    sergey Курильщик

    Регистрация:
    13 апр 2006
    Сообщения:
    365
    Симпатии:
    0
    Баллы:
    26
    У Вас ДО выполнения отбора:
    Код:
    СписокИскомыхКодов=Новый СписокЗначений;
    СписокИскомыхКодов.Добавить("00000000123");
    СписокИскомыхКодов.Добавить("00000000126");
    // ... и так сколько нужно (или то же самое в цикле)
    
    
    и далее
    Код:
    ЭтаФорма.ДокументСписок.Отбор.Код.ВидСравнения = ВидСравнения.ВСписке;
    ЭтаФорма.ДокументСписок.Отбор.Код.Значение = СписокИскомыхКодов;
    ЭтаФорма.ДокументСписок.Отбор.Код.Использование = Истина;
    
    
  7. TopicStarter Overlay
    S1971
    Offline

    S1971

    Регистрация:
    31 июл 2010
    Сообщения:
    24
    Симпатии:
    0
    Баллы:
    1
    Все понял Спасибо за подсказку!!!!!
  8. sergey
    Offline

    sergey Курильщик

    Регистрация:
    13 апр 2006
    Сообщения:
    365
    Симпатии:
    0
    Баллы:
    26
    Мне кажется вы не совсем разобрались в использовании списков.
    В Вашем варианте скорее так:
    Код:
    // Запрос - Ваш запрос для отбора по необходимым кодам
    Выборка = Запрос.Выполнить().Выбрать();
    СписокДляОтбора=Новый Список;
    // Составляем список для отбора
    Пока Выборка.Следующий() Цикл
    СписокДляОтбора.Добавить(Выборка.Код);
    КонецЦикла; 
    Форма = Справочники.Номенклатура.ПолучитьФормуВыбора(, Элемент);
    СправочникСписок.Отбор.Код.ВидСравнения = ВидСравнения.ВСписке;
    СправочникСписок.Отбор.Код.Значение = СписокДляОтбора;
    СправочникСписок.Отбор.Код.Использование = Истина;
    Форма.Открыть();
    
    
    и, собственно, все
  9. Itsys
    Offline

    Itsys Опытный в 1С

    Регистрация:
    3 янв 2010
    Сообщения:
    1.394
    Симпатии:
    0
    Баллы:
    26
    Отбор в справочнике на основании списка кодов не самое лучшее решение, покажите запрос, в котором выбираются коды.

Поделиться этой страницей