Скрытие неиспользуемых элементов в списках справочников

Публикация № 972884

Обработки - Обработка справочников

справочник элементы неиспользуемые скрыть

1
Простое и понятное решение для сокрытия некоторых элементов справочников (например, не используемых обычно) с использованием дополнительных сведений.

Добрый день, коллеги

Думаю, эта разработка понравится тем, кто имеет подобную задачу.

У нас она звучала так: некоторые элементы справочников потеряли свою актуальность, но удалять их из базы нельзя, т.к. будет нарушена целостность данных... Как бы сделать так, чтобы они не отображались в списках? При этом изменения конфигурации должны быть минимальны.

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

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

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

 

Далее для нужного набора свойств добавляем свойство из другого набора (рис.2-5).

 

Всё! Подготовка произведена. теперь при нажатии кнопки доп сведений увидим (рис.6). (не совсем удачно выбрал справочник, у него есть свой реквизит Действует, но это не важно).

Теперь в модуль формы списка справочника в процедуру ПриСозданииНаСервере() добавляем вызов.

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    ....

	Если VEH_ЕстьСвойствоНеИспользуется(ЭтаФорма.СписокСправочника) Тогда 
		VEH_ДобавитьОтборНеИспользуется(ЭтаФорма, "СписокСправочника");
	КонецЕсли;

КонецПроцедуры

Для функции в условии аргументом является основной реквизит формы - список справочника (реквизит д.б. типа динамический список, при другом типе работать не будет), для процедуры - ссылка на форму и имя того же самого реквизита.

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

При этом отбор, установленный в форме, можно снять, нажав на кнопку Настроить список (рис. 7)

Решение тестировалось на конфигурации УТ 11.4.5.143 платформа 8.3.12.1714, однако скорее всего будет работать на всех конфигурациях с управляемыми формами, где есть подсистема дополнительных реквизитов и сведений.

1

Скачать файлы

Наименование Файл Версия Размер
Скрытие неиспользуемых элементов в списках справочников:
.epf 8,04Kb
28.12.18
1
.epf 8,04Kb 1 Скачать

См. также

Специальные предложения

Комментарии
Избранное Подписка Сортировка: Древо
1. PerlAmutor 35 28.12.18 19:43 Сейчас в теме
Когда задались тем же вопросом относительно номенклатуры, выяснилось много неприятных моментов. РЛС на чтение номенклатуры не наложить (в типовых тоже не увидите возможности). Иначе прощай производительность всего сервера + ошибки доступа в типовых отчетах, + расхождение по остаткам в отчетах. В документах есть подборы номенклатуры по остаткам на складах, как типовые, так и не очень. Уже недостаточно переопределить общий подбор. Пришли к выводу, что для реализации придется перелопачивать всю конфигурацию, все формы, все отчеты, все обработки. Дорого и без гарантий 100% результата.
3. dmitryts 4 29.12.18 09:04 Сейчас в теме
(1) Мне кажется, что для списка номенклатуры этот способ не совсем логичный. в большинстве случаев никто не задается этим вопросом в части применимости номенклатуры, ее отбирают по другим критериям...
здесь больше к таким категориям как например склады, подразделения, виды цен и т.п. - служебные справочники
2. kondratevsergey1985 28.12.18 22:29 Сейчас в теме
Наверное проверку "VEH_ЕстьСвойствоНеИспользуется" стоит переместить в саму процедуру VEH_ДобавитьОтборНеИспользуется, чтобы изменений в типовом коде было ещё меньше (всё сведётся к одной строчке в процедуре ПриСозданииНаСервере).
Оставьте свое сообщение