Как правильно выводить общие итоги в СКД при наличии нескольких валют?

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

При работе с системой компоновки данных (СКД) часто возникает задача формирования отчетов по взаиморасчетам. Когда в данных присутствуют суммы в различных валютах, стандартная настройка СКД пытается сложить их в общий итог, что приводит к бессмысленным результатам. Давайте разберем, как грамотно настроить отчет, чтобы избежать таких ошибок и сделать данные читаемыми.

Вариант 1: Отключение общих итогов

Если логика отчета не предполагает наличие общего итога по всем валютам сразу, самым простым и логичным решением будет полное отключение этого элемента. Рассмотрим, как это сделать:

  1. Перейдите на вкладку Настройки в редакторе СКД.
  2. Выберите нужную группировку (или отчет целиком).
  3. Перейдите в раздел Другие настройки.
  4. Найдите параметр Расположение общих итогов и установите значение Нет.

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

Вариант 2: Использование условных выражений в ресурсах

Чтобы итоговая строка оставалась, но не содержала «мухокотлетную» сумму, воспользуемся мощным инструментом Выражение для ресурса. Вместо простой суммы Сумма(СуммаОстатка) мы можем задать логическое условие. Рассмотрим пример, когда при наличии нескольких валют мы просто выводим ноль или пустую строку:


ВЫБОР
    КОГДА Количество(Различные Валюта) > 1
        ТОГДА 0
    ИНАЧЕ Сумма(СуммаОстатка)
КОНЕЦ

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

Вариант 3: Объединение итогов в одну строку

Наиболее продвинутым и элегантным способом считается вывод итогов в виде аккуратной строки, где суммы сгруппированы по валютам (например: «300 USD; 500 RUB»). Для этого воспользуемся функцией ВычислитьВыражениеСГруппировкойТаблицаЗначений. Это позволяет динамически сформировать текстовое представление итога прямо в ячейке СКД.

Рассмотрим реализацию такого подхода на примере:


СоединитьСтроки(
    ВычислитьВыражениеСГруппировкойТаблицаЗначений(
        "Формат(isnull(Сумма(СуммаВВалюте), 0), ""ЧДЦ=2"") + "" "" + Валюта",
        "Валюта",
        ,
        "isnull(Сумма(СуммаВВалюте), 0) <> 0"
    )
)

Разберем, что происходит в этой формуле:

Вариант 4: Магия сложных итогов

Иногда требуется вывести не просто валюты, а сложные статистические данные, например, «Получено: 10, Ожидается: 20 из 30». Это можно реализовать с помощью метода ВычислитьВыражениеСГруппировкойМассив. Данный подход позволяет считать количество записей по определенному условию, например, по булевым флагам, и выводить их в одну строку.


"Получено: " + 
Строка(Сумма(ВычислитьВыражениеСГруппировкойМассив("1",,"Флаг = ИСТИНА"))) + 
"; Ожидается: " + 
Строка(Сумма(ВычислитьВыражениеСГруппировкойМассив("1",,"Флаг = Ложь")))

Рекомендации по реализации

При выборе метода учитывайте объем данных в вашем отчете:

  1. Для простых отчетов достаточно отключения общих итогов или использования простого условного вывода в ресурсах.
  2. Для аналитических отчетов с большим количеством данных лучше использовать подготовку итогов на уровне запроса. Если данных очень много, функции типа ВычислитьВыражение... могут замедлять формирование отчета, так как они выполняют расчеты для каждой итоговой ячейки отдельно.
  3. Всегда проверяйте результат в настройках компоновки. Часто правильная группировка строк в самом отчете избавляет от необходимости усложнять ресурсы формулами.

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

← На главную