Подвал в табличном документе, форме и веб-клиенте 1С

· 9 мин

Содержание

Подвал в 1С делают тремя разными способами, и выбор зависит от того, где он нужен. В печатной форме это либо нижний колонтитул табличного документа (повторяется на каждом листе при печати), либо отдельная область макета с итогами и подписями, которую выводят один раз в самом конце. В управляемой форме подвал — это группа элементов внизу экрана. В веб-клиенте — блок с CSS-позиционированием внутри поля HTML.

Колонтитул настраивают в редакторе макета или кодом через свойство КолонтитулНижний. Область-подвал рисуют в макете и выводят методом Вывести. Разберём каждый сценарий отдельно: от печатных форм до HTML-страницы.

Термины я использую общие для платформы 8.3 с интерфейсом «Такси». Пути к объектам метаданных одинаковы во всех типовых конфигурациях — макеты и формы лежат в дереве конфигурации в Конфигураторе.

Область итогов и подписей в макете печатной формы

Классический подвал печатного документа — это строка итогов, реквизиты организации и места для подписей («Руководитель», «Главный бухгалтер»). Делается он как отдельная горизонтальная область табличного макета.

Порядок действий в Конфигураторе:

  1. Откройте макет печатной формы (тип макета — Табличный документ).
  2. Выделите диапазон строк внизу макета, где будут итоги и подписи.
  3. Вызовите назначение имени области: главное меню Таблица → Имена → Назначить имя…, задайте имя латиницей или кириллицей, например Подвал.
  4. В ячейках оформите нужное: текст «Итого:», поля для суммы прописью, строки подписей.
  5. Значения, которые приходят из кода, задайте как параметры: выделите ячейку, в палитре свойств смените Заполнение на Параметр и впишите имя параметра.

Вывод области в код печати идёт после «шапки» и строк таблицы — подвал выводится последним:

Макет = Документы.РеализацияТоваровУслуг.ПолучитьМакет("Печать");
ТабДок = Новый ТабличныйДокумент;

// ... вывод шапки и строк ...

ОбластьПодвал = Макет.ПолучитьОбласть("Подвал");
ОбластьПодвал.Параметры.Руководитель = "Иванов И. И.";
ОбластьПодвал.Параметры.ИтогоСумма = ИтогоДокумента;
ТабДок.Вывести(ОбластьПодвал);

ТабДок.Показать();

Имя параметра в коде (ОбластьПодвал.Параметры.Руководитель) должно буква в букву совпадать с именем параметра, заданным в ячейке макета. Иначе присвоение упадёт с ошибкой «Поле объекта не обнаружено».

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

ОбластьПодвал.Параметры.СуммаПрописью = РаботаСДенежнымиСуммами.СформироватьСуммуПрописью(
    ИтогоСумма, "рубль, рубля, рублей, м, копейка, копейки, копеек, ж, 2");

Точное имя функции зависит от конфигурации, поэтому проверьте его в общих модулях своей базы. Строки подписей («Руководитель ____», «Главный бухгалтер ____») удобно собрать из объединённых ячеек с нижней границей — так подчёркивание ляжет ровно под именем.

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

Нижний колонтитул: страницы, дата и реквизиты на каждом листе

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

Текст нижнего колонтитула делится на три зоны — левую, центральную и правую. В них подставляют как обычный текст, так и служебные поля: номер страницы, общее число страниц, дату и время. Поля вставляются кнопками в диалоге колонтитулов (Таблица → Колонтитулы… при открытом табличном документе), а не набираются вручную — иначе вместо номера напечатается сам текст.

Программно колонтитул включают так:

ТабДок.КолонтитулНижний.Отображать = Истина;
ТабДок.КолонтитулНижний.ТекстПоЦентру = "ООО «Ромашка», ИНН 7701234567";

Если колонтитула не видно в обычном режиме — это нормально. Чтобы его проверить, откройте предварительный просмотр перед печатью (Файл → Предварительный просмотр). На экране табличный документ колонтитулы не показывает.

Когда нужны именно номера страниц («стр. 1 из 3»), вставьте поля номера и количества страниц через диалог колонтитулов. Так платформа сама пересчитает их при печати многостраничного документа.

Сравнение двух подходов:

Что нужноОбласть-подвал в макетеНижний колонтитул
Итоги, подписи, реквизиты в концеданет
Повтор на каждой страниценетда
Номер страницы, дата печатинеудобнода
Настройкав редакторе макетасвойство документа или диалог

Как собрать подвал программно: итоги и количество строк

Динамическая нижняя часть отчёта — это подвал, который заполняется расчётными значениями: сумма по колонке, число выведенных строк, остаток. Логика простая: накапливаем итоги в переменных при выводе строк, затем передаём их в параметры подвала.

ИтогоСумма = 0;
КоличествоСтрок = 0;

Для Каждого СтрокаТЧ Из Объект.Товары Цикл
    ОбластьСтрока = Макет.ПолучитьОбласть("Строка");
    ОбластьСтрока.Параметры.Заполнить(СтрокаТЧ);
    ТабДок.Вывести(ОбластьСтрока);

    ИтогоСумма = ИтогоСумма + СтрокаТЧ.Сумма;
    КоличествоСтрок = КоличествоСтрок + 1;
КонецЦикла;

ОбластьПодвал = Макет.ПолучитьОбласть("Подвал");
ОбластьПодвал.Параметры.ИтогоСумма = ИтогоСумма;
ОбластьПодвал.Параметры.КоличествоСтрок = КоличествоСтрок;
ТабДок.Вывести(ОбластьПодвал);

Число склеивать с текстом в лоб не стоит — для аккуратного вывода используйте Формат:

