Как настроить отбор по категориям номенклатуры с логическим условием ИЛИ в отчетах 1С?

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

При работе с аналитическими отчетами часто возникает необходимость отобрать позиции номенклатуры сразу по нескольким критериям. Например, показать товары, которые входят в Категорию 1 или в Категорию 2, либо исключить отдельные группы элементов. Рассмотрим, как правильно реализовать такие гибкие отборы в программе 1С.

Выясним причину ограничений стандартных отборов

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

Если для одного реквизита или табличной части с дополнительными реквизитами установить два фиксированных значения через условие «Равно», отчет вернет пустой результат, так как объект не может одновременно равняться двум разным значениям. Для решения этой задачи требуется перейти к механизму Системы компоновки данных (СКД) и использовать группы условий.

Способ 1. Использование групп условий «ИЛИ» в отчетах на СКД

Разберем по шагам, как настроить сложный отбор в отчетах, построенных на базе СКД:

  1. Откроем форму отчета и перейдем в окно настроек (кнопка Настройки).
  2. Перейдем на вкладку Отбор.
  3. Нажмем кнопку добавления элемента и выберем пункт Добавить группу условий.
  4. В появившемся окне выбора типа группы укажем значение Группа ИЛИ (также доступны варианты Группа НЕ и Группа ИЛИ-НЕ для комбинации отрицаний).
  5. Внутрь созданной группы перетащим или добавим необходимые поля, например:
    • Номенклатура.Категория Равно "Электроника"
    • Номенклатура.Категория Равно "Бытовая техника"
  6. Нажмем Сформировать для применения настроек.

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

Способ 2. Использование типа сравнения «В списке»

Посмотрим на более простой случай, когда требуется отфильтровать позиции по одному и тому же полю (например, по категории или виду номенклатуры). В этом случае создавать отдельную группу условий «ИЛИ» не обязательно.

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

Способ 3. Применение сегментов номенклатуры

В современных типовых решениях (1С:ERP, 1С:Управление торговлей, 1С:Комплексная автоматизация) для частых и сложных выборок рекомендуется использовать механизм Сегменты номенклатуры.

Смысл данного подхода заключается в том, что сложное правило с любым количеством условий «И», «ИЛИ», «НЕ» настраивается один раз в справочнике сегментов. После этого в любых отчетах достаточно наложить простой фильтр:

Номенклатура В сегменте "Периодическая распродажа"

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

← На главную