Как убрать предопределенный отбор при открытии формы выбора в 1С

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

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

Проверка настроек динамического списка формы выбора

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

  1. Откроем нужную форму выбора в режиме конфигуратора.
  2. Перейдем на вкладку Реквизиты в правой верхней части редактора формы.
  3. Найдем основной реквизит формы с типом ДинамическийСписок (как правило, он называется Список).
  4. В окне свойств реквизита найдем строку Настройка списка и нажмем кнопку открытия (кнопка с лупой или многоточием).
  5. В открывшемся окне перейдем на закладку Отбор.
  6. Проверим наличие условий. Если в списке присутствует лишний элемент отбора, снимем с него флажок активности либо удалим строку полностью.
  7. Сохраним изменения формы и обновим конфигурацию базы данных.

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

Проверка параметров выбора у реквизитов формы и метаданных

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

  1. Откроем форму документа или справочника, из которой вызывается форма выбора.
  2. Выделим элемент формы (поле ввода), через который выбирается значение, и откроем его палитру свойств.
  3. Проверим свойство Параметры выбора. В нем могут быть жестко заданы отборы по значениям (например, Отбор.ПометкаУдаления(Ложь) или фильтр по конкретному типу).
  4. Проверим свойство Связи параметров выбора. Данный механизм фильтрует выбираемые данные на основании другого реквизита текущей строки или формы (например, подбор номенклатуры с отбором по владельцу или виду).
  5. Если в свойствах элемента формы чисто, проверим аналогичные свойства в самом дереве метаданных у реквизита объекта. Настройки, заданные на уровне объекта метаданных, транслируются во все формы, где участвует данный реквизит.

Программная установка отборов в модулях

Рассмотрим ситуации, когда отбор добавляется программным путем. В конфигурациях на управляемых формах код фильтрации может располагаться в нескольких местах:

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

Анализ текста запроса динамического списка

Если в окне отбора визуально ничего не отображается, но данные в списке ограничены, проверим текст запроса динамического списка. В окне свойств реквизита Список установим фокус на свойство Текст запроса. Если в секции ГДЕ присутствует жесткое условие, данные будут отфильтрованы еще на уровне СУБД, при этом стандартный интерфейс отбора останется пустым.

Сброс пользовательских настроек и очистка кэша

Если отбор появляется только в конкретной базе или после тиражирования настроек, разберем действия на стороне пользователя:

  1. В режиме «1С:Предприятие» в форме выбора откроем меню Еще и нажмем команду Установить стандартные настройки. Это сбросит сохраненные пользовательские фильтры.
  2. Если администратор ранее выполнил групповое копирование настроек через панель администрирования, пользовательский фильтр мог закрепиться за всеми учетными записями. В таком случае требуется очистить сохраненные настройки формы для всех пользователей через соответствующую стандартную обработку.
  3. В случае расхождения структуры метаданных и клиентского отображения выполним перезапуск системы с ключом /ClearCache.
← На главную