Разработка и Конфигурация · 10 мин
Как сделать подвал в табличной части 1С
Как вывести подвал с итогами в табличной части 1С 8.3: настройка свойства Footer, расчёт итогов по колонкам, типичные ошибки и решения для формы документа.
Табличная часть документа в 1С:Предприятие 8.3 по умолчанию не показывает итоги: пользователь видит список строк, но сумму по колонке «Количество» или «Сумма» приходится считать в уме или искать в отдельных полях формы. Подвал (footer) таблицы решает эту задачу — внизу списка выводится строка с итоговыми значениями по выбранным колонкам, которая пересчитывается автоматически при изменении строк.
Настройка подвала выполняется в конфигураторе через свойства элемента формы «Таблица» и занимает несколько минут, если понимать, какие свойства за что отвечают. Сложности обычно возникают из-за режима управляемой формы: часть привычных по обычным формам приёмов там работает иначе, а итоги по вычисляемым колонкам требуют программного заполнения.
Материал ориентирован на разработчиков и внедренцев, которые дорабатывают формы документов и справочников в управляемом приложении. Все действия описаны для конфигуратора 1С:Предприятие 8.3; в типовых конфигурациях перед изменением формы убедитесь, что доработка не нарушит поддержку обновлений.
Что такое подвал таблицы и когда он нужен
Подвал — это закреплённая строка внизу таблицы формы, в которой отображаются итоговые или поясняющие значения по колонкам. Платформа умеет автоматически суммировать числовые реквизиты табличной части, поэтому для типовой задачи «показать общую сумму и количество» не требуется писать код.
Подвал уместен, когда пользователь работает с документом интерактивно: подбирает товары, меняет цены и количество — и должен сразу видеть итог. Если итог уже выведен отдельным полем на форме (например, «Всего» в шапке), подвал дублирует информацию, но часто удобнее, потому что находится непосредственно под данными.
Включение подвала в конфигураторе
Откройте конфигуратор, найдите нужный документ, перейдите на закладку «Формы» и откройте форму документа. В дереве элементов формы выделите таблицу, связанную с табличной частью (обычно она называется по имени табличной части, например «Товары»).
В палитре свойств найдите свойство «Подвал» и установите значение «Истина». После этого у каждой колонки таблицы становятся актуальными свойства, связанные с подвалом: «Текст подвала», «ПутьКДаннымПодвала», «ФорматПодвала». Сохраните конфигурацию и откройте форму в режиме предприятия, чтобы увидеть результат.
- 1Откройте форму документа в конфигураторе
- 2Выделите элемент «Таблица», связанный с табличной частью
- 3Установите свойство «Подвал» = Истина
- 4Для нужных колонок задайте «Текст подвала» или путь к данным итога
- 5Обновите конфигурацию базы данных и проверьте форму в режиме предприятия
Если свойство «Подвал» включено, но строка итогов не видна, проверьте высоту таблицы и наличие полосы прокрутки: при маленькой высоте элемента подвал может визуально сливаться с последней строкой. Также убедитесь, что не переопределено условное оформление, скрывающее строку итогов.
Настройка итогов по колонкам
Для числовых реквизитов табличной части платформа может рассчитать итог автоматически. У колонки (например, «Сумма») в свойстве «ПутьКДаннымПодвала» укажите тот же реквизит, что и в «ПутьКДанным» колонки, — в подвале отобразится сумма по всем строкам. Для нечисловых колонок в «Текст подвала» можно вывести поясняющую надпись, например «Итого:» в колонке «Номенклатура».
Формат вывода итога задаётся свойством «ФорматПодвала». Если не задать формат, сумма может выводиться с количеством знаков после запятой, отличным от основных ячеек, что выглядит неаккуратно. Обычно формат подвала делают таким же, как формат самой колонки, например «ЧДЦ=2» для денежных сумм.
Итог по вычисляемой колонке
Если колонка формируется программно (например, «Сумма со скидкой» рассчитывается в обработчиках), создайте реквизит формы числового типа, укажите его в «ПутьКДаннымПодвала» колонки и пересчитывайте значение в обработчиках «ПриИзменении» строк табличной части и «ПослеУдаления». Иначе итог будет устаревать после редактирования строк.
Программное управление подвалом
Иногда подвал нужно включать динамически — например, показывать итоги только при определённом виде операции. Это делается кодом в обработчике «ПриСозданииНаСервере» или при изменении условий через обращение к элементу формы.
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Элементы.Товары.Подвал = Истина;
Элементы.ТоварыСумма.ТекстПодвала = "";
КонецПроцедуры
&НаКлиенте
Процедура ПересчитатьИтог()
Итог = 0;
Для Каждого Строка Из Объект.Товары Цикл
Итог = Итог + Строка.СуммаСоСкидкой;
КонецЦикла;
ИтогСуммаСоСкидкой = Итог; // реквизит формы, привязанный к подвалу
КонецПроцедурыПри программном пересчёте следите за производительностью: обход табличной части в цикле на клиенте при тысячах строк может заметно «подвешивать» форму. Для больших таблиц пересчёт лучше выполнять на сервере или обновлять итог инкрементально — прибавлять и вычитать значение изменённой строки вместо полного обхода.
Подвал в обычных формах и динамических списках
В обычных формах (режим обычного приложения) подвал табличного поля включается аналогично — свойством «Подвал» у элемента «ТабличноеПоле», а итоги задаются через «ДанныеПодвала» колонок. Если вы поддерживаете старую конфигурацию на обычных формах, логика та же, но названия свойств отличаются.
Для динамических списков автоматический итог по колонке недоступен: платформа не суммирует произвольный запрос. Если нужен итог по списку, его рассчитывают отдельным запросом с итогами и выводят в реквизит формы, привязанный к подвалу, или используют отчёт на СКД вместо списка.
Сравнение вариантов вывода итогов
Подходит для табличных частей документов; итоги по реквизитам считаются автоматически. Ограничение: не работает для динамических списков.
Подходит, когда итог один-два и его нужно видеть всегда, даже при прокрутке. Требует программного пересчёта.
Подходит для аналитики по многим документам. Избыточен для оперативной работы внутри одного документа.
Частые ошибки и их устранение
Самая распространённая проблема — подвал включён, но ячейки пустые. Причина почти всегда в том, что у колонки не заполнен ни «Текст подвала», ни «ПутьКДаннымПодвала»: включение подвала у таблицы само по себе не выводит итоги, их нужно настроить для каждой колонки отдельно.
Вторая типовая ситуация — итог не пересчитывается после редактирования строки. Это признак того, что колонка вычисляемая, а обработчики «ПриИзменении» и «ПослеУдаления» не обновляют реквизит итога. Проверьте также, что обработчики назначены именно таблице формы, а не только полю ввода колонки.
Проверка результата
После настройки откройте документ в режиме предприятия и выполните контрольный сценарий: добавьте две-три строки с известными значениями, измените количество в одной из них, удалите строку. Итог в подвале должен корректно меняться на каждом шаге. Сверьте значение с ручным подсчётом — расхождение указывает на ошибку в пути к данным или в логике пересчёта.
Как проверить результат
Подвал виден сразу при открытии формы
Подвала нет — проверьте свойство «Подвал» у таблицы
Равен сумме значений всех строк
Пусто или отличается — проверьте «ПутьКДаннымПодвала»
Итог пересчитывается сразу после редактирования
Итог устарел — нет пересчёта в обработчиках
Число знаков после запятой совпадает с колонкой
Лишние или обрезанные цифры — задайте «ФорматПодвала»
Если в табличной части есть группировка или иерархия, автоматический итог в подвале считается по всем строкам без учёта свёрнутых групп. Для итогов по группам используйте дерево значений с собственным расчётом или выводите итоги групп в отдельных строках.
Частые вопросы
Почему подвал включён, но итоги не отображаются?
Свойство «Подвал» у таблицы только показывает строку итогов. Содержимое каждой ячейки задаётся отдельно: у колонки должен быть заполнен «Текст подвала» или «ПутьКДаннымПодвала». Проверьте эти свойства у нужных колонок.
Можно ли вывести в подвале количество строк, а не сумму?
Да. Создайте реквизит формы, привяжите его к «ПутьКДаннымПодвала» колонки и присваивайте ему значение Объект.Товары.Количество() в обработчиках изменения табличной части. Автоматического счётчика строк у подвала нет.
Работает ли подвал у динамического списка?
Сама строка подвала отображается, но автоматический итог по колонке платформа для динамического списка не рассчитывает. Итог нужно получать отдельным запросом и выводить через реквизит формы, либо использовать отчёт на СКД.
Как изменить подвал без правки типовой конфигурации?
Используйте расширение конфигурации: заимствуйте форму документа в расширение, включите подвал и настройте колонки там. Типовая конфигурация останется на поддержке, а обновления не будут конфликтовать с доработкой.
Итог выводится с большим числом знаков после запятой. Что делать?
Задайте у колонки свойство «ФорматПодвала», например «ЧДЦ=2» для сумм. Без явного формата платформа выводит значение с точностью реквизита, которая может отличаться от отображаемой в строках.
Пересчёт итога тормозит при большом числе строк. Как ускорить?
Откажитесь от полного обхода таблицы при каждом изменении: храните итог и корректируйте его на разницу между старым и новым значением строки. Для очень больших таблиц выполняйте пересчёт на сервере.
Что важно запомнить
Подвал табличной части включается свойством «Подвал» у таблицы формы, а итоги настраиваются для каждой колонки через «Текст подвала» и «ПутьКДаннымПодвала». Числовые реквизиты суммируются автоматически, вычисляемые колонки требуют программного пересчёта. Для типовых конфигураций доработку безопаснее выполнять через расширение.