Подвал с итогами в таблице формы 1С: где включается и почему не виден
Содержание
Подвал в 1С включается свойством таблицы формы: в конфигураторе откройте форму, выделите таблицу и поставьте флаг Подвал в палитре свойств. Затем у числовой колонки заполните ПутьКДаннымПодвала (например, Объект.Товары.ИтогСумма), а у первой колонки — ТекстПодвала со словом «Итого». После обновления конфигурации базы строка итогов появится под таблицей.
Способов включить подвал три, и выбирают их по ситуации. Своя или снятая с поддержки конфигурация — правят форму прямо в конфигураторе. Типовая на поддержке — делают расширение, чтобы не ломать обновления. Подвал нужен только при определённых условиях — включают его программно в модуле формы. Всё ниже относится к управляемым формам платформы 8.3 и одинаково работает в тонком и веб-клиенте.
Что в 1С называют подвалом
Слово «подвал» в 1С встречается в трёх разных местах. Перепутать их легко, а настраиваются они совсем по-разному.
| Что называют подвалом | Где это видно | Где включается |
|---|---|---|
| Строка итогов под таблицей формы | Табличная часть документа, список, таблица на форме обработки | Свойство таблицы Подвал + свойства колонок |
| Нижний колонтитул печатной формы | Предварительный просмотр и бумага | Параметры страницы или свойство НижнийКолонтитул табличного документа |
| Область «Подвал» в макете | Блок подписей, итогов, «Руководитель / Главный бухгалтер» в счёте, накладной | Область макета, выводится кодом печати |
Чаще всего спрашивают про первое: в табличной части нет строки «Итого», и сумму по колонке приходится считать на калькуляторе. С неё и начнём. Колонтитулы и макеты разобраны отдельным разделом ниже.
Включение подвала таблицы в конфигураторе
Подвал — это свойство самой таблицы, а содержимое подвала задаёт каждая колонка. Один флаг без колонок даёт пустую серую полосу.
Шаги
- Откройте конфигуратор и форму объекта:
Документы → <ваш документ> → Формы → ФормаДокумента. - В дереве элементов слева выделите таблицу, например
Товары. - В палитре свойств (
Alt+Enter) включите флагПодвал. - Выделите колонку с суммой (
ТоварыСумма) и в свойствеПутьКДаннымПодваланажмите кнопку выбора. Платформа сама предложит итоги числовых реквизитов табличной части — выберитеИтогСумма. - Выделите первую видимую колонку (номер строки или номенклатуру) и впишите в
ТекстПодваласлово «Итого:». - Сохраните и обновите конфигурацию базы (
F7), затем запустите режим Предприятия (F5).
Итог табличной части платформа пересчитывает сама: при вводе, копировании и удалении строк сумма в подвале меняется без единой строки кода.
Свойства колонки, которые относятся к подвалу
| Свойство | Что задаёт |
|---|---|
ПутьКДаннымПодвала | Откуда брать значение: итог табличной части или реквизит формы |
ТекстПодвала | Постоянный текст, если путь к данным не задан |
ГоризонтальноеПоложениеВПодвале | Выравнивание: для сумм обычно вправо |
ШрифтПодвала, ЦветТекстаПодвала, ЦветФонаПодвала | Оформление строки итогов |
КартинкаПодвала | Значок в ячейке подвала |
Если у колонки заполнены и путь, и текст, на экране будет значение из пути. Текст подставляйте в те колонки, где числа нет.
Флаг Подвал в свойствах колонки не ищите — его там нет. Колонка только наполняет подвал, а включает его таблица.
Подвал в типовой форме через расширение
Если конфигурация на поддержке, правка формы в основной конфигурации снимет объект с поддержки или потребует разблокировки. Следующее обновление превратится в сравнение и ручное объединение. Расширение решает задачу аккуратнее.
Вариант 1. Свойства заимствованной формы
- В конфигураторе:
Конфигурация → Расширения конфигурации, добавьте новое расширение. - В дереве основной конфигурации найдите документ, правой кнопкой выберите форму и команду
Добавить в расширение. - Откройте заимствованную форму в расширении, выделите таблицу и поставьте флаг
Подвал. - Заполните у колонок
ПутьКДаннымПодвалаиТекстПодвала, как в предыдущем разделе. - Обновите конфигурацию базы данных для расширения и перезапустите сеанс.
Расширения появились в платформе 8.3.6, но надёжно менять свойства заимствованных форм стало удобно на более поздних версиях. На актуальной платформе 8.3.2x этот вариант работает без оговорок.
Вариант 2. Обработчик «После» в модуле формы
Этот способ устойчивее к обновлениям типовой: при смене формы поставщиком ваш код просто отработает после типового.
&НаСервере
&После("ПриСозданииНаСервере")
Процедура Расш1_ПриСозданииНаСервереПосле(Отказ, СтандартнаяОбработка)
Элементы.Товары.Подвал = Истина;
Элементы.ТоварыНоменклатура.ТекстПодвала = "Итого:";
Элементы.ТоварыСумма.ПутьКДаннымПодвала = "Объект.Товары.ИтогСумма";
Элементы.ТоварыСумма.ГоризонтальноеПоложениеВПодвале = ГоризонтальноеПоложениеЭлемента.Право;
КонецПроцедуры
Аннотация &После работает, только если у исходной формы есть обработчик ПриСозданииНаСервере. Если его нет, назначьте собственный обработчик события в свойствах заимствованной формы.
Имена элементов (Товары, ТоварыСумма) берите из дерева элементов вашей формы. В разных документах и релизах они отличаются, а ошибка в имени роняет открытие формы.
Программное управление подвалом и итогами
Видимость подвала меняют свойством Подвал таблицы прямо во время работы. Например, показывать итоги только при включённой опции:
&НаКлиенте
Процедура ПоказыватьИтогиПриИзменении(Элемент)
Элементы.Товары.Подвал = ПоказыватьИтоги;
КонецПроцедуры
Другой частый сценарий — показывать итоги только тем, кому они нужны по работе. Проверку роли делают на сервере при создании формы:
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Элементы.Товары.Подвал = РольДоступна("ПолныеПрава");
КонецПроцедуры
Имя роли подставьте своё: в типовых конфигурациях набор ролей отличается, а несуществующее имя вызовет ошибку при открытии формы.
Итог, который платформа не считает сама
Готовые итоги вида ИтогСумма есть только у числовых реквизитов табличной части объекта. Для таблицы значений на форме, дерева или динамического списка итог считают вручную.
- Создайте реквизит формы, например
ИтогоСуммас типомЧисло. - У колонки укажите
ПутьКДаннымПодвала=ИтогоСумма. - Пересчитывайте его после любых изменений строк.
&НаКлиенте
Процедура ПересчитатьИтог()
ИтогоСумма = 0;
Для Каждого СтрокаТаблицы Из Список Цикл
ИтогоСумма = ИтогоСумма + СтрокаТаблицы.Сумма;
КонецЦикла;
КонецПроцедуры
&НаКлиенте
Процедура СписокСуммаПриИзменении(Элемент)
ПересчитатьИтог();
КонецПроцедуры
&НаКлиенте
Процедура СписокПослеУдаления(Элемент)
ПересчитатьИтог();
КонецПроцедуры
Вызывайте пересчёт и после заполнения таблицы на сервере, иначе при открытии формы в подвале будет ноль.
Для динамического списка итог считают запросом на сервере с тем же отбором, что у списка. На больших журналах это заметно тормозит открытие формы. Пересчитывайте итог по кнопке или при смене отбора, а не на каждую активизацию строки.
Как подвал ведёт себя в тонком и веб-клиенте
Подвал таблицы — часть описания формы, а не настройки клиента. Включённый один раз, он отображается и в тонком клиенте, и в веб-клиенте в браузере. Отдельной настройки «показывать подвал в веб-клиенте» нет.
Разница есть в деталях:
- 🖥️ Тонкий клиент. Подвал прижат к нижнему краю таблицы и не прокручивается вместе со строками. Ширина ячеек подвала повторяет ширину колонок.
- 🌐 Веб-клиент. Выглядит так же, но на узком окне браузера часть колонок уходит за горизонтальную прокрутку. Итог в правой колонке пользователь просто не видит, пока не прокрутит таблицу.
- 🔁 Пересчёт. Итоги табличной части пересчитываются на клиенте без обращения к серверу. Ручной итог, который вы считаете серверной процедурой, добавляет серверный вызов на каждое изменение — в веб-клиенте это особенно заметно.
Для веб-клиента ставьте колонку с суммой ближе к началу таблицы или закрепляйте её: тогда итог виден без прокрутки.
Подвал печатной формы и отчёта
Нижний колонтитул
Колонтитул — это строка внизу каждой печатной страницы: номер страницы, дата печати, имя пользователя. Видно его только в предварительном просмотре и на бумаге, на экране в обычном режиме колонтитул не отображается.
Пользователь включает его сам: в открытом табличном документе откройте параметры страницы, перейдите на вкладку колонтитулов и включите нижний. В коде печати то же самое делает свойство НижнийКолонтитул:
ТабДок.НижнийКолонтитул.Выводить = Истина;
ТабДок.НижнийКолонтитул.ТекстСлева = "Напечатано [&Дата] [&Время]";
ТабДок.НижнийКолонтитул.ТекстСправа = "Страница [&НомерСтраницы] из [&СтраницВсего]";
Область «Подвал» в макете
В макетах типовых печатных форм подписи и итоги обычно лежат в отдельной области, которую код печати выводит последней. Частая беда — подписи уезжают на следующую страницу отдельно от таблицы. Перед выводом проверяют, помещается ли область:
ОбластьПодвал = Макет.ПолучитьОбласть("Подвал");
МассивОбластей = Новый Массив;
МассивОбластей.Добавить(ОбластьПодвал);
Если Не ТабДок.ПроверитьВывод(МассивОбластей) Тогда
ТабДок.ВывестиГоризонтальныйРазделительСтраниц();
КонецЕсли;
ТабДок.Вывести(ОбластьПодвал);
Имя области в вашем макете может быть другим — посмотрите его в конфигураторе, открыв макет и выделив строки снизу.
Итоги в отчёте на СКД
В отчётах подвалом часто называют строку общих итогов. Её включают в настройках варианта отчёта параметром вывода «Расположение общих итогов по вертикали»: значения «Конец» или «Начало и конец» выводят итоговую строку внизу.
Проверка в режиме Предприятия
Изменения в конфигураторе есть, а подвала на экране нет? Проверьте по порядку.
- Конфигурация базы обновлена. Если в заголовке конфигуратора висит признак изменённой конфигурации, правки до базы не дошли. Нажмите
F7. - Расширение активно. В режиме Предприятия откройте
Администрирование → Печатные формы, отчёты и обработки → Расширенияв БСП-конфигурациях и проверьте флаг «Активно» и отсутствие ошибки применения. - Сеанс перезапущен. Расширения и изменённые формы подхватываются при новом входе.
- Колонка не скрыта настройками пользователя. Через
Ещё → Изменить формупосмотрите, видна ли колонка с суммой. Если пользователь её скрыл, ячейка подвала пропала вместе с ней. В том же окне через меню «Ещё» можно вернуть стандартные настройки формы. - Значения в отладчике. Запустите отладку из конфигуратора, поставьте точку останова в
ПриСозданииНаСервереи черезShift+F9вычислитеЭлементы.Товары.ПодвалиЭлементы.ТоварыСумма.ПутьКДаннымПодвала. Так видно, не сбрасывает ли подвал чужой код, выполненный позже вашего.
Обновление конфигурации базы для изменённой формы обычно проходит без монопольного доступа, но если вы правили и структуру данных (реквизиты, табличные части), платформа потребует завершить сеансы. Делайте это вне рабочего времени.