Имя: Пароль:
1C
 
Отбор справочника Номенклатура - скрытие групп
0 Tornadius
 
08.12.17
07:09
Доброго дня всем! Форумчане, может кто подскажет как при включенном отборе в форме выбора справочника "Номенклатура" скрывать пустые группы? Убрать из показа нужно те группы, в которых после отбора нет ни одного элемента. Можно конечно отключить иерархию просмотра, но это не выход. Отбор делаю стандартным образом. Он работает, но остается много пустых групп.
<Code+>
Процедура ВыбНоменклатураНачалоВыбора(Элемент, СтандартнаяОбработка)

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

    Запрос.УстановитьПараметр("ВыбОрганизация", ВыбОрганизация);
    Запрос.УстановитьПараметр("ВыбПодразделение", ВыбПодразделениеОрганизации);
    Запрос.УстановитьПараметр("ДатаНачала", НачалоДня(НачПериода));
    Запрос.УстановитьПараметр("ДатаКонца", КонецДня(КонПериода));
    Запрос.УстановитьПараметр("СписокКодовОпераций", СписокКодовОпераций);

    Выборка = Запрос.Выполнить().Выбрать();
    СписокВыпущеннойНоменклатуры = Новый СписокЗначений;
    
    Пока Выборка.Следующий() Цикл
        СписокВыпущеннойНоменклатуры.Добавить(Выборка.Продукция);    
    КонецЦикла;
    

    Форма = Справочники.Номенклатура.ПолучитьФормуВыбора();
    ФормаОтбор = Форма.Отбор;
    ФормаОтбор.Ссылка.ВидСравнения = ВидСравнения.ВСписке;
    ФормаОтбор.Ссылка.Значение = СписокВыпущеннойНоменклатуры;
    ФормаОтбор.Ссылка.Использование = Истина;    
    Форма.Открыть();
    
КонецПроцедуры
<Code->
1 nordbox
 
08.12.17
07:16
А откуда  у тебя столько пустых групп набирается?
если они тебе не нужны зачем они существуют?
2 Тихий омут
 
08.12.17
07:17
Сам делал через видимость в условном оформлении списка.
    ЭлементОформления = ДС_ПодборУслуг.УсловноеОформление.Элементы.Добавить();
    ЭлементОформления.Оформление.УстановитьЗначениеПараметра("Видимость", Ложь);
    
    ЭлементОформления = ДС_ПодборУслуг.УсловноеОформление.Элементы.Добавить();
    ЭлементОформления.Оформление.УстановитьЗначениеПараметра("Видимость", Истина );
    ЭлементОформления.Оформление.УстановитьЗначениеПараметра("Отображать",Истина );
    
    ОтборПоГруппе = ЭлементОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
    ОтборПоГруппе.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Ссылка");
    ОтборПоГруппе.ВидСравнения = ВидСравненияКомпоновкиДанных.ВСпискеПоИерархии;
    ОтборПоГруппе.ПравоеЗначение = СписокГрупп;
3 Tornadius
 
08.12.17
07:28
(1) У нас очень большой справочник Номенклатура, разные подразделения выпускают разную номенклатуру. в отбор должна попадать только номенклатура выпущенная в конкретном подразделении за конкретный период. отсюда возникают пустые группы. в них содержалась номенклатура других подразделений которая была отфильтрована отбором.
4 Tornadius
 
08.12.17
07:32
(2) а список групп как получали?