При работе с конфигурациями на платформе 1С:Предприятие пользователи часто сталкиваются с ситуацией, когда полученные данные ограничены жесткими условиями фильтрации. Это может проявляться в отчетах, списках документов или обработках, где система автоматически отсекает часть информации.
Понимание того, как убрать отбор в 1С, является критически важным навыком как для конечных пользователей, стремящихся получить полную картину по хозяйственным операциям, так и для разработчиков, настраивающих логику выборки данных.
Механизмы фильтрации в платформе разнообразны: от простых элементов управления на форме до сложных условий в языке запросов. В этой статье мы рассмотрим все способы управления этими ограничениями, начиная от интерфейсных настроек и заканчивая модификацией программного кода.
Понятие отбора в архитектуре 1С
Отбор в терминах платформы представляет собой набор условий, которые применяются к набору данных перед их выводом пользователю. Эти условия формируются на основе полей таблиц базы данных или виртуальных таблиц регистра.
Визуально отбор часто выглядит как табличная часть в верхней части отчетов или панель фильтров в журналах документов. Однако за этим интерфейсом скрывается сложная логика формирования SQL-запроса к серверу базы данных.
Различают несколько уровней применения ограничений. Пользовательский отбор задается непосредственно в момент работы с отчетом и действует только текущую сессию. Предопределенный отбор зашит в конфигурацию разработчиком и может быть скрыт от глаз обычного пользователя.
Важно различать отбор и группировку. Если группировка агрегирует данные (суммирует, считает количество), то отбор просто исключает строки, не соответствующие заданным критериям, из результирующей выборки.
⚠️ Внимание: Удаление жестко заданного отбора в типовых конфигурациях может привести к некорректному отображению данных или нарушению регламентированной отчетности, если логика программы на него рассчитывает.
При анализе структуры метаданных можно увидеть, что отборы часто привязаны к конкретным измерениям регистров накопления. Это позволяет оптимизировать скорость выборки, отсекая ненужные данные еще на уровне чтения с диска.
Управление отборами в режиме пользователя
Для обычного пользователя, не имеющего прав на изменение конфигурации, доступны инструменты настройки существующих форм. Большинство отчетов, построенных на системе компоновки данных (СКД), имеют стандартную панель настроек.
Чтобы убрать unwanted фильтрацию, необходимо перейти в режим настройки. Обычно это делается через кнопку "Настройки" или "Еще" -> "Изменить вариант". В открывшемся окне следует найти вкладку "Отборы".
Здесь отображается список активных условий. Для деактивации конкретного условия достаточно снять галочку напротив него или нажать кнопку удаления (крестик). Если требуется сбросить все фильтры сразу, используйте команду "Очистить отборы".
- ✅ Проверьте вкладку "Параметры" — иногда ограничение задано там в виде фиксированной даты или организации.
- ✅ Используйте команду "Восстановить значения по умолчанию", если настройки были случайно изменены.
- ✅ Обратите внимание на иконку воронки в заголовках колонок — активный отбор часто продублирован там.
В списках документов (журналах) отбор управляется через панель фильтров, расположенную над таблицей. Нажатие на значок воронки открывает меню, где можно выбрать вариант "Сбросить фильтр" или очистить конкретное поле.
Стоит помнить, что некоторые варианты отчетов сохраняются в базе данных как предопределенные. Если вы очистили отбор, но при следующем запуске он появился снова, значит, вы запускаете сохраненный вариант, а не новый.
Настройка отборов в Конструкторе запросов
Разработчикам и продвинутым пользователям часто приходится работать с инструментом Конструктор запросов. Это основной интерфейс для визуального формирования выборок данных без написания кода вручную.
В окне конструктора отборы располагаются в нижней части экрана. Каждая строка представляет собой условие вида "Поле", "Условие", "Значение". Чтобы убрать ограничение, нужно просто удалить соответствующую строку из этой таблицы.
Особое внимание следует уделить логическим связкам. Условия могут быть соединены операторами И или ИЛИ. Удаление одного условия может кардинально изменить логику выборки, сделав ее слишком широкой.
ВЫБРАТЬ
Справочник.Номенклатура.Ссылка КАК Ссылка,
Справочник.Номенклатура.Наименование КАК Наименование
ИЗ
Справочник.Номенклатура
ГДЕ
Справочник.Номенклатура.ЭтоГруппа = ЛОЖЬ
В приведенном примере отбор по полю ЭтоГруппа является частью конструкции ГДЕ. В конструкторе это отображается как строка условия. Ее удаление приведет к тому, что в выборку попадут и папки (группы) номенклатуры.
☑️ Проверка запроса перед сохранением
Если запрос формируется динамически, условия могут добавляться программно. В таком случае визуальное удаление в конструкторе может не дать эффекта, если код обработки перезаписывает эти настройки при запуске.
Программное управление отборами в коде
В конфигурациях на языке 1С управление отборами часто происходит в модулях объектов или общих модулях. Разработчик может программно добавлять или удалять условия фильтрации перед выполнением запроса.
Для работы с отборами используется объект КомпоновщикНастроек или непосредственно объект Запрос. В первом случае мы манипулируем настройками СКД, во втором — текстом запроса или параметрами.
Рассмотрим пример работы с настройками отчета. Чтобы программно очистить все отборы, необходимо обратиться к коллекции Настройки.Отборы и вызвать метод очистки.
Компоновщик = Новый КомпоновщикНастроек;
Компоновщик.Инициализировать(МакетКомпоновки);
Настройки = Компоновщик.Настройки;
// Очистка всех пользовательских отборов
Настройки.Отборы.Очистить();
// Применение измененных настроек
Отчет.КомпоновщикНастроек.Настройки = Настройки;
Важно понимать разницу между предопределенными и пользовательскими отборами. Предопределенные задаются в схеме компоновки данных и могут быть недоступны для редактирования пользователем, если разработчик не вывел их на форму настроек.
- 🔍 Используйте свойство
Использованиеу элемента отбора для управления его видимостью. - 🔍 Для динамического формирования условий применяйте объект
СтруктураОтборов. - 🔍 Проверяйте тип значения в отборе — несовпадение типов (например, Строка и Число) вызовет ошибку выполнения.
⚠️ Внимание: При удалении отборов в коде убедитесь, что вы не нарушаете права доступа (RLS). Некоторые отборы маскируют данные, к которым у пользователя нет прав, и их снятие может открыть конфиденциальную информацию.
Частой ошибкой является попытка очистить отбор через присваивание пустой строки вместо использования метода Очистить(). Это может привести к тому, что условие останется активным, но с некорректным значением.
Работа с системой компоновки данных (СКД)
Система компоновки данных является мощным инструментом для построения отчетов. Она позволяет гибко управлять структурой вывода, включая отборы, группировки и вычисляемые поля.
В схеме компоновки данных отборы делятся на несколько категорий. Отборы данных применяются на уровне выборки из базы. Отборы вывода фильтруют уже сформированный результат. Удаление первых влияет на производительность, вторых — только на итоговую таблицу.
| Тип отбора | Место применения | Влияние на скорость | Доступность пользователю |
|---|---|---|---|
| Параметр | Ввод начальных значений | Высокое (фильтр на входе) | Обязательное поле |
| Поле отбора | Настройки отчета | Среднее (зависит от индексов) | Опционально |
| Условие в запросе | Текст запроса (ГДЕ) | Максимальное | Скрыто (код) |
| Отбор вывода | Пост-обработка | Низкое (фильтр в памяти) | Часто доступно |
Для редактирования схемы компоновки требуется режим Конфигуратор. В дереве метаданных нужно найти нужный отчет, открыть его схему и перейти на вкладку "Отборы". Здесь можно удалить лишние элементы или изменить их свойства.
Как найти скрытый отбор в СКД?
Если отбор не виден в настройках пользователя, откройте схему компоновки данных в конфигураторе. Проверьте вкладку "Наборы данных" и свойства конкретных полей. Иногда отбор задан через выражение в самом наборе данных, а не в явном списке отборов.
При использовании вложенных отчетов отборы могут наследоваться от внешнего отчета. В таком случае удаление условия во вложенном отчете не даст эффекта, пока не будет изменен передаваемый параметр во внешнем контуре.
Особенности отборов в регистрах накопления
Регистры накопления имеют специфическую структуру хранения данных, оптимизированную для получения остатков и оборотов. Отборы здесь играют ключевую роль в производительности выборки.
При работе с виртуальными таблицами регистров (например, РегистрНакопления.Остатки) важно правильно указывать период. Отбор по периоду является обязательным для корректной работы виртуальных таблиц.
Удаление отбора по периоду в запросе к виртуальной таблице остатков приведет к ошибке выполнения или получению некорректных данных за все время существования базы.
Разработчики часто используют отборы по измерениям регистра для ускорения работы. Например, выборка остатков только по конкретному складу выполняется в разы быстрее, чем по всем складам с последующей фильтрацией.
Если вам необходимо убрать отбор по конкретному измерению (например, по статье затрат), убедитесь, что это не замедлит работу отчета критически. На больших объемах данных полный перебор записей регистра может занять минуты вместо секунд.
При отладке медленных отчетов попробуйте временно убрать сложные отборы по текстовым полям. Это поможет понять, влияет ли фильтрация на время генерации результата.
В конфигурациях с включенным раздельным учетом отборы по организации являются обязательными. Их программное удаление без учета контекста раздельного учета может привести к смешиванию данных разных юридических лиц.
Диагностика и поиск скрытых фильтров
Иногда пользователь сталкивается с ситуацией, когда данные не отображаются, но явных отборов в настройках нет. Это признак наличия скрытых фильтров, заданных на уровне кода или прав доступа.
Для диагностики можно использовать режим "Технология" (в меню "Сервис" -> "Технология" -> "Монитор запросов"). Этот инструмент позволяет увидеть реальный текст SQL-запроса, уходящего на сервер.
Анализируя текст запроса в мониторе, обратите внимание на секцию WHERE. Именно там находятся все активные условия фильтрации. Если там есть условия, которых нет в интерфейсе, значит, они заданы программно.
- 🛠 Проверьте наличие ограничений в правах доступа (RLS) в режиме предприятия под конкретным пользователем.
- 🛠 Используйте отладчик для пошагового выполнения кода формирования отчета.
- 🛠 Сравните настройки отчета с эталонным вариантом из поставки конфигурации.
Часто скрытые отборы реализуются через механизмы расширения конфигурации. Если база обновляется из файла обновлений, проверьте, не добавляет ли расширение свои условия фильтрации в стандартные отчеты.
⚠️ Внимание: Интерфейсы и возможности платформы 1С могут отличаться в зависимости от версии платформы (8.2, 8.3, 8.4) и режима работы (тонкий клиент, веб-клиент). Всегда сверяйте доступность функций в вашей конкретной среде.
Понимание природы скрытого фильтра — половина успеха в его устранении. Без анализа реального запроса или кода попытки убрать отбор через интерфейс могут быть бесполезны.
Часто задаваемые вопросы (FAQ)
Почему после очистки отборов данные не изменились?
Вероятно, вы очистили пользовательские настройки, но запустили сохраненный вариант отчета, в котором отборы зафиксированы. Попробуйте создать новый вариант отчета или очистить настройки варианта перед запуском.
Можно ли удалить обязательный отбор в типовом отчете?
В режиме пользователя — нет, если разработчик заблокировал это свойство. В режиме конфигуратора можно изменить схему компоновки данных, сняв флаг "Запрет редактирования" или удалив элемент отбора из схемы.
Как убрать отбор, если кнопка настроек неактивна?
Это может означать отсутствие прав на изменение настроек отчета или блокировку формы. Проверьте свои права доступа в разделе "Администрирование" -> "Настройки пользователей" -> "Права доступа".
Влияет ли удаление отбора на скорость работы 1С?
Да, напрямую. Чем меньше условий в отборе (особенно по индексным полям), тем больше данных системе нужно выбрать и обработать. Удаление отбора по периоду или организации на большой базе может привести к зависанию программы.
Где найти текст запроса для ручного редактирования?
В конфигураторе откройте отчет, перейдите в схему компоновки данных, выберите набор данных и нажмите кнопку "Редактировать как текст". Там вы увидите исходный код запроса со всеми условиями.
Грамотное управление отборами балансирует между полнотой информации и производительностью системы. Не удаляйте фильтры без понимания их назначения в бизнес-логике.