Как в отчете 1С СКД отобразить число с символом валюты, сохранив возможность суммирования?

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

При разработке отчетов на базе Системы Компоновки Данных (СКД) часто возникает задача оформить ячейки с числами так, чтобы они выглядели как в Excel (например, $3028,00). Однако разработчики сталкиваются с тем, что любое добавление символа валюты к числу превращает его в строку, из-за чего стандартная функция «сумма» в табличном документе 1С перестает работать. Давайте разберем, почему это происходит и как найти оптимальный выход из этой ситуации.

Понимание ограничений платформы

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

Способ №1: Использование возможностей современных версий платформы

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

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

Способ №2: Разделение данных для отображения и анализа

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

  1. Вывод чисел «как есть»: Оставляем данные в отчете в исходном числовом формате. Это гарантирует корректную работу всех инструментов БСП (Библиотеки Стандартных Подсистем), включая вывод итогов и суммирование выделенных ячеек.
  2. Программное оформление табличного документа: Если отчет формируется программно, мы можем после вывода СКД в табличный документ пройтись по итоговой области и программно изменить оформление ячеек.

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


// Пример программного изменения формата ячейки
Область = ТабличныйДокумент.Область(Строка, Колонка);
Область.Формат = "ЧЦ=15; ЧДЦ=2";
Область.Текст = "$" + Формат(Область.Значение, "ЧЦ=15; ЧДЦ=2");

Важное предостережение: В примере выше мы принудительно записываем в Текст ячейки строку с символом доллара. В этот момент ячейка теряет числовой тип. Чтобы избежать этого, рекомендуется использовать Область.ПараметрРасшифровки для хранения исходного числа, либо создавать скрытые колонки с числами для выполнения расчетов, оставляя видимые колонки для красивого оформления.

Способ №3: Оформление средствами Excel

Зачастую требование «выглядеть как в Excel» подразумевает, что отчет в итоге будет выгружен в этот редактор. Рассмотрим ситуацию, когда мы не хотим портить данные внутри 1С. В этом случае мы можем не добавлять символ доллара на этапе формирования отчета, а задать формат ячейки уже при экспорте.

При выгрузке отчета в формат .xlsx через COM-объект Excel, можно применить к нужным ячейкам специфический формат Excel:


// Применение формата через COM-объект
Excel = Новый COMОбъект("Excel.Application");
Книга = Excel.Workbooks.Open(ПутьКФайлу);
Лист = Книга.Worksheets(1);
Лист.Range("B1:B10").NumberFormat = "$#,##0.00";

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

Итоговые рекомендации

Проанализировав проблему, можно сделать следующие выводы:

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

← На главную