Итог по столбцу в 1С: от выделения ячеек до запроса

· 10 мин

Содержание

Самый быстрый способ сложить суммы колонки в 1С — выделить мышью нужные ячейки в сформированном отчёте: в типовых конфигурациях (БП 3.0, ЗУП 3.1, УТ 11) сумма выделенного сразу появляется в поле над отчётом. Если нужен постоянный итог, его задают в настройках отчёта на СКД, а для разработчика — через Итог() у таблицы или агрегат СУММА в запросе.

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

Где цифрыСпособНужен Конфигуратор
Сформированный отчётВыделить ячейки, смотреть поле суммыНет
Список документов, справочникЕщё → Вывести список → табличный документ или ExcelНет
Отчёт на СКД, нужен итог всегдаРесурсы, группировки, общие итоги в настройкахНет
Нужна своя формула (сумма с НДС, доля)Пользовательское поле в настройках отчётаНет
Табличная часть документаПодвал колонки на формеДа
Обработка, внешний отчётИтог(), СУММА в запросе, ИТОГИДа

Сумма выделенных ячеек в режиме предприятия

Этот способ работает в любом отчёте, который построен на библиотеке стандартных подсистем (БСП). К ним относятся почти все отчёты типовых конфигураций: оборотно-сальдовая ведомость, анализ субконто, универсальный отчёт, отчёты по продажам и зарплате.

Как посчитать

  1. Сформируйте отчёт кнопкой Сформировать.
  2. Зажмите левую кнопку мыши на первой ячейке колонки и протяните до последней.
  3. Чтобы добавить несмежные ячейки, удерживайте Ctrl и щёлкайте по ним по одной.
  4. Посмотрите на поле суммы в верхней части формы отчёта, справа от командной панели.

Рядом с полем суммы есть выпадающий список. В нём можно переключить показатель: сумма, количество ячеек, среднее, минимум, максимум. Среднее и количество удобны, когда надо быстро прикинуть средний чек или число строк без пересчёта вручную.

Если выделить строку итогов вместе с детальными строками, сумма удвоится: итог посчитается дважды. Выделяйте только детальные строки или только итоговые.

Что учитывается при выделении

  • 🔢 Только ячейки с числами. Текстовые ячейки, заголовки и пустые клетки пропускаются.
  • 🧮 Отрицательные значения вычитаются из суммы, а не складываются по модулю.

Если поля суммы нет

Поле суммы не появляется в табличном документе, который открыт сам по себе — например, после команды Вывести список или в старой нетиповой обработке. Тогда выручат два варианта:

  • 📋 Скопируйте выделенные ячейки (Ctrl+C) и вставьте в Excel или LibreOffice — внизу окна таблицы сразу видна сумма.
  • 💾 Сохраните табличный документ в файл .xlsx через кнопку сохранения на панели (дискета) или главное меню формы и сложите колонку формулой =СУММ(D2:D150).

Для пары чисел есть встроенный калькулятор платформы: его вызывают сочетанием Ctrl+F2. Результат из калькулятора можно скопировать и вставить в числовое поле.

Как сложить колонку списка документов или справочника

Динамический список (журнал документов , справочник номенклатуры) сам итоги не показывает. Колонку «Сумма» в журнале счетов или поступлений не выделить так, чтобы программа её сложила.

Выгрузка через «Вывести список»

  1. Откройте список, например журнал поступлений.
  2. Отберите нужное: период, контрагент, организация. Отбор задаётся через поиск или Ещё → Настроить список.
  3. Выберите Ещё → Вывести список.
  4. В открывшемся окне оставьте флажки только у нужных колонок и нажмите ОК.
  5. Платформа сформирует табличный документ. Сохраните его в Excel или скопируйте колонку и сложите там.

Вывести список выгружает строки, которые подходят под текущий отбор. Если отбор по периоду не задан, в сумму попадут документы за все годы. Проверьте отбор до выгрузки.

Когда лучше взять отчёт

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

