11. Механизмы построения отчетности
#46

Готовишься к экзамену?

Полнофункциональный тренажер @bot_1cnik_bot с полноценным обучением, режимом экзамена и подробной статистикой.

Перейти в бота

В отчете на СКД отбор по реквизиту «Склад» задан сразу в трех слоях настроек: в фиксированных (обязательных), в пользовательских и в текущем варианте. При этом в каждом слое указано разное значение склада. Что произойдет при попытке сформировать отчет?

Отчет сформируется, и сработает отбор из пользовательских настроек
Неправильно: Пользовательские настройки действительно могут дополнять/переопределять основные настройки варианта, но они не должны вступать в конфликт с фиксированными настройками. При пересечении по одному и тому же полю (например, «Склад») с разными значениями СКД не применяет настройки и формирование прерывается.
Отчет сформируется, и будет применен отбор из текущего варианта настроек
Неправильно: Текущий вариант настроек - это «основные» настройки отчета (вариант), но они также не могут конфликтовать с фиксированными. Если фиксированный отбор по «Складу» пересекается с отбором варианта или пользовательским отбором, система не выбирает «кто главнее», а сообщает об ошибке применения настроек.
Отчет не будет сформирован
Правильно: Ситуация, когда по одному и тому же полю задано несколько отборов в разных слоях настроек (и они пересекаются, задавая разные значения), считается недопустимой для применения фиксированных настроек. В результате СКД выдаст ошибку о невозможности применить фиксированные настройки, и отчет не сформируется.
Отчет сформируется, и сработает отбор из фиксированных настроек
Неправильно: Фиксированные настройки действительно обязательны и всегда добавляются к настройкам отчета, но при конфликте они не «побеждают» автоматически. Вместо этого СКД блокирует формирование, потому что пересечение элементов отбора по одному полю в разных слоях настроек считается ошибкой настройки отчета.

Пояснение

В СКД настройки отчета складываются из нескольких уровней: - фиксированные настройки (задаются разработчиком/в коде и должны применяться всегда); - основные настройки варианта (то, что хранится в выбранном варианте отчета); - пользовательские настройки (то, что пользователь дополнительно сохранил/изменил поверх варианта). Фиксированные настройки «добавляются» к остальным, но с важным ограничением: они не должны пересекаться с отбором/параметрами других уровней по одним и тем же элементам. Если по одному полю (например, «Склад») одновременно задано несколько отборов в разных слоях и они задают разные значения, СКД воспринимает это как конфликт (пересечение элементов отбора) и прекращает формирование отчета. Пример конфликта: - в фиксированных настройках: Склад = «Основной»; - в варианте отчета: Склад = «Розничный»; - в пользовательских: Склад = «Склад_СПб». Система не может корректно объединить эти условия (получается взаимоисключающая фильтрация по одному реквизиту), поэтому отчет не строится. Как избежать/исправить: 1) Не дублировать один и тот же отбор в разных слоях: если «Склад» фиксированный, уберите его из варианта и запретите пользователю добавлять такой же отбор. 2) Если нужно разрешить несколько складов, задавайте это одним элементом отбора (например, «Склад в списке») в одном уровне настроек, а не несколькими независимыми отборами. 3) Если ошибка проявилась у конкретного пользователя, часто помогает сбросить/очистить пользовательские настройки отчета (или открыть отчет со стандартными настройками), чтобы убрать конфликтующий отбор. Ключевая идея: при конфликте с фиксированными настройками СКД не выбирает приоритет, а блокирует формирование отчета.