6 дек. 2016 г.

Отбор в списке Справочника 7.7

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

+ это будет как бы еще один вариант "множественного" фильтра в списке справочника.

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

CopyPaste Copyright © 2017 - |- Шаблон создан O Pregador - |- Отредактирован myr4ik07