Как в СКД вывести число с символом процента, сохранив возможность расчета итогов?

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

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

Способ 1: Использование параметров форматной строки (Рекомендуемый)

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

Разберем по шагам, как настроить форматную строку:

  1. Откроем схему компоновки данных и перейдем на закладку Наборы данных.
  2. Найдем нужное поле в списке и нажмем на кнопку выбора в колонке Оформление.
  3. В появившемся окне найдем параметр Формат.
  4. В конструкторе форматной строки укажем количество десятичных знаков, например, ЧДЦ=2.
  5. Самый важный шаг: в поле Суффикс (параметр ЧС) впишем строку % (пробел и знак процента).

В результате форматная строка будет выглядеть примерно так: ЧДЦ=2; ЧС=' %'. Проанализируем ситуацию: в этом случае число 100 останется числом 100, но в ячейке отчета пользователь увидит «100 %». При этом СКД продолжит успешно суммировать эти данные в итогах.

Способ 2: Условное оформление (Свойство «Текст»)

Если нам нужно гибко управлять выводом процента (например, выводить его только в определенных колонках или при определенных условиях), воспользуемся вкладкой Условное оформление в настройках отчета.

  1. Перейдем на закладку Настройки, затем выберем вкладку Условное оформление.
  2. Добавим новый элемент оформления.
  3. В поле Оформляемые поля выберем наш ресурс.
  4. В параметре Текст нажмем на кнопку выбора и пропишем шаблон вида [ИмяПоля] %. Вместо [ИмяПоля] нужно указать фактическое имя поля из набора данных.

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

Способ 3: Настройка выражения представления поля

Как было предложено в обсуждении на форуме, можно использовать выражение представления. Однако здесь есть важный нюанс: если мы просто преобразуем число в строку, мы потеряем возможность корректной сортировки (число «2» окажется после «10», так как сортировка станет строковой).

Выясним причину, почему этот способ требует осторожности. Если в поле Выражение представления на закладке Наборы данных написать код:

Формат(ИмяПоля, "ЧДЦ=2") + " %"

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

Правильный расчет процентов в ресурсах

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

Рассмотрим, как правильно прописать формулу на закладке Ресурсы. Допустим, мы считаем процент прибыли. Вместо того чтобы суммировать готовые проценты из детальных записей, нам нужно рассчитывать их на лету для каждой группировки. Формула в колонке Выражение должна выглядеть так:


ВЫБОР 
    КОГДА Сумма(ПродажиОборот) = 0 
    ТОГДА 0 
    ИНАЧЕ Сумма(ПрибыльОборот) * 100 / Сумма(ПродажиОборот) 
КОНЕЦ

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

Ограничения при экспорте

Проанализируем ситуацию с выгрузкой в Excel. Если вы используете конкатенацию строк (Способ 3), то в Excel данные попадут как текст. Это значит, что пользователь не сможет выделить диапазон ячеек и увидеть их сумму в статус-баре Excel. Если же использовать Форматную строку, 1С передаст в Excel числовое значение и применит к ячейке формат отображения, что является гораздо более профессиональным подходом к разработке отчетов.

← На главную