Copyright © 2010 Promsite. All Rights Reserved.
P  R  O  M  S  I  T  E
Статьи по 1С
стр. 3
стр. 3
ИспользоватьСписокЭлементов()

Доработка кода метода ИСЭ

    Для того чтобы работал флажок Наличие, надо сделать отдельную процедуру, назовем её ОбработкаНаличия() и впишем её в поле формула в свойствах этого флажка. Задача этой процедуры запускать процедуру ФормированиеФильтра() с передачей на вход вызываемой процедуры параметра. Этим параметром должен быть текущий родитель, т.к. мы не знаем заранее в какой момент пользователю захочется включить флажок Наличие. Текущего родителя можно достать методом модуля формы списка ИспользоватьРодителя().

    Теперь независимо от состояния флажка Наличие у нас должна быть возможность смело гулять по группам. Т.е. перешли на новую группу - формируется новый фильтр. Здесь поможет предопределенная процедура при ПриВыбореРодителя(<Элемент>). Эта процедура будет вызываться всегда когда мы кликаем на любой группе. Работает процедура просто: на какой группе кликаем, то значение выбранной интерактивно группы и передастся в параметр Элемент

    Как только выполнили вышеописанное кнопка Фильтр нам больше не нужна и её можно удалить. Также удаляем визуальный элемент Список значений, а на него обычным образом создаем ссылку. В итоге получаем код:

Перем Спр;
Перем Сз;
//*************************************************
Процедура ФормированиеФильтра(Родитель)
    Если Наличие=1 Тогда
        Сз.УдалитьВсе();
        Спр.ВключатьПодчиненные(0);
        Спр.ИспользоватьРодителя(Родитель);
        Спр.ВыбратьЭлементы();
        Пока Спр.ПолучитьЭлемент()=1 Цикл
            Если (Спр.ЭтоГруппа()=1) Тогда
                Сз.ДобавитьЗначение(Спр.ТекущийЭлемент());
            КонецЕсли;
        Если (Спр.Остаток.Получить(ТекущаяДата())>0) Тогда
            Сз.ДобавитьЗначение(Спр.ТекущийЭлемент());
        КонецЕсли;
    КонецЦикла;
    ИспользоватьСписокЭлементов(Сз);
    Иначе
    ИспользоватьСписокЭлементов();//обычный показ без фильтрации
    КонецЕсли;
КонецПроцедуры
//*******************************************************
Процедура ОбработкаНаличия()
    ФормированиеФильтра(ИспользоватьРодителя());
КонецПроцедуры
//*********************************************************
Процедура ПриВыбореРодителя(Новый);
    ФормированиеФильтра(Новый);
КонецПроцедуры
Спр=СоздатьОбъект("Справочник.Товары");
Сз=СоздатьОбъект("СписокЗначений");

       Комментарии: в коде добавилось выражение записывающее группы в фильтр, иначе в визуальном представлении справочника мы эти группы не увидим.

    Примечание: не рассматривается здесь режим иерархического показа, т.к. суть метода от этого не меняется. Вообще можно сделать вывод, кто владеет понятием формирования фильтра, тот владеет методом ИспользоватьСписокЭлементов().


Финальный пример-конфигурация Ref_Ise_2.zip 109 kb.


страницы: 1   2   3
страницы: 1   2   3

Для отображения Облака ссылок
необходим
Adobe Flash Player 9
или выше.