Подсчет документов в 1С:Предприятие — одна из самых частых задач, с которыми сталкиваются и бухгалтеры, и программисты, и администраторы систем. Нужно ли узнать, сколько счетов-фактур выписано за месяц? Или посчитать количество реализаций по конкретному контрагенту? А может, требуется проверить, сколько документов «Заказ покупателя» осталось не проведенными? В этой статье разберем все возможные способы — от элементарных (доступных любому пользователю) до профессиональных (с использованием языка 1С:Предприятие).
Важно понимать, что метод подсчета зависит от цели: для оперативного контроля подойдут стандартные отчеты, для автоматизации — программный код, а для сложного анализа — запросы с группировками. Мы рассмотрим варианты для всех версий платформы (8.2, 8.3) и популярных конфигураций: 1С:Бухгалтерия, 1С:Управление торговлей, 1С:Зарплата и управление персоналом, 1С:ERP.
Если вы не программист, не пугайтесь терминов вроде «запрос» или «обработка» — мы дадим пошаговые инструкции с картинками и примерами. А для разработчиков приведём готовые коды, которые можно сразу использовать в своих конфигурациях.
1. Подсчет документов через стандартные отчеты 1С
Самый простой способ — воспользоваться встроенными отчетами. Он не требует знаний программирования и доступен любому пользователю с правами на просмотр данных.
В большинстве конфигураций (например, 1С:Бухгалтерия 3.0 или 1С:УТ 11) есть отчет Анализ документов или Журнал документов. Чтобы им воспользоваться:
- 📊 Откройте раздел
Отчетыв главном меню. - 🔍 Выберите
Журнал документовилиАнализ документов(название может отличаться в зависимости от конфигурации). - 📅 Укажите период, тип документа (например, «Реализация товаров и услуг») и при необходимости — дополнительные фильтры (контрагент, организация, ответственный).
- 📈 В результате вы получите таблицу с количеством документов внизу отчета или в сводке.
Преимущество метода: быстро и без риска ошибок. Недостаток — ограниченная гибкость. Например, нельзя посчитать документы по сложному условию (например, «только те, где сумма больше 100 000 руб. и статус «Оплачено»»).
Если в отчете нет колонки с количеством, нажмите правой кнопкой на заголовок таблицы и выберите «Настройки». Добавьте поле «Количество» или «Итоги».
2. Использование журнала документов для оперативного подсчета
Журналы документов — это «живые» списки, которые обновляются в реальном времени. Они удобны, когда нужно быстро посчитать документы по одному типу (например, сколько «Поступлений» было за сегодня).
Инструкция:
- Откройте раздел, где хранится нужный тип документа (например,
Покупки → Поступления (акты, накладные)). - В верхней части окна найдите поле
Периоди установите нужные даты. - Внизу окна будет строка с итогом:
Всего: N документов. - Для детализации нажмите на шестеренку (
Ещё → Настроить список) и добавьте дополнительные колонки (например, «Сумма», «Контрагент»).
Если нужно посчитать документы по конкретному признаку (например, только проведенные), используйте фильтр:
- 🔎 Нажмите
Ещё → Фильтр. - 📌 В поле «Проводка» выберите «Проведен» (или «Не проведен», если нужны черновики).
- 🔢 Количество отфильтрованных документов появится внизу окна.
3. Подсчет документов с помощью запросов (для программистов)
Если стандартных отчетов недостаточно, на помощь приходят запросы на языке 1С. Этот метод требует знаний 1С:Предприятие, но даёт максимальную гибкость. Например, можно посчитать:
- 📄 Количество документов по нескольким типам одновременно (например, «Реализации» + «Возвраты»).
- 📊 Документы с определенными реквизитами (например, где «СуммаДокумента > 50000»).
- 🔄 Динамику по периодам (например, «сколько документов создавалось каждый месяц»).
Пример кода для подсчета всех документов типа РеализацияТоваровУслуг за текущий месяц:
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| COUNT(*) КАК Количество
|ИЗ
| Документ.РеализацияТоваровУслуг КАК Реализация
|ГДЕ
| Реализация.Дата МЕЖДУ &НачалоПериода И &КонецПериода";
Запрос.УстановитьПараметр("НачалоПериода", НачалоМесяца(ТекущаяДата()));
Запрос.УстановитьПараметр("КонецПериода", КонецМесяца(ТекущаяДата()));
Результат = Запрос.Выполнить();
КоличествоДокументов = Результат.Выбрать().Количество;
Для подсчета по нескольким типам документов используйте конструкцию ОБЪЕДИНИТЬ ВСЕ:
Запрос.Текст =
"ВЫБРАТЬ
| '' КАК ТипДокумента,
| COUNT(*) КАК Количество
|ИЗ
| Документ.РеализацияТоваровУслуг КАК Док
|ГДЕ
| Док.Дата МЕЖДУ &НачалоПериода И &КонецПериода
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| '' КАК ТипДокумента,
| COUNT(*) КАК Количество
|ИЗ
| Документ.ПоступлениеТоваровУслуг КАК Док
|ГДЕ
| Док.Дата МЕЖДУ &НачалоПериода И &КонецПериода";
Как посчитать документы с группировкой по контрагентам?
Для группировки добавьте в запрос поле Док.Контрагент и используйте СГРУППИРОВАТЬ ПО:
Запрос.Текст =
"ВЫБРАТЬ
| Док.Контрагент КАК Контрагент,
| COUNT(*) КАК Количество
|ИЗ
| Документ.РеализацияТоваровУслуг КАК Док
|ГДЕ
| Док.Дата МЕЖДУ &НачалоПериода И &КонецПериода
|СГРУППИРОВАТЬ ПО
| Док.Контрагент";
4. Программный подсчет документов (методы объекта)
Для автоматизации (например, в обработках или регламентных заданиях) удобно использовать методы объектов 1С. Это быстрее, чем запросы, если нужно посчитать документы по простым условиям.
Пример кода для подсчета всех непроведенных документов ЗаказПокупателя:
Выборка = Документы.ЗаказПокупателя.Выбрать();
Количество = 0;
Пока Выборка.Следующий() Цикл
Если НЕ Выборка.ЭтотОбъект.Проведен() Тогда
Количество = Количество + 1;
КонецЕсли;
КонецЦикла;
Для подсчета по дате и организации:
Выборка = Документы.РеализацияТоваровУслуг.Выбрать();
Количество = 0;
НачалоПериода = НачалоДня(ТекущаяДата());
КонецПериода = КонецДня(ТекущаяДата());
Организация = Справочники.Организации.НайтиПоНаименованию("ООО Ромашка");
Пока Выборка.Следующий() Цикл
Если Выборка.Дата >= НачалоПериода
И Выборка.Дата <= КонецПериода
И Выборка.Организация = Организация Тогда
Количество = Количество + 1;
КонецЕсли;
КонецЦикла;
🔹 Права пользователя на чтение документов
🔹 Корректность дат (начало/конец периода)
🔹 Существование справочников (например, "Организация")
🔹 Обработку исключений (если документов нет)
-->
5. Подсчет документов через внешние обработки
Если вам часто приходится считать документы по нестандартным критериям, имеет смысл создать внешнюю обработку. Это удобно для повторного использования и для пользователей без доступа к конфигуратору.
Пример обработки для подсчета документов по типам и периодам:
- Создайте новую внешнюю обработку в 1С:Предприятие (меню
Файл → Новый → Внешняя обработка). - Добавьте на форму поля для ввода:
- 📅 Период (начало/конец)
- 📄 Типы документов (многозначное поле со списком)
- 🏢 Организация (необязательно)
Посчитать и поле для вывода результата.Готовые обработки для подсчета документов можно найти на портале Infostart или в каталоге 1С:ИТС (раздел «Дополнения и обработки»). Например, обработка «Универсальный подсчет документов» позволяет гибко настраивать фильтры и выгружать результаты в Excel.
Внешние обработки удобны для пользователей без прав на изменение конфигурации. Они работают в режиме 1С:Предприятие и не требуют перезапуска базы.
6. Подсчет документов в отчетах с помощью СКД (Система Компоновки Данных)
Система Компоновки Данных (СКД) — мощный инструмент для создания гибких отчетов. С её помощью можно не только посчитать документы, но и визуализировать данные в виде диаграмм, сводных таблиц или графиков.
Пример создания отчета в СКД для подсчета документов по месяцам:
- В конфигураторе создайте новый отчет (
Файл → Новый → Отчет). - В конструкторе схемы компоновки данных добавьте набор данных —
Запрос. - Напишите запрос (аналогично примеру из раздела 3), но с группировкой по месяцам:
ВЫБРАТЬМЕСЯЦ(Док.Дата) КАК Месяц,
COUNT(*) КАК Количество
ИЗ
Документ.РеализацияТоваровУслуг КАК Док
ГДЕ
Док.Дата МЕЖДУ &НачалоПериода И &КонецПериода
СГРУППИРОВАТЬ ПО
МЕСЯЦ(Док.Дата)
- В настройках отчета добавьте параметры
НачалоПериодаиКонецПериода. - На закладке
Настройкивыберите тип диаграммы (например, гистограмма). - 📊 Гибкая настройка внешнего вида отчета (группировки, сортировки, условное оформление).
- 📥 Экспорт в Excel, PDF, HTML.
- 🔄 Возможность сохранять настройки пользователя.
- 📂 Название документов (например, в 1С:ERP вместо «Реализация» может быть «Заказ клиента» + «Реализация»).
- 🔧 Доступные реквизиты для фильтрации (например, в 1С:ЗУП важны поля «Сотрудник», «Подразделение»).
- 📈 Стандартные отчеты (в 1С:УТ есть отчет «Анализ продаж», где можно посчитать документы по номенклатуре).
- 🔐 Права пользователя на чтение документов (раздел
Администрирование → Пользователи). - 📌 Роли, назначенные пользователю (например, роль «Бухгалтер» может не видеть документы других организаций).
- 🛠 Проверьте индексы на полях, используемых в условиях (
Дата,Ссылка). - 📉 Упростите запрос: разбейте на несколько простых или используйте временные таблицы.
- 🕒 Ограничьте период (например, вместо «за весь год» берите «за квартал»).
- Добавьте индексы на поля, используемые в условиях.
- Используйте временные таблицы для сложных выборок.
- Ограничьте количество возвращаемых полей (берите только
COUNT(*)или нужные реквизиты).
Преимущества СКД:
Чтобы ускорить работу отчета, добавьте в запрос индексируемые поля (например, Дата или Ссылка).
7. Особенности подсчета в разных конфигурациях 1С
В зависимости от конфигурации (1С:Бухгалтерия, 1С:УТ, 1С:ЗУП и др.) могут отличаться:
В таблице ниже — примеры типичных документов и полей для фильтрации в популярных конфигурациях:
| Конфигурация | Типичные документы | Поля для фильтрации | Стандартный отчет для подсчета |
|---|---|---|---|
| 1С:Бухгалтерия 3.0 | Счет-фактура, Поступление (акты, накладные), Платежное поручение | Контрагент, Организация, СтатьяДвиженияДенежныхСредств | Журнал документов, Анализ счетов-фактур |
| 1С:Управление торговлей 11 | Реализация, Заказ покупателя, Возврат от покупателя | Склад, Номенклатура, Менеджер | Анализ продаж, Ведомость по товарам |
| 1С:Зарплата и управление персоналом | Начисление зарплаты, Больничный лист, Приказ о приеме | Сотрудник, Подразделение, Вид начисления | Анализ зарплаты, Кадровый учет |
| 1С:ERP 2.0 | Заказ клиента, Производственный заказ, Акт выполненных работ | Проект, Бизнес-процесс, Статья затрат | Монитор бизнес-процессов, Анализ продаж |
В 1С:ERP для подсчета документов по бизнес-процессам используйте отчет «Монитор бизнес-процессов» — он показывает количество документов на каждом этапе.
8. Частые ошибки и как их избежать
При подсчете документов в 1С легко допустить ошибки, которые приведут к некорректным данным. Рассмотрим типичные проблемы и способы их решения.
Ошибка 1: Неучтенные права доступа
Если запрос или обработка возвращает меньше документов, чем есть на самом деле, проверьте:
Ошибка 2: Неправильный период
Часто забывают учесть время в датах. Например, если указать Дата = ТекущаяДата(), то документы, созданные после полуночи, не попадут в выборку. Правильно:
Дата МЕЖДУ НачалоДня(ТекущаяДата()) И КонецДня(ТекущаяДата())
Ошибка 3: Игнорирование помеченных на удаление
По умолчанию запросы не возвращают помеченные на удаление документы. Если они нужны, добавьте условие:
ГДЕ НЕ Док.ПометкаУдаления
или (если нужны все, включая удаленные):
ГДЕ ИСТИНА
Ошибка 4: Долгая работа запроса
Если запрос выполняется больше 30 секунд:
Всегда тестируйте запросы на небольшом периоде данных, прежде чем запускать их на больших объемах.
⚠️ Внимание: В некоторых конфигурациях (например, 1С:УТ 10.3) есть ограничения на количество строк в результате запроса. Если документов больше 100 000, используйте постраничную выборку или обработку данными пакетами.
⚠️ Внимание: При подсчете документов в распределенных базах (например, 1С:РАРУС) учитывайте, что данные могут быть разнесены по нескольким узлам. В этом случае используйте специальные функции для работы с распределенными информационными базами.
FAQ: Ответы на частые вопросы
Как посчитать документы в 1С, если нет прав на конфигуратор?
Используйте стандартные отчеты или журналы документов (раздел 1 или 2 этой статьи). Если нужна гибкость, попросите администратора установить внешнюю обработку для подсчета (раздел 5).
Можно ли посчитать документы по нескольким организациям одновременно?
Да. В запросе или фильтре журнала документов укажите нужные организации через запятую или используйте условие Док.Организация В (&СписокОрганизаций), где &СписокОрганизаций — массив ссылок на организации.
Как экспортировать результаты подсчета в Excel?
В стандартных отчетах нажмите Ещё → Выгрузить и выберите формат Excel. Для программного экспорта используйте объект ЗаписьXML или ТабличныйДокумент.Записать():
Таблица = Новый ТабличныйДокумент;
Таблица.Вывести(РезультатЗапроса);
Таблица.Записать("C:\Отчет.xlsx", ТипФайлаТабличногоДокумента.XLSX);
Почему запрос считает документы дольше, чем журнал?
Журналы документов используют предварительно подготовленные данные (кешируют итоги), а запросы обрабатывают «сырые» данные из базы. Для ускорения запросов:
Как посчитать документы в 1С:УНФ (Упрощенка)?
В 1С:Упрощенка используйте отчет Журнал операций или Журнал документов. Для программного подсчета подходят те же методы, что и для других конфигураций, но учитывайте, что в УНФ нет некоторых реквизитов (например, «Склад» или «Менеджер»).