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

Отчеты и Аналитика · 9 мин

Как посчитать количество в 1С: все рабочие способы

Как посчитать количество в 1С: через отчёты, группировки, функции запроса СУММА и КОЛИЧЕСТВО. Пошаговые способы для типовых конфигураций и программистов.

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

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

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

Определите, что именно нужно посчитать

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

Для суммы числового поля в запросах применяют функцию СУММА(), для числа записей — КОЛИЧЕСТВО(*), для числа разных значений — КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Поле). В отчётах на СКД эти же функции выбираются в настройках ресурсов. Ошибка на этом этапе — самая частая: пользователь считает число строк вместо суммы количества и получает заведомо неверный итог.

Маршрут решения

Как выбрать способ

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

Способ 1. Штатные отчёты типовой конфигурации

Самый быстрый путь — готовый отчёт. В 1С:Управление торговлей и 1С:ERP остатки и количества смотрят в отчётах «Остатки товаров на складах», «Ведомость по товарам на складах», «Продажи». В 1С:Бухгалтерии количественные данные дают «Оборотно-сальдовая ведомость по счёту» (для счетов с количественным учётом, например 10 и 41) и «Анализ счёта».

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

В ОСВ по счёту количество видно только если для счёта включён количественный учёт в плане счетов и в настройках отчёта отмечен показатель «Количество». Если колонка пустая — проверьте эти два условия, прежде чем считать отчёт неисправным.

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

Способ 2. Подсчёт строк и элементов в списках

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

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

В табличной части документа количество строк видно сразу — обычно в заголовке вкладки или внизу таблицы. Сумму по колонке «Количество» многие документы показывают в итоговой строке автоматически.

Способ 3. Консоль запросов: СУММА и КОЛИЧЕСТВО

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

Пример: суммарное количество товара в проведённых реализациях за период.

ВЫБРАТЬ

СУММА(Товары.Количество) КАК КоличествоИтого

ИЗ

Документ.РеализацияТоваровУслуг.Товары КАК Товары

ГДЕ

Товары.Ссылка.Проведен

И Товары.Ссылка.Дата МЕЖДУ &НачалоПериода И &КонецПериода

Для подсчёта числа записей вместо СУММА используйте КОЛИЧЕСТВО(*), для числа уникальных товаров — КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Товары.Номенклатура). При группировке по полю добавьте конструкцию СГРУППИРОВАТЬ ПО, иначе запрос вернёт один общий итог.

Способ 4. Подсчёт количества в коде на встроенном языке

Разработчику для расчёта внутри обработки или модуля используют объект Запрос. Это быстрее и надёжнее, чем перебор выборки в цикле, особенно на больших объёмах.

Запрос = Новый Запрос;

Запрос.Текст =

"ВЫБРАТЬ

| СУММА(Товары.Количество) КАК КоличествоИтого

|ИЗ

| Документ.РеализацияТоваровУслуг.Товары КАК Товары

|ГДЕ

| Товары.Ссылка = &Ссылка";

Запрос.УстановитьПараметр("Ссылка", ДокументСсылка);

Выборка = Запрос.Выполнить().Выбрать();

Если Выборка.Следующий() Тогда

ИтогКоличество = Выборка.КоличествоИтого;

КонецЕсли;

Для табличной части уже открытого объекта запрос не нужен: сумму считают методом Итог(), например Объект.Товары.Итог("Количество"), а число строк — Объект.Товары.Количество(). На форме для таблицы значений работают те же методы.

Цикл с накоплением (Перем = Перем + Строка.Количество) применяйте только когда к строкам нужна дополнительная логика. Для простого итога он медленнее и порождает лишний код.

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

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

Типичные ошибки
01
Считать КОЛИЧЕСТВО(*) вместо СУММА(Количество) — получается число строк, а не сумма товара
02
Не фильтровать проведённые документы — в итог попадают черновики и помеченные на удаление
03
Сравнивать отчёты за разные периоды или по разным организациям — итоги закономерно не сходятся
04
Использовать остатки регистра без указания границы периода — итог берётся на текущую дату, а не на нужную
05
Путать базовую и учётную единицу измерения — количество в упаковках и штуках отличается кратно
Контрольные точки

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

Период и отборы
Норма

Период, организация и склад совпадают во всех сравниваемых отчётах

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

Периоды различаются хотя бы на день — итоги не сойдутся

Статус документов
Норма

В расчёт включены только проведённые документы

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

В запросе нет условия Проведен — итог завышен

Единицы измерения
Норма

Все строки в одной единице измерения

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

Смешаны штуки и упаковки — сумма бессмысленна

Независимая сверка
Норма

Запрос и штатный отчёт дают одинаковый итог

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

Расхождение — ищите разницу в отборах и видах документов

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

Как посмотреть общее количество товара на складе в 1С?

Откройте отчёт «Остатки товаров на складах» (в УТ, ERP, Комплексной автоматизации) или ОСВ по счёту 41 с показателем «Количество» в 1С:Бухгалтерии. Установите отбор по складу и сформируйте отчёт — итоговая строка покажет суммарное количество.

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

Визуально число строк отображается в заголовке табличной части или внизу таблицы. В коде используйте метод Количество(): Объект.Товары.Количество(). Для суммы по колонке — Объект.Товары.Итог("Количество").

Чем СУММА отличается от КОЛИЧЕСТВО в запросе?

СУММА(Поле) складывает значения числового поля по всем строкам — это итог по количеству товара. КОЛИЧЕСТВО(*) считает число строк, а КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Поле) — число уникальных значений. Подмена одной функции другой — самая частая причина неверных итогов.

Почему в ОСВ по счёту 41 нет колонки «Количество»?

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

Можно ли посчитать количество без прав разработчика?

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

Что делать, если итог запроса не совпадает с отчётом?

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

Итог

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

Сначала определите, что считать: сумму поля, число записей или число уникальных значений. В типовой конфигурации начинайте со штатных отчётов, для нестандартных задач используйте консоль запросов с СУММА и КОЛИЧЕСТВО, в коде — объект Запрос и методы Итог()/Количество(). Результат всегда сверяйте независимым способом с одинаковыми отборами.