При разработке отчетов по взаиморасчетам в системе компоновки данных (СКД) часто возникает задача разделения показателей по регламентированной и иностранной валюте. Если валюта операции совпадает с валютой регламентированного учета, вывод суммы в «инвалюте» становится избыточным, так как она дублирует основную сумму. Рассмотрим, как эффективно скрыть лишние данные и обеспечить корректный расчет общих итогов.
Самый прямой способ — обработать данные еще на этапе получения их из базы данных. Мы можем использовать конструкцию ВЫБОР КОГДА, чтобы обнулить показатель иностранной валюты, если она совпадает с валютой учета. Проанализируем пример реализации в тексте запроса схемы компоновки данных:
ВЫБОР
КОГДА Взаиморасчеты.Валюта = &РеглВалюта
ТОГДА 0
ИНАЧЕ Взаиморасчеты.СуммаВВалюте
КОНЕЦ КАК СуммаИнВалюта
В этом случае, если условие выполняется, в поле СуммаИнВалюта попадет ноль. Это решает проблему вывода лишних цифр, однако в строках отчета все равно могут отображаться нулевые значения. Чтобы сделать отчет визуально чище, можно заменить 0 на NULL, так как СКД по умолчанию не отображает пустые значения.
Одной из ключевых подзадач является вывод общих итогов только по регламентированной валюте. Если просто просуммировать колонку инвалюты, в итог попадут данные по разным валютам (доллары, евро и т.д.), что сделает итоговую сумму бессмысленной. Чтобы в общих итогах данные учитывались только тогда, когда это действительно иностранная валюта, разберем настройку выражения ресурса на вкладке Ресурсы:
Вместо стандартного СУММА(СуммаВВалюте) пропишем более сложную логику:
Сумма(ВЫБОР
КОГДА Валюта <> &ПараметрРеглВалюта
ТОГДА СуммаВВалюте
ИНАЧЕ 0
КОНЕЦ)
Такой подход гарантирует, что в итогах по группировкам и в «Общем итоге» будут суммироваться только те значения, которые относятся к отличным от регламентированной валютам. Это позволяет избежать «смешивания» разных валют в одной итоговой ячейке.
Если мы не хотим менять логику расчета данных, а нужно лишь визуально скрыть текст в конкретных строках, воспользуемся вкладкой Условное оформление в настройках отчета. Рассмотрим по шагам, как это сделать:
ЧЗ=0, чтобы скрыть нулевые показатели.Валюта Равно &ПараметрРеглВалюта.Важный нюанс: В СКД невозможно динамически «удалить» колонку для одной строки, если она присутствует в других. Таблица всегда имеет фиксированную структуру. Поэтому «скрытие» всегда сводится к очистке содержимого ячейки.
Проанализируем ситуацию, когда определение регламентированной валюты должно происходить автоматически. Для этого в СКД можно использовать Вычисляемые поля. В выражении такого поля можно вызвать функцию общего модуля, которая вернет валюту учета организации:
// В поле "Выражение" вычисляемого поля
ВЫБОР
КОГДА Валюта = МойОбщийМодуль.ПолучитьВалютуРеглУчета()
ТОГДА NULL
ИНАЧЕ СуммаВВалюте
КОНЕЦ
Использование NULL предпочтительнее, так как оно исключает поле из некоторых агрегатных функций и автоматически скрывает значение в печатной форме. Кроме того, убедимся, что для поля валютной суммы в наборе данных установлена роль Игнорировать значения NULL, чтобы избежать ошибок при расчете иерархических итогов.
Таким образом, комбинируя методы обработки данных в запросе и визуальное оформление, мы получаем гибкий отчет, который не перегружен лишней информацией и корректно суммирует финансовые показатели.