Как убрать слово Сумма и красиво оформить заголовок итогов в отчете СКД

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

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

В этой статье мы подробно разберем несколько способов решения этой задачи: от простых манипуляций в настройках СКД до продвинутой программной постобработки итогового документа.

Способ 1: Использование стандартных настроек ресурса

Прежде чем переходить к написанию кода, проанализируем стандартные возможности системы. Слово "Сумма" добавляется платформой 1С автоматически только в том случае, если для поля ресурса не задан явный заголовок. Чтобы исправить это без программирования, выполним следующие шаги:

  1. Откроем схему компоновки данных и перейдем на вкладку "Настройки".
  2. Выберем нужный вариант отчета и перейдем на закладку "Выбранные поля".
  3. Найдем поле ресурса (например, СуммаОстаток), нажмем на нем правой кнопкой мыши и выберем пункт "Установить заголовок".
  4. Введем желаемое название, например, просто "Всего" или "Сумма" (но уже как имя поля, без автоматических приставок). Если мы зададим заголовок вручную, система перестанет добавлять к нему лишние слова в шапке отчета.

Способ 2: Настройка заголовка общих итогов

Если ваша задача — изменить само слово "Итого" в нижней или боковой части отчета, воспользуемся другими настройками:

  1. На закладке "Другие настройки" в СКД найдем параметр "Заголовок общих итогов".
  2. Установим значение, например, "Всего по отчету". Это изменит текст в строке итогов.
  3. Для пользователей типовых конфигураций (ЗУП 3.1, ERP, КА) это можно сделать в режиме "Предприятие": зайдите в "Настройки" -> "Расширенный" -> "Другие настройки".

Способ 3: Программная постобработка табличного документа

Рассмотрим ситуацию, когда стандартных настроек недостаточно. Например, когда нам нужно программно найти ячейку со словом "Сумма" в заголовке итоговой колонки, объединить ее с ячейкой выше (где написано "Итого") и выполнить центрирование. Этот метод наиболее гибок, так как он работает даже в тех случаях, когда колонки формируются динамически. Для работы с динамическими заголовками по периодам можно использовать пример формирования шапки отчета по неделям и месяцам.

Проанализируем алгоритм действий. Мы будем перехватывать момент после вывода отчета в ТабличныйДокумент и программно изменять его структуру. Если отчет формируется стандартной кнопкой "Сформировать", код следует разместить в модуле объекта отчета в процедуре ПриКомпоновкеРезультата. Если же используется своя кнопка на форме, код вставляется сразу после вызова процессора вывода.

Посмотрим на пример реализации:


// Вставляем код после того, как отчет выведен в ТабДок
// ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);

ТабДок.ОтображатьСетку = Ложь; 

// Ищем ячейку, содержащую текст "Сумма"
ОбластьПоиска = ТабДок.НайтиТекст("Сумма");

Если ОбластьПоиска <> Неопределено Тогда 
    // Получаем адрес найденной ячейки в формате "R1C1"
    ИмяЯчейки = ОбластьПоиска.Имя;
    
    // Разбираем строку адреса, чтобы вычислить координаты
    ПозицияС = Найти(ИмяЯчейки, "C");
    НСтроки = Сред(ИмяЯчейки, 2, ПозицияС - 2);
    НКолонки = Сред(ИмяЯчейки, ПозицияС + 1);
    
    // Определяем область для объединения: текущая ячейка и ячейка над ней
    // Используем формат R1C1 для точности
    СтрокаНачала = Число(НСтроки) - 1;
    КолонкаНачала = Число(НКолонки);
    
    АдресОбласти = "R" + Формат(СтрокаНачала, "ЧГ=") + "C" + Формат(КолонкаНачала, "ЧГ=") + 
                   ":R" + Формат(Число(НСтроки), "ЧГ=") + "C" + Формат(КолонкаНачала, "ЧГ=");
    
    ОбластьОбъединения = ТабДок.Область(АдресОбласти);
    
    // Выполняем объединение и форматирование
    ОбластьОбъединения.Объединить();
    ОбластьОбъединения.ГоризонтальноеПоложение = ГоризонтальноеПоложение.Центр;
    ОбластьОбъединения.ВертикальноеПоложение = ВертикальноеПоложение.Центр;
    
КонецЕсли;

Важный нюанс: Обратите внимание на использование функции Формат(..., "ЧГ="). Это критически важно, так как при больших номерах строк или колонок 1С может вставить разделитель групп разрядов (пробел), что приведет к ошибке при формировании строкового адреса области типа "R1 000C1" вместо "R1000C1".

Способ 4: Использование расчетных полей

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

  1. Перейдите на закладку "Расчетные поля".
  2. Добавьте новое поле, укажите путь к данным (например, ВсегоСумма) и выражение (например, СуммаПродаж).
  3. Задайте этому полю короткий и понятный заголовок.
  4. Используйте это расчетное поле в качестве ресурса.

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

Способ 5: Условное оформление заголовков

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

  1. В настройках отчета перейдите на закладку "Условное оформление".
  2. Добавьте новый элемент оформления. В параметрах выберите "Текст" и впишите нужное значение (например, пустую строку или пробел, чтобы скрыть "Сумма").
  3. В "Оформляемых полях" выберите ваш ресурс.
  4. В "Условии" ничего не указывайте (чтобы применялось всегда) или укажите системное поле СистемныеПоля.Уровень, если нужно примениться только к определенному уровню группировок.
  5. Важно: Чтобы оформление затронуло именно заголовок, убедитесь, что в настройках размещения указано использование для заголовков.

Рекомендации по выбору метода

Рассмотрев все варианты, подведем итоги:

1. Если вам нужно просто переименовать колонку — используйте "Установить заголовок" в выбранных полях.

2. Если нужно изменить надпись "Итого" внизу — используйте "Заголовок общих итогов" в других настройках.

3. Если требуется сложное визуальное оформление (объединение ячеек шапки, центрирование над несколькими колонками) — используйте программную постобработку ТабличногоДокумента, как показано в примере выше.

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

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

← На главную