Как запретить выбор элементов из определенной папки справочника в 1С?

Программист 1С v8.3 (Управляемые формы) 1С:Управление торговлей IT и автоматизация бизнеса
← На главную

При длительной эксплуатации конфигураций 1С (например, «Управление торговлей 11») в справочниках накапливается множество неактуальных записей. Распространенной практикой является создание специальной папки (например, «Архив» или «Хлам») и перенос неиспользуемых элементов туда. Однако само по себе перемещение в папку не запрещает пользователям выбирать эти элементы при оформлении новых документов. Разберем по шагам практические варианты решения этой задачи, начиная от настройки форм и модуля менеджера до использования штатных возможностей Библиотеки Стандартных Подсистем (БСП).

Способ 1. Централизованное ограничение через модуль менеджера справочника

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

Рассмотрим пример реализации в модуле менеджера справочника (например, Справочник.БизнесРегионы):


Процедура ОбработкаПолученияДанныхВыбора(ДанныеВыбора, Параметры, СтандартнаяОбработка)
    
    ПапкаХлам = Справочники.БизнесРегионы.НайтиПоНаименованию("Хлам");
    Если ЗначениеЗаполнено(ПапкаХлам) Тогда
        
        // Добавляем условие исключения элементов из группы в отбор
        ЭлементОтбора = Новый ЭлементОтбораКомпоновкиДанных;
        ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Ссылка");
        ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.НеВИерархии;
        ЭлементОтбора.ПравоеЗначение = ПапкаХлам;
        ЭлементОтбора.Использование = Истина;
        
        Параметры.Отбор.Элементы.Добавить(ЭлементОтбора);
        
    КонецЕсли;

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

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

Способ 2. Настройка отбора в динамическом списке формы списка и формы выбора

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

Разберем последовательность действий:

  1. Откроем форму списка или форму выбора справочника в конфигураторе.
  2. Найдем основной реквизит формы Список с типом ДинамическийСписок.
  3. Установим программный отбор при открытии формы в событии ПриСозданииНаСервере.

Рассмотрим пример кода для формы:


&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    
    ПапкаХлам = Справочники.БизнесРегионы.НайтиПоНаименованию("Хлам");
    Если ЗначениеЗаполнено(ПапкаХлам) Тогда
        
        ЭлементОтбора = Список.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
        ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Ссылка");
        ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.НеВИерархии;
        ЭлементОтбора.ПравоеЗначение = ПапкаХлам;
        ЭлементОтбора.Использование = Истина;
        
    КонецЕсли;

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

Способ 3. Настройка свойства «Параметры выбора» у реквизита

Если необходимо ограничить выбор только для конкретного поля документа или справочника, используем свойства метаданных без написания кода.

  1. Найдем нужный документ или справочник в дереве метаданных.
  2. Перейдем в палитру свойств требуемого реквизита.
  3. Откроем свойство «Параметры выбора».
  4. Добавим новое условие: поле Отбор.Ссылка, вид сравнения Не в иерархии, и укажем группу, элементы которой нужно скрыть.

Способ 4. Использование штатного механизма БСП (Реквизит «Недействителен»)

В современных конфигурациях 1С (включая «1С:Управление торговлей 11») стандартным способом скрытия устаревших данных является использование специального реквизита Недействителен вместо переноса элементов по папкам.

Проанализируем особенности этого подхода:

  1. В карточке элемента справочника устанавливается флаг «Недействителен».
  2. Механизмы Библиотеки Стандартных Подсистем автоматически скрывают отмеченные элементы из списков автоподбора и выпадающих списков.
  3. Целостность данных не нарушается: ранее оформленные документы и исторические отчеты продолжают корректно отображать этот элемент.

Важные рекомендации по защите данных

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

← На главную