Стоит задача: адаптировать множественный фильтр типовой конфигурации 1С "Торговля и Склад" (ТиС) для работы с перечислениями.
Для начала добавим строку в таблицу МФ в процедуру ПриОткрытии():
глДобавитьВТаблицуМФ(ТаблицаМФ, "Перечисление", "ТипыНоменклатуры", "ТипНоменклатуры", "По виду номенклатуры");
Затем необходимо доработать процедуру глобального модуля глРаботаСТаблицейМФ(). Показываю фрагмент модифицированного кода и часть оригинального, чтобы было понятно куда вставлять приведенный фрагмент.
Наличие уже добавленных элементов не проверяется, обработка подбора в форме отчета, естественно, также не вызывается.
Если ПустоеЗначение(ВидЗначенияПодбора)=1 Тогда Возврат; КонецЕсли; //1c911.by - Если ТаблицаМФ.Тип = "Перечисление" Тогда ТекСписок = СоздатьОбъект("СписокЗначений"); Сч = 0; Пока 1 = 1 Цикл Сч = Сч + 1; ТекЗнач = Метаданные.Перечисление(ВидЗначенияПодбора).Значение(Сч); Если Строка(ТекЗнач) = "Метаданные" Тогда Прервать; КонецЕсли; Идентификатор = ТекЗнач.Идентификатор; ИД = Meta.ОбрМетаСКЛ("$Перечисление." + ВидЗначенияПодбора + "." + Идентификатор); Ссылка = Meta.ЗначениеИзСтрокиБД("Перечисление." + ВидЗначенияПодбора, СтрЗаменить(ИД,"'","")); ТекСписок.ДобавитьЗначение(Ссылка); КонецЦикла; ВыбЗнач = 0; Поз = 0; Если ТекСписок.ОтметитьЗначения(ВыбЗнач, "Выбор значения", Поз, 20) = 1 Тогда Для Сч = 1 по ТекСписок.РазмерСписка() Цикл Пометка = ТекСписок.Пометка(Сч); Если Пометка = 1 Тогда ТекЗнач = ТекСписок.ПолучитьЗначение(Сч); СписокЭлементовМФ.ДобавитьЗначение(ТекЗнач); КонецЕсли; КонецЦикла; КонецЕсли; глПриСменеСтрокиТаблицыМФ(1,ТаблицаМФ.ТекущаяСтрока(),Конт); ТаблицаМФ.ФлВкл = 2; Иначе СправочникПодбора = СокрЛП(ТаблицаМФ.Тип)+"."+ВидЗначенияПодбора; //далее идет типовой код обработки выбора элемента справочника КонецЕсли; //1c911.by end
Вот и вся доработка. В отличие от работы с числами либо иными типами значений никаких изменений кода больше не потребуется. Вот как это выглядит для пользователя: