Как программно установить текст в подвале колонки таблицы 1С и избежать его автоматического очищения

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

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

Анализ проблемы: почему очищается ТекстПодвала

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


Н = 10;
Для каждого СтрокаТаблицы из Таблица Цикл
     Н = Н * 3; // Условный расчет значения
     СтрокаТаблицы.Количество = Строка(Н) + " ед.";
КонецЦикла;

// Попытка установить текст в подвал
ЭлементыФормы.Таблица.Колонки.Количество.ТекстПодвала = ДругаяТаблица.Итог("Количество");

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

  1. Программный: когда разработчик напрямую присваивает значение свойству ТекстПодвала.
  2. Автоматический (системный): когда платформа сама рассчитывает сумму по колонке, если установлен соответствующий флаг в свойствах элемента формы.

Важный момент: Системный механизм автоматического расчета итогов имеет приоритет. Если у колонки включено свойство "Отображать итоги в подвале", платформа будет пытаться рассчитать сумму при каждом обновлении таблицы. Если тип данных колонки — Строка, сумма математически не может быть вычислена, и система записывает в подвал пустое значение (или 0), полностью затирая то, что вы написали программно.

Пошаговое решение для Обычных форм

Разберем, как исправить эту ситуацию в конфигурациях на обычных формах (например, УПП 1.3 или КА 1.1). Основная задача — отключить автоматическое управление подвалом со стороны платформы.

Шаг 1. Проверка свойств колонки в конфигураторе.
Откройте форму, выберите нужный элемент (Табличное поле). Зайдите в свойства колонки, в которой должен отображаться текст. Найдите группу свойств "Подвал". Проверьте флаг ОтображатьИтогиВПодвале. Если он установлен, его необходимо снять. Именно этот флаг заставляет систему игнорировать ваш программный текст.

Шаг 2. Настройка типа данных.
Если вы выводите в колонку текст (например, "100 шт." или "Итого: 500"), убедитесь, что тип значения колонки в метаданных или в описании типов таблицы значений соответствует строке. Если ранее колонка была числовой, а затем вы изменили её на строку, старые настройки отображения итогов могли сохраниться "в наследство", что и приводит к конфликту.

Шаг 3. Программная установка значения.
После того как автоматические итоги отключены, ваш код начнет работать корректно. Однако помните о производительности. Посмотрим на оптимизированный пример:


// Вычисляем итог заранее, чтобы не обращаться к методу Итог() внутри цикла
ЗначениеДляПодвала = ДругаяТаблица.Итог("Количество");

Для каждого СтрокаТаблицы из Таблица Цикл
     // Логика заполнения строк
     СтрокаТаблицы.Количество = "Значение " + НомерСтроки;
КонецЦикла;

// Устанавливаем текст один раз после завершения всех операций с данными
ЭлементыФормы.Таблица.Колонки.Количество.ТекстПодвала = Строка(ЗначениеДляПодвала);

Особенности работы в Управляемых формах (8.3)

Хотя в исходном вопросе речь шла об ЭлементыФормы (Обычные формы), современные версии 1С на Управляемых формах работают по несколько иным принципам. В них управление подвалом стало более гибким и декларативным.

Проанализируем основные отличия:

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

Продвинутые приемы оформления подвала

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

Многострочный текст в подвале.
Вы можете выводить в подвал одной колонки сразу несколько показателей, используя символы переноса строки. Это особенно полезно, когда ширина таблицы ограничена.


Текст = "Всего строк: " + Таблица.Количество() + Символы.ПС + "Итого сумма: " + Формат(ИтоговаяСумма, "ЧДЦ=2");
ЭлементыФормы.Таблица.Колонки.ИмяКолонки.ТекстПодвала = Текст;

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


ИтогЗначение = Таблица.Итог("Сумма");
Колонка = ЭлементыФормы.Таблица.Колонки.Сумма;
Колонка.ТекстПодвала = ИтогЗначение;

Если ИтогЗначение < 0 Тогда
    Колонка.ЦветТекстаПодвала = ЦветаСтиля.ОтрицательныйИтог;
Иначе
    Колонка.ЦветТекстаПодвала = ЦветаСтиля.ТекстФормы;
КонецЕсли;

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

Подведем итоги. Если вы столкнулись с тем, что ТекстПодвала очищается:

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

← На главную