Что сложитьГде искать в БП 3.0
Сумма поступлений от поставщикаОСВ по счёту 60 или «Анализ субконто» по контрагенту
Выручка за периодОСВ по счёту 90.01
Сумма оплат покупателейОСВ по счёту 62
Начисления сотрудникуОтчёты раздела Зарплата и кадры

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

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

Большинство отчётов в 1С 8.3 построены на системе компоновки данных (СКД). Сумма колонки в таком отчёте — это ресурс. Итог по нему выводится в строках группировок и в общей строке внизу.

Как включить общие итоги

  1. В форме отчёта нажмите Настройки.
  2. Переключите вид настроек на расширенный, если он доступен в этом отчёте.
  3. Проверьте, что в структуре отчёта есть группировка (например, по контрагенту или номенклатуре). Итоги считаются именно по группировкам.
  4. В параметрах вывода найдите расположение общих итогов — внизу, вверху или нигде. Выберите вариант, где итоги выводятся.
  5. Нажмите Закрыть и сформировать.

Если колонка в отчёте числовая, но итога по ней нет, скорее всего, поле не объявлено ресурсом в схеме. Это исправляется только в Конфигураторе или в копии отчёта: в схеме компоновки на вкладке Ресурсы поле добавляют с выражением Сумма(Поле).

Агрегатные функции ресурсов

ФункцияЧто считаетПример
СуммаСложение значенийСумма продаж по клиенту
КоличествоЧисло записейСколько документов
Количество(Различные …)Число уникальных значенийСколько разных покупателей
СреднееСреднее арифметическоеСредняя цена
Максимум, МинимумКрайние значенияСамая крупная отгрузка

Для цены не используйте Сумма: сложенные цены ничего не значат. Цену в итогах считают как Сумма(Сумма) / Сумма(Количество) — то есть средневзвешенную.

Своя формула: пользовательское поле в настройках отчёта

Иногда нужна не готовая колонка, а сумма с расчётом: сумма без НДС, разница между планом и фактом, доля в процентах. Такую колонку бухгалтер собирает сам, без программиста.

Пошагово

  1. Откройте Настройки отчёта и перейдите в расширенный режим.
  2. На вкладке с полями найдите команду добавления нового поля и выберите тип Выражение.
  3. Задайте заголовок, например «Сумма без НДС».
  4. В выражении детальных записей напишите формулу, например [Сумма] - [Сумма НДС]. Поля вставляются из списка доступных, в квадратных скобках.
  5. В выражении итоговых записей укажите агрегат: Сумма([Сумма]) - Сумма([Сумма НДС]).
  6. Добавьте новое поле в выбранные поля отчёта и сформируйте его.

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

Примеры выражений

ЗадачаДетальные записиИтоговые записи
Сумма без НДС[Сумма] - [Сумма НДС]Сумма([Сумма]) - Сумма([Сумма НДС])
Отклонение от плана[Факт] - [План]Сумма([Факт]) - Сумма([План])
Процент выполненияВЫБОР КОГДА [План] = 0 ТОГДА 0 ИНАЧЕ [Факт] / [План] * 100 КОНЕЦто же выражение с Сумма() вокруг полей

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

Проверка деления на ноль через ВЫБОР обязательна. Без неё отчёт упадёт на строке, где план не задан.

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

В документах вроде Реализация (акт, накладная) итог под колонкой «Сумма» уже выводится. Если вы делаете свой документ или дорабатываете форму, подвал настраивают в Конфигураторе.

Настройка подвала в управляемой форме

  1. Откройте форму документа в Конфигураторе.
  2. Выделите элемент-таблицу табличной части и в свойствах включите Подвал.
  3. Выделите колонку, по которой нужен итог.
  4. В свойстве ПутьКДаннымПодвала укажите Объект.Товары.ИтогСумма, где Товары — имя табличной части, Сумма — имя реквизита.
  5. Обновите конфигурацию и откройте документ: под колонкой появится сумма, которая пересчитывается при изменении строк.

Для числовых реквизитов табличной части платформа сама даёт путь к итогу вида ИтогИмяРеквизита. Писать обработчики пересчёта для подвала не нужно.

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

Программный подсчёт суммы колонки: Итог() и запросы

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