ОбластьПодвал.Параметры.ВсегоСтрок = СтрШаблон(
    "Всего строк: %1", Формат(КоличествоСтрок, "ЧГ=0"));

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

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

Подвал в управляемой форме

В управляемой форме «подвал» — это нижняя группа элементов: строка с итогами, статус, служебные кнопки. Жёстко прибить элемент к низу формы, как в вебе, платформа не даёт — форма располагает элементы потоком сверху вниз. Поэтому подвалом становится последняя группа в дереве элементов.

Как сделать:

  1. В редакторе формы добавьте в конец дерева элементов обычную группу (Добавить → Группа — обычная группа).
  2. Для группы задайте горизонтальную группировку, чтобы элементы встали в строку.
  3. Внутрь положите нужное: надпись-декорацию с итогом, реквизит формы для суммы, кнопки.
  4. Чтобы группа прижималась к низу, у вышестоящей таблицы или списка включите растяжение по вертикали — тогда свободное место заберёт она, а группа останется внизу.

Для итоговой суммы заведите реквизит формы (например, ИтогоПоДокументу) и пересчитывайте его в обработчике изменения табличной части:

&НаКлиенте
Процедура ТоварыПриИзменении(Элемент)
    ПересчитатьИтог();
КонецПроцедуры

&НаКлиенте
Процедура ПересчитатьИтог()
    Сумма = 0;
    Для Каждого Строка Из Объект.Товары Цикл
        Сумма = Сумма + Строка.Сумма;
    КонецЦикла;
    ИтогоПоДокументу = Сумма;
КонецПроцедуры

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

Для форм списков и отчётов в нижнюю группу часто выносят итоговую строку и кнопку печати подвала. Надпись с итогом свяжите с реквизитом формы, а не вписывайте значение статически — тогда при пересчёте строка обновится сама. Высоту группы не фиксируйте жёстко: пусть платформа подбирает её под содержимое, иначе на разных масштабах интерфейса подвал будет обрезать текст.

Подвал для веб-клиента: поле HTML и стили CSS

Когда страница показывается через поле HTML документа на форме или формируется для публикации, подвал делают средствами HTML и CSS. Это единственный из сценариев, где работает классический «прилипающий» футер.

Поле HTML на форме связывают с реквизитом типа Строка, в который кладут готовую разметку:

<html>
<head>
<meta charset="utf-8">
<style>
  body { margin: 0; padding-bottom: 48px; font-family: sans-serif; }
  .podval {
    position: fixed; left: 0; right: 0; bottom: 0;
    height: 32px; line-height: 32px;
    padding: 0 16px;
    background: #f5f5f5; border-top: 1px solid #ccc;
    font-size: 12px; text-align: center;
  }
</style>
</head>
<body>
  <!-- основное содержимое -->
  <div class="podval">ООО «Ромашка» · ИНН 7701234567</div>
</body>
</html>

Ключевые моменты:

  • 🔹 position: fixed; bottom: 0 прижимает подвал к низу области просмотра.
  • 🔹 padding-bottom у body равен высоте подвала — иначе футер перекроет последние строки текста.
  • 🔹 Кодировку задавайте utf-8, иначе кириллица в подвале превратится в «кракозябры».

Строку с разметкой присваивают реквизиту формы в коде:

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    СтраницаHTML = СформироватьHTML(); // функция собирает текст выше
КонецПроцедуры

Для печати или отправки по почте HTML-страницы в конфигурации заводят макет типа HTML-документ. В него помещают готовую разметку с тем же CSS-подвалом, а параметры подставляют в коде перед выводом.

Частые ошибки при создании подвала

Короткий разбор типовых проблем и что с ними делать:

Диагностика: выберите симптом

Что ускорит работу и убережёт макет

Несколько приёмов, которые экономят время при частых правках печатных форм:

  • Выносите подвал в отдельную именованную область даже для простых форм — так проще переиспользовать и править, не трогая остальной макет.
  • Для отчётов считайте итоги средствами СКД (закладка Итоги), а не кодом: схема пересчитает их сама при любом наборе данных.
  • Если подпись и реквизиты одинаковы в нескольких печатных формах, держите подвал в общем макете и получайте его через ПолучитьОбщийМакет("ПодвалОрганизации"). Правка в одном месте применится везде.
  • Не хардкодьте реквизиты организации в макет — передавайте их параметрами, иначе при смене ИНН или названия придётся править каждый макет вручную.
  • Правки типовых печатных форм выносите в расширение конфигурации (появились в 8.3.6), а не меняйте типовой макет напрямую — так обновление конфигурации не затрёт вашу доработку.

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

Частые вопросы

Чем подвал отличается от колонтитула?
Подвал — это область макета с итогами и подписями, которая выводится один раз в конце документа. Нижний колонтитул повторяется внизу каждой печатной страницы и обычно содержит номер листа, дату и реквизиты. Их можно использовать вместе.
Как добавить номер страницы в подвал?
Через нижний колонтитул: откройте диалог Таблица → Колонтитулы… и вставьте поле номера страницы кнопкой. В области-подвале макета номера страниц недоступны — она не знает о разбивке на листы.
Почему подвал не прижимается к низу управляемой формы?
Платформа располагает элементы потоком и не фиксирует их у края. Чтобы нижняя группа осталась внизу, включите растяжение по вертикали у таблицы или списка над ней — свободное место заберёт она.
Можно ли сделать подвал одинаковым для всех печатных форм?
Да. Создайте общий макет с подвалом и получайте его в коде методом ПолучитьОбщийМакет. Тогда правка реквизитов или подписей в одном месте применится ко всем формам.
Как не потерять доработку подвала при обновлении конфигурации?
Выносите изменения типовых макетов в расширение конфигурации. Обновление типовой конфигурации не затрагивает объекты расширения, и ваш подвал останется на месте.