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