Метод Итог() у таблицы значений и табличной части

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

// Сумма колонки таблицы значений
ТЗ = Новый ТаблицаЗначений;
ТЗ.Колонки.Добавить("Номенклатура");
ТЗ.Колонки.Добавить("Сумма", Новый ОписаниеТипов("Число"));

Строка = ТЗ.Добавить();
Строка.Сумма = 1500;
Строка = ТЗ.Добавить();
Строка.Сумма = 2700;

Сообщить("Итого: " + Формат(ТЗ.Итог("Сумма"), "ЧДЦ=2"));
// Итого: 4 200,00

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

Сумма с условием циклом

Итог() складывает всю колонку. Если надо сложить только часть строк, пройдите циклом:

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

Для таблицы значений есть и другой путь: ТЗ.Свернуть("СтавкаНДС", "Сумма") сворачивает строки по ставке и складывает сумму внутри каждой группы. Метод меняет саму таблицу, поэтому при необходимости сворачивайте копию.

Сумма колонки в запросе

Если данные лежат в базе, складывать их на сервере СУБД быстрее, чем тянуть все строки в память:

Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
|    Товары.Номенклатура КАК Номенклатура,
|    ЕСТЬNULL(СУММА(Товары.Сумма), 0) КАК Сумма
|ИЗ
|    Документ.РеализацияТоваровУслуг.Товары КАК Товары
|ГДЕ
|    Товары.Ссылка.Дата МЕЖДУ &Начало И &Конец
|    И Товары.Ссылка.Проведен
|СГРУППИРОВАТЬ ПО
|    Товары.Номенклатура
|ИТОГИ
|    СУММА(Сумма)
|ПО
|    ОБЩИЕ";
Запрос.УстановитьПараметр("Начало", НачалоДня(ДатаНачала));
Запрос.УстановитьПараметр("Конец", КонецДня(ДатаОкончания));

Конструкция ИТОГИ … ПО ОБЩИЕ добавляет в результат строку общего итога. Её удобно обходить через Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам). Если нужна только одна цифра, уберите поле Номенклатура и группировку — запрос вернёт одну строку с суммой.

Текст запроса проще всего проверить в консоли запросов, прежде чем вставлять в модуль.

Почему сумма не сходится и как это исправить

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

Приёмы, которые экономят время

  • 🗂 Сохраните вариант отчёта с нужными колонками и итогами (команда сохранения варианта в меню Ещё формы отчёта), чтобы не настраивать его каждый раз заново.
  • 🔍 Проверяйте сумму вторым способом: выделение в отчёте против ОСВ по счёту. Совпало — цифре можно верить.
  • ⚡ На больших базах считайте итог запросом с группировкой, а не циклом по выборке всех документов: разница во времени заметна уже на десятках тысяч строк.
  • 🧾 Для суммы денег используйте тип Число с 2 знаками после запятой, для количества — с 3. Тогда округление на итоге не преподнесёт сюрпризов.

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

Можно ли сложить колонку прямо в журнале документов?
Нет, динамический список итоги не показывает. Выгрузите его через «Ещё → Вывести список» и сложите колонку в табличном документе или Excel, либо возьмите отчёт, где итог уже есть.
Как узнать количество строк, а не сумму?
Выделите ячейки в отчёте и в выпадающем списке рядом с полем суммы переключите показатель на количество. В запросе используйте агрегат КОЛИЧЕСТВО.
Чем Итог() отличается от СУММА в запросе?
Итог() складывает строки, уже загруженные в память: табличную часть или таблицу значений. СУММА считает на стороне базы данных и возвращает готовый результат, поэтому для больших объёмов она быстрее.
Почему процент в итоговой строке получился больше 100?
Проценты по строкам сложились. В итоговом выражении поля делите сумму факта на сумму плана, а не суммируйте готовые проценты.
Сохранятся ли мои пользовательские поля после обновления?
Да, если они заданы в настройках отчёта или в сохранённом варианте: обновление конфигурации пользовательские варианты не стирает. Правка схемы самого отчёта без расширения при обновлении может потеряться.