К статье
Практический материал

Документы и Печать · 10 мин

Как вывести итоги в печатной форме 1С

Как вывести итоги в печатной форме 1С: настройка макета, итоги по колонкам и группировкам, типовые и внешние печатные формы, типичные ошибки и проверка результата.

Итоги в печатной форме 1С — это суммарные значения по табличной части документа: общая сумма, количество, сумма НДС, итоги по группам товаров. Они выводятся в область макета, которая обычно называется «Подвал», «Итого» или «Всего», и заполняются либо автоматически из данных документа, либо расчётом в модуле менеджера печати.

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

Где в печатной форме живут итоги: структура макета

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

Чтобы посмотреть макет типовой формы, откройте конфигуратор: раздел «Общие» → «Макеты» либо макет внутри конкретного документа или обработки печати. Ячейки с итогами обычно содержат параметры вида ИтогоСумма, ИтогоКоличество, ИтогоНДС — в свойствах ячейки у них установлено «Заполнение: Параметр».

Если в макете области «Подвал» нет вообще, итоги вывести не получится без доработки макета — печатная форма просто не содержит места для них. Это первая вещь, которую стоит проверить.

Вывод итогов в типовой печатной форме без доработок

В типовых конфигурациях (УТ, ERP, Бухгалтерия, Управление нашей фирмой) большинство печатных форм уже содержат итоги. Если их нет на бумаге, сначала проверьте, какой именно вариант формы выбран. Например, у счёта на оплату и ТОРГ-12 могут существовать версии «с НДС» и «без НДС», с колонкой скидок и без — итоговые строки у них различаются.

Порядок проверки: откройте документ, нажмите «Печать» и посмотрите полный список доступных форм. Часто нужный вариант с итогами по группам или с НДС скрыт в дополнительных формах. Также проверьте предпросмотр (кнопка «Предварительный просмотр» или Ctrl+Shift+P в табличном документе) — иногда «нет итогов» означает лишь то, что пользователь смотрит не на последнюю страницу.

Проверка типовой формы
  1. 1
    Откройте документ и нажмите кнопку «Печать»
  2. 2
    Просмотрите все доступные варианты формы, включая дополнительные
  3. 3
    Откройте предпросмотр и пролистайте до конца табличной части
  4. 4
    Убедитесь, что в документе заполнены суммы в табличной части — пустые строки дают нулевые итоги
  5. 5
    Если итогов нет ни в одном варианте — переходите к доработке макета или подключению внешней формы

Как добавить область итогов в собственный макет

Если форма дорабатывается, добавьте итоговую область в макет. Откройте макет в конфигураторе, выделите строки под областью «Строка», затем через меню «Таблица» → «Имена» → «Назначить имя» создайте область «Подвал» (или «Итого»). В ячейках этой области пропишите параметры: например, в ячейке под колонкой «Сумма» укажите [ИтогоСумма], а в свойствах ячейки установите заполнение «Параметр».

Для итогов по группам (например, по видам номенклатуры) добавьте промежуточные области «ИтогГруппы», которые будут выводиться при смене группы в цикле обхода строк. Это стандартный приём для форм с группировкой.

Заполнение итогов в модуле печати

Сам расчёт выполняется в модуле менеджера печати (типовые конфигурации) или в модуле внешней обработки. Логика такая: получаете область, заполняете параметры, выводите в табличный документ. Упрощённый фрагмент выглядит так:

ОбластьПодвал = Макет.ПолучитьОбласть("Подвал");

ОбластьПодвал.Параметры.ИтогоСумма = ТаблицаТоваров.Итог("Сумма");

ОбластьПодвал.Параметры.ИтогоКоличество = ТаблицаТоваров.Итог("Количество");

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

ТабличныйДокумент.Вывести(ОбластьПодвал);

Метод Итог("ИмяКолонки") работает для таблицы значений и табличной части и возвращает сумму по числовой колонке. Если данные берутся запросом, итоги удобнее получить через ИТОГИ в тексте запроса — тогда итоговые значения придут в отдельных строках выборки с типом записи «Общий итог» или по группировкам.

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

Если итог по сумме не сходится с ручным пересчётом, проверьте, не суммируете ли вы колонку «Всего» вместо «Сумма» — в формах с НДС эти колонки различаются, и их подмена даёт расхождение ровно на сумму налога.
ПЗ
Практическое замечание

Итоги во внешних печатных формах

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

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

Способы добавить итоги

Типовая форма

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

Доработка макета конфигурации

Полный контроль над областями и параметрами. Ограничение: требует снятия с поддержки и аккуратности при обновлениях.

Внешняя печатная форма

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

Проверка результата и типичные ошибки

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

Типичные ошибки
01
Ячейке итога не установлено «Заполнение: Параметр» — вместо значения печатается текст «[ИтогоСумма]»
02
Область «Подвал» выводится внутри цикла по строкам — итоги повторяются после каждой строки
03
Метод Итог() применяется к колонке со строковым типом — результат ноль или ошибка
04
Итоги считаются по выборке запроса вместо таблицы значений — промежуточные строки группировок искажают сумму
05
Не обработан случай пустой табличной части — форма падает с ошибкой или выводит пустой подвал
Контрольные точки

Как проверить результат

Итог по сумме
Норма

Равен сумме значений колонки «Сумма» по всем строкам

Тревожный признак

Расходится на сумму НДС или скидки — суммируется не та колонка

Сумма прописью
Норма

Совпадает с числовым итогом, указана валюта

Тревожный признак

Пропись не соответствует цифрам или отсутствует

Пустая табличная часть
Норма

Итоги выводятся как 0 или пусто, ошибок нет

Тревожный признак

Ошибка при формировании или пустая строка без подвала

Многостраничная форма
Норма

Подвал выводится один раз после последней строки

Тревожный признак

Итоги повторяются на каждой странице или после каждой строки

Ограничения и когда нужен разработчик

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

Итог

Что важно запомнить

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

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

Почему в печатной форме вместо итога виден текст «[ИтогоСумма]»?

Ячейка макета содержит шаблон, но её свойству «Заполнение» не присвоено значение «Параметр» или «Шаблон», либо параметр с таким именем не заполняется в коде перед выводом области. Проверьте свойства ячейки в макете и строку заполнения параметров в модуле печати.

Как вывести итоги по каждой странице многостраничной формы?

Стандартного автоматического механизма нет: нужно контролировать высоту выводимых строк (метод ПроверитьВывод табличного документа) и при переходе на новую страницу выводить промежуточную область «ИтогСтраницы», обнуляя накопитель. Это доработка среднего уровня сложности.

Можно ли вывести итоги по группам товаров?

Да. Табличную часть обходят с сортировкой по группе, при смене группы выводят область «ИтогГруппы» с накопленными суммами. Альтернатива — запрос с конструкцией ИТОГИ ПО, тогда итоги групп приходят в выборке автоматически.

Итог по НДС не сходится с суммой НДС по строкам. В чём причина?

Обычно это округление: НДС в строке округляется до копеек, а итог иногда считают от общей базы одним расчётом. Правильно суммировать именно колонку «СуммаНДС» по строкам методом Итог(), тогда итог совпадёт с построчной суммой.

После обновления конфигурации итоги в доработанной форме пропали. Что делать?

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

Как вывести итоговое количество с разными единицами измерения?

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