Подвал с итогами в таблице формы 1С: где включается и почему не виден

· 9 мин

Содержание

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

Способов включить подвал три, и выбирают их по ситуации. Своя или снятая с поддержки конфигурация — правят форму прямо в конфигураторе. Типовая на поддержке — делают расширение, чтобы не ломать обновления. Подвал нужен только при определённых условиях — включают его программно в модуле формы. Всё ниже относится к управляемым формам платформы 8.3 и одинаково работает в тонком и веб-клиенте.

Что в 1С называют подвалом

Слово «подвал» в 1С встречается в трёх разных местах. Перепутать их легко, а настраиваются они совсем по-разному.

Что называют подваломГде это видноГде включается
Строка итогов под таблицей формыТабличная часть документа, список, таблица на форме обработкиСвойство таблицы Подвал + свойства колонок
Нижний колонтитул печатной формыПредварительный просмотр и бумагаПараметры страницы или свойство НижнийКолонтитул табличного документа
Область «Подвал» в макетеБлок подписей, итогов, «Руководитель / Главный бухгалтер» в счёте, накладнойОбласть макета, выводится кодом печати

Чаще всего спрашивают про первое: в табличной части нет строки «Итого», и сумму по колонке приходится считать на калькуляторе. С неё и начнём. Колонтитулы и макеты разобраны отдельным разделом ниже.

Включение подвала таблицы в конфигураторе

Подвал — это свойство самой таблицы, а содержимое подвала задаёт каждая колонка. Один флаг без колонок даёт пустую серую полосу.

Шаги

  1. Откройте конфигуратор и форму объекта: Документы → <ваш документ> → Формы → ФормаДокумента.
  2. В дереве элементов слева выделите таблицу, например Товары.
  3. В палитре свойств (Alt+Enter) включите флаг Подвал.
  4. Выделите колонку с суммой (ТоварыСумма) и в свойстве ПутьКДаннымПодвала нажмите кнопку выбора. Платформа сама предложит итоги числовых реквизитов табличной части — выберите ИтогСумма.
  5. Выделите первую видимую колонку (номер строки или номенклатуру) и впишите в ТекстПодвала слово «Итого:».
  6. Сохраните и обновите конфигурацию базы (F7), затем запустите режим Предприятия (F5).

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

Свойства колонки, которые относятся к подвалу

СвойствоЧто задаёт
ПутьКДаннымПодвалаОткуда брать значение: итог табличной части или реквизит формы
ТекстПодвалаПостоянный текст, если путь к данным не задан
ГоризонтальноеПоложениеВПодвалеВыравнивание: для сумм обычно вправо
ШрифтПодвала, ЦветТекстаПодвала, ЦветФонаПодвалаОформление строки итогов
КартинкаПодвалаЗначок в ячейке подвала

Если у колонки заполнены и путь, и текст, на экране будет значение из пути. Текст подставляйте в те колонки, где числа нет.

Флаг Подвал в свойствах колонки не ищите — его там нет. Колонка только наполняет подвал, а включает его таблица.

Подвал в типовой форме через расширение

Если конфигурация на поддержке, правка формы в основной конфигурации снимет объект с поддержки или потребует разблокировки. Следующее обновление превратится в сравнение и ручное объединение. Расширение решает задачу аккуратнее.

Вариант 1. Свойства заимствованной формы

  1. В конфигураторе: Конфигурация → Расширения конфигурации, добавьте новое расширение.
  2. В дереве основной конфигурации найдите документ, правой кнопкой выберите форму и команду Добавить в расширение.
  3. Откройте заимствованную форму в расширении, выделите таблицу и поставьте флаг Подвал.
  4. Заполните у колонок ПутьКДаннымПодвала и ТекстПодвала, как в предыдущем разделе.
  5. Обновите конфигурацию базы данных для расширения и перезапустите сеанс.

Расширения появились в платформе 8.3.6, но надёжно менять свойства заимствованных форм стало удобно на более поздних версиях. На актуальной платформе 8.3.2x этот вариант работает без оговорок.

Вариант 2. Обработчик «После» в модуле формы

Этот способ устойчивее к обновлениям типовой: при смене формы поставщиком ваш код просто отработает после типового.

&НаСервере
&После("ПриСозданииНаСервере")
Процедура Расш1_ПриСозданииНаСервереПосле(Отказ, СтандартнаяОбработка)
	
	Элементы.Товары.Подвал = Истина;
	Элементы.ТоварыНоменклатура.ТекстПодвала = "Итого:";
	Элементы.ТоварыСумма.ПутьКДаннымПодвала = "Объект.Товары.ИтогСумма";
	Элементы.ТоварыСумма.ГоризонтальноеПоложениеВПодвале = ГоризонтальноеПоложениеЭлемента.Право;
	
КонецПроцедуры

Аннотация &После работает, только если у исходной формы есть обработчик ПриСозданииНаСервере. Если его нет, назначьте собственный обработчик события в свойствах заимствованной формы.

Имена элементов (Товары, ТоварыСумма) берите из дерева элементов вашей формы. В разных документах и релизах они отличаются, а ошибка в имени роняет открытие формы.

Какой способ включения подвала подходит вам?

Программное управление подвалом и итогами

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

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

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

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
	Элементы.Товары.Подвал = РольДоступна("ПолныеПрава");
КонецПроцедуры

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

Итог, который платформа не считает сама

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

  1. Создайте реквизит формы, например ИтогоСумма с типом Число.
  2. У колонки укажите ПутьКДаннымПодвала = ИтогоСумма.
  3. Пересчитывайте его после любых изменений строк.
&НаКлиенте
Процедура ПересчитатьИтог()
	ИтогоСумма = 0;
	Для Каждого СтрокаТаблицы Из Список Цикл
		ИтогоСумма = ИтогоСумма + СтрокаТаблицы.Сумма;
	КонецЦикла;
КонецПроцедуры

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

&НаКлиенте
Процедура СписокПослеУдаления(Элемент)
	ПересчитатьИтог();
КонецПроцедуры

Вызывайте пересчёт и после заполнения таблицы на сервере, иначе при открытии формы в подвале будет ноль.

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

Как подвал ведёт себя в тонком и веб-клиенте

Подвал таблицы — часть описания формы, а не настройки клиента. Включённый один раз, он отображается и в тонком клиенте, и в веб-клиенте в браузере. Отдельной настройки «показывать подвал в веб-клиенте» нет.

Разница есть в деталях:

  • 🖥️ Тонкий клиент. Подвал прижат к нижнему краю таблицы и не прокручивается вместе со строками. Ширина ячеек подвала повторяет ширину колонок.
  • 🌐 Веб-клиент. Выглядит так же, но на узком окне браузера часть колонок уходит за горизонтальную прокрутку. Итог в правой колонке пользователь просто не видит, пока не прокрутит таблицу.
  • 🔁 Пересчёт. Итоги табличной части пересчитываются на клиенте без обращения к серверу. Ручной итог, который вы считаете серверной процедурой, добавляет серверный вызов на каждое изменение — в веб-клиенте это особенно заметно.

Для веб-клиента ставьте колонку с суммой ближе к началу таблицы или закрепляйте её: тогда итог виден без прокрутки.

Подвал печатной формы и отчёта

Нижний колонтитул

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

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

ТабДок.НижнийКолонтитул.Выводить = Истина;
ТабДок.НижнийКолонтитул.ТекстСлева = "Напечатано [&Дата] [&Время]";
ТабДок.НижнийКолонтитул.ТекстСправа = "Страница [&НомерСтраницы] из [&СтраницВсего]";

Область «Подвал» в макете

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

ОбластьПодвал = Макет.ПолучитьОбласть("Подвал");
МассивОбластей = Новый Массив;
МассивОбластей.Добавить(ОбластьПодвал);
Если Не ТабДок.ПроверитьВывод(МассивОбластей) Тогда
	ТабДок.ВывестиГоризонтальныйРазделительСтраниц();
КонецЕсли;
ТабДок.Вывести(ОбластьПодвал);

Имя области в вашем макете может быть другим — посмотрите его в конфигураторе, открыв макет и выделив строки снизу.

Итоги в отчёте на СКД

В отчётах подвалом часто называют строку общих итогов. Её включают в настройках варианта отчёта параметром вывода «Расположение общих итогов по вертикали»: значения «Конец» или «Начало и конец» выводят итоговую строку внизу.

Проверка в режиме Предприятия

Изменения в конфигураторе есть, а подвала на экране нет? Проверьте по порядку.

  1. Конфигурация базы обновлена. Если в заголовке конфигуратора висит признак изменённой конфигурации, правки до базы не дошли. Нажмите F7.
  2. Расширение активно. В режиме Предприятия откройте Администрирование → Печатные формы, отчёты и обработки → Расширения в БСП-конфигурациях и проверьте флаг «Активно» и отсутствие ошибки применения.
  3. Сеанс перезапущен. Расширения и изменённые формы подхватываются при новом входе.
  4. Колонка не скрыта настройками пользователя. Через Ещё → Изменить форму посмотрите, видна ли колонка с суммой. Если пользователь её скрыл, ячейка подвала пропала вместе с ней. В том же окне через меню «Ещё» можно вернуть стандартные настройки формы.
  5. Значения в отладчике. Запустите отладку из конфигуратора, поставьте точку останова в ПриСозданииНаСервере и через Shift+F9 вычислите Элементы.Товары.Подвал и Элементы.ТоварыСумма.ПутьКДаннымПодвала. Так видно, не сбрасывает ли подвал чужой код, выполненный позже вашего.

Обновление конфигурации базы для изменённой формы обычно проходит без монопольного доступа, но если вы правили и структуру данных (реквизиты, табличные части), платформа потребует завершить сеансы. Делайте это вне рабочего времени.

Частые сбои с подвалом

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

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

Можно ли вывести в подвале не сумму, а количество строк?
Да. Заведите числовой реквизит формы, укажите его в ПутьКДаннымПодвала и записывайте в него Объект.Товары.Количество() после каждого изменения строк.
Можно ли сделать два итога в одной колонке?
Нет, у ячейки подвала одно значение. Второй итог выводят в соседней колонке или в отдельном поле под таблицей.
Влияет ли подвал на скорость формы?
Встроенные итоги табличной части почти не нагружают систему. Тормозит ручной расчёт итога динамического списка запросом на большом журнале.
Сохраняется ли подвал после обновления типовой конфигурации?
Если он сделан расширением — да, при условии, что имена элементов формы в новом релизе не поменялись. Правка самой формы на поддержке при обновлении требует ручного объединения.
Можно ли покрасить строку итогов?
Да, у колонок есть свойства ЦветФонаПодвала, ЦветТекстаПодвала и ШрифтПодвала. Задайте их одинаковыми у всех колонок, чтобы строка выглядела цельной.