При работе с аналитическими отчетами часто возникает необходимость отобрать позиции номенклатуры сразу по нескольким критериям. Например, показать товары, которые входят в Категорию 1 или в Категорию 2, либо исключить отдельные группы элементов. Рассмотрим, как правильно реализовать такие гибкие отборы в программе 1С.
Проанализируем ситуация, почему при попытке задать несколько условий в стандартных настройках отчета они работают по умолчанию по логическому правилу И. В старых вариантах Универсального отчета или простых формах фильтрации каждый новый отбор добавляется последовательно. В этом случае система ищет элементы, одновременно удовлетворяющие всем строкам отбора.
Если для одного реквизита или табличной части с дополнительными реквизитами установить два фиксированных значения через условие «Равно», отчет вернет пустой результат, так как объект не может одновременно равняться двум разным значениям. Для решения этой задачи требуется перейти к механизму Системы компоновки данных (СКД) и использовать группы условий.
Разберем по шагам, как настроить сложный отбор в отчетах, построенных на базе СКД:
Группа НЕ и Группа ИЛИ-НЕ для комбинации отрицаний).Номенклатура.Категория Равно "Электроника"Номенклатура.Категория Равно "Бытовая техника"После этого отчет выведет все позиций номенклатуры, принадлежащие хотя бы к одной из указанных категорий.
Посмотрим на более простой случай, когда требуется отфильтровать позиции по одному и тому же полю (например, по категории или виду номенклатуры). В этом случае создавать отдельную группу условий «ИЛИ» не обязательно.
Достаточно добавить обычный отбор по полю Категория, но в колонке Вид сравнения выбрать значение В списке. В колонке Значение откроем форму подбора и укажем перечень всех интересующих категорий. Платформа автоматически сформирует SQL-запрос с логикой объединения выборки.
В современных типовых решениях (1С:ERP, 1С:Управление торговлей, 1С:Комплексная автоматизация) для частых и сложных выборок рекомендуется использовать механизм Сегменты номенклатуры.
Смысл данного подхода заключается в том, что сложное правило с любым количеством условий «И», «ИЛИ», «НЕ» настраивается один раз в справочнике сегментов. После этого в любых отчетах достаточно наложить простой фильтр:
Номенклатура В сегменте "Периодическая распродажа"
Это не только упрощает работу пользователей с отчетами, но и существенно повышает скорость формирования выборок в больших базах данных.