Как выводить и рассчитывать итоги в подвале колонки табличного поля в 1С?

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

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

Разберем по шагам, как устроена работа с подвалом табличного поля в обычных формах 1С, и проанализируем варианты решения задачи — от простой настройки свойств элементов формы до программного пересчета значений.

Вариант 1. Использование встроенного свойства «ОтображатьИтогиВПодвале»

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

Выясним условия, необходимые для автоматического расчета:

  1. У самого табличного поля в свойствах должен быть включен подвал: ЭлементыФормы.тпБюджетныеОперации.Подвал = Истина;
  2. Колонка в источнике данных должна иметь четко определенный числовой тип (например, через ОписаниеТипов).
  3. Для колонки элемента формы должно быть установлено свойство ОтображатьИтогиВПодвале в значение Истина.

Посмотрим на пример включения итогов при программном формировании колонок:


// Включаем отображение подвала у самого табличного поля
ЭлементыФормы.тпБюджетныеОперации.Подвал = Истина;

// Для нужной числовой колонки включаем автоматический подсчет
Колонка = ЭлементыФормы.тпБюджетныеОперации.Колонки.Найти("Данные_Сумма");
Если Колонка <> Неопределено Тогда
    Колонка.ОтображатьИтогиВПодвале = Истина;
    Колонка.ГоризонтальноеПоложениеВПодвале = ГоризонтальноеПоложение.Право;
КонецЕсли;

Обратите внимание: свойство ОтображатьИтогиВПодвале доступно только для колонок, имеющих числовой тип данных. Если тип колонки составной или неопределенный, свойство выдаст ошибку или не даст желаемого результата.

Вариант 2. Программный расчет и заполнение свойства «ТекстПодвала»

В случаях, когда колонки формируются динамически на лету (например, вычисляемая колонка ДанныеИТОГО_..., куда складываются горизонтальные данные за несколько интервалов или по разным ЦФО), стандартный автоматический подсчет платформы может не подойти или выводить неактуальные данные.

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

Рассмотрим пример процедуры обновления подвала:


Процедура мОбновитьИтогиВПодвале()
    
    // Включаем отображение подвала у элемента управления
    ЭлементыФормы.тпБюджетныеОперации.Подвал = Истина;
    
    Для Каждого Колонка Из ЭлементыФормы.тпБюджетныеОперации.Колонки Цикл
        
        // Пропускаем служебные колонки и текстовые аналитики
        Если Найти(Колонка.Имя, "Аналитика_") <> 0 Или Найти(Колонка.Имя, "НомерСтроки") <> 0 Тогда
            Продолжить;
        КонецЕсли;
        
        // Проверяем, относится ли колонка к числовым данным или итогам
        Если Найти(Колонка.Имя, "Данные_") <> 0 Или Найти(Колонка.Имя, "ДанныеИТОГО_") <> 0 Тогда
            
            // Исключаем колонки с ценами, если по ним не нужно выводить сумму
            Если Найти(Колонка.Имя, "Цена") > 0 Тогда
                Продолжить;
            КонецЕсли;
            
            // Рассчитываем сумму по колонке в источнике данных (Таблице Значений)
            ИтогПоКолонке = тпБюджетныеОперации.Итог(Колонка.Имя);
            
            // Задаем явный текст подвала с учетом формата колонки
            Если Не ПустаяСтрока(Колонка.Формат) Тогда
                Колонка.ТекстПодвала = Формат(ИтогПоКолонке, Колонка.Формат);
            Иначе
                Колонка.ТекстПодвала = Формат(ИтогПоКолонке, "ЧДЦ=2; ЧРГ=' '");
            КонецЕсли;
            
            Колонка.ГоризонтальноеПоложениеВПодвале = ГоризонтальноеПоложение.Право;
            
        КонецЕсли;
        
    КонецЦикла;
    
КонецПроцедуры

Особенности работы с вычисляемыми колонками «ИТОГО»

Если в вашей форме суммы по горизонтали (из месячных колонок в общую колонку ДанныеИТОГО_...) рассчитываются программным кодом в обработчиках ПриИзменении или при пересчете таблицы, важно соблюдать правильный порядок вызовов:

  1. Сначала выполняется расчет горизонтальных итогов по каждой строке таблицы (заполнение ячеек СтрокаТП["ДанныеИТОГО_..."]).
  2. После завершения пересчета всех строк вызывается процедура обновления подвала, которая берет итоговую сумму по всей колонке через тпБюджетныеОперации.Итог("ДанныеИТОГО_...") и записывает ее в ТекстПодвала.

Соблюдение этого порядка гарантирует, что в подвале колонки «ИТОГО» всегда будут отображаться корректные и актуальные суммарные данные.

← На главную