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