Добрый день, коллеги
Думаю, эта разработка понравится тем, кто имеет подобную задачу.
У нас она звучала так: некоторые элементы справочников потеряли свою актуальность, но удалять их из базы нельзя, т.к. будет нарушена целостность данных... Как бы сделать так, чтобы они не отображались в списках? При этом изменения конфигурации должны быть минимальны.
Для этих целей я создал эту тестовую обработку, которая содержит две процедуры, нужные для реализации задуманного. Все остальные реквизиты и прочее служат только для отладки.
Итак, минимальное изменение конфигурации - это максимальное использование стандартных возможностей. Далее самый безболезненный путь - создание своего общего модуля с необходимым набором процедур. И по возможности минимальные изменения объектов базы - в идеале только незначительная корректировка кода модулей форм или объектов
Поэтому было решено использовать механизм дополнительных сведений и вызовы из форм списков нужных справочников процедур общего модуля, накладывающих отбор на отображаемые списки. Для того чтобы минимизировать количество доп сведений, я решил создать одно свойство "Не используется" (рис.1)
Далее для нужного набора свойств добавляем свойство из другого набора (рис.2-5).
Всё! Подготовка произведена. теперь при нажатии кнопки доп сведений увидим (рис.6). (не совсем удачно выбрал справочник, у него есть свой реквизит Действует, но это не важно).
Теперь в модуль формы списка справочника в процедуру ПриСозданииНаСервере() добавляем вызов.
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
....
Если VEH_ЕстьСвойствоНеИспользуется(ЭтаФорма.СписокСправочника) Тогда
VEH_ДобавитьОтборНеИспользуется(ЭтаФорма, "СписокСправочника");
КонецЕсли;
КонецПроцедуры
Для функции в условии аргументом является основной реквизит формы - список справочника (реквизит д.б. типа динамический список, при другом типе работать не будет), для процедуры - ссылка на форму и имя того же самого реквизита.
После этого при открытии формы элементы, которые имеют свойство Не используется, не будут отображаться в форме списка.
При этом отбор, установленный в форме, можно снять, нажав на кнопку Настроить список (рис. 7)
Решение тестировалось на конфигурации УТ 11.4.5.143 платформа 8.3.12.1714, однако скорее всего будет работать на всех конфигурациях с управляемыми формами, где есть подсистема дополнительных реквизитов и сведений.