Работа с большими объёмами данных в 1С:Предприятие часто требует точного учёта количества документов — будь то для отчётности, аудита или оптимизации базы. Но как быстро получить эту информацию, не пересчитывая каждый документ вручную? В зависимости от задачи и конфигурации (1С:Бухгалтерия, УТ 11, ЗУП 3.1 или кастомизированные решения) способы могут кардинально отличаться.
Новичкам кажется, что достаточно открыть журнал документов и посмотреть на счётчик внизу окна. Однако этот метод работает не всегда: в некоторых конфигурациях отображается только количество строк на текущей странице, а не общий объём. К тому же, если документы распределены по периодам или типам, стандартный интерфейс не даст полной картины. Далее разберём 5 надёжных методов — от простых до продвинутых, включая запросы на языке 1С и внешние обработки.
Для программистов и администраторов важно понимать: количество документов в базе не равно количеству записей в таблицах SQL. Например, один документ ПоступлениеТоваровУслуг может порождать десятки записей в регистрах накопления. Поэтому методы подсчёта нужно выбирать исходя из цели: нужна ли вам статистика по видам документов, по периодам или общий объём данных для оценки производительности сервера.
Если вы работаете с облачной версией 1С (например, 1С:Fresh), некоторые способы могут быть ограничены правами доступа. В этом случае обратите внимание на раздел про отчёты с предопределёнными настройками — они часто доступны даже пользователям без прав на конфигуратор.
1. Стандартные отчёты 1С: быстрый подсчёт без программирования
Самый простой способ — использовать встроенные отчёты конфигурации. Почти все типовые решения (1С:Бухгалтерия 3.0, Управление торговлей 11, Зарплата и управление персоналом 3.1) содержат отчёты по документам, где можно посчитать их количество по периодам, организациям или видам.
Например, в 1С:Бухгалтерии перейдите в раздел Отчёты → Стандартные отчёты → Анализ документов. Здесь выберите нужный вид документа (например, Счёт-фактура выданный) и установите период. В результате отобразится таблица с количеством документов по датам или контрагентам.
- 📊 Преимущества: не требует прав администратора, работает в пользовательском режиме, визуализирует данные в виде диаграмм.
- ⚠️ Ограничения: не показывает скрытые или помеченные на удаление документы, может не учитывать документы в непроведённом состоянии.
- 🔧 Настройка: в большинстве отчётов можно добавить группировку по организациям, ответственным лицам или статусам.
В 1С:Управление торговлей 11 аналогичный функционал доступен через Отчёты → Продажи → Анализ документов продаж. Здесь можно отдельно посчитать количество заказов клиентов, реализаций или возвратов. Если нужна детализация по складам или менеджерам, используйте настройки группировки в панели справа.
⚠️ Внимание: В облачных версиях 1С (например, 1С:Fresh) некоторые стандартные отчёты могут быть упрощены или отсутствовать. Проверьте доступные разделы в вашем тарифе.
2. Журналы документов: счётчик внизу окна и фильтры
Каждый вид документа в 1С имеет свой журнал, где отображаются все экземпляры. Внизу окна журнала обычно есть строка состояния с количеством документов. Например, в журнале Банковские выписки вы увидите фразу типа: "Документов: 452". Но здесь есть нюансы:
- 🔍 Если документов больше 1000, 1С может не показывать точное количество, а писать
"Документов: 1000+". - 📅 По умолчанию отображаются документы за текущий месяц. Чтобы увидеть все, снимите фильтр по периоду.
- 🗑️ Помеченные на удаление документы в счётчик не включаются (они отображаются серым цветом).
Чтобы получить точные данные:
- Откройте нужный журнал (например,
Поступление товаров и услуг). - Нажмите
Ещё → Настройки → Отменить отбор по периоду. - Если нужно посчитать документы за конкретный год, установите фильтр по дате.
- Для экспорта списка в Excel используйте кнопку
Выгрузить(доступна в большинстве конфигураций).
В конфигурациях на базе 1С:Предприятие 8.3 можно использовать расширенный фильтр. Например, в журнале Заказы покупателей нажмите Ещё → Настройка списка → Отбор и добавьте условие по статусу (Проведён, Не проведён) или организации.
3. Запросы на языке 1С: точный подсчёт для программистов
Если стандартные методы не дают нужной детализации, можно написать запрос на встроенном языке 1С. Это универсальный способ, работающий во всех конфигурациях, включая сильно доработанные. Например, чтобы посчитать все документы ПоступлениеТоваровУслуг за 2023 год, используйте следующий код:
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| COUNT(*) КАК Количество
|ИЗ
| Документ.ПоступлениеТоваровУслуг КАК Поступление
|ГДЕ
| Поступление.Дата МЕЖДУ &НачалоПериода И &КонецПериода";
Запрос.УстановитьПараметр("НачалоПериода", '20230101');
Запрос.УстановитьПараметр("КонецПериода", '20231231');
Результат = Запрос.Выполнить();
Выборка = Результат.Выбрать();
Пока Выборка.Следующий() Цикл
Сообщить("Количество документов: " + Выборка.Количество);
КонецЦикла;
Этот запрос вернёт точное количество документов, включая непроводённые и помеченные на удаление. Для других видов документов замените Документ.ПоступлениеТоваровУслуг на нужный (например, Документ.РеализацияТоваровУслуг).
- 🛠️ Дополнительные фильтры: можно добавить условия по организации (
Поступление.Организация = &Организация), складу или контрагенту. - 📈 Группировка: если нужно посчитать документы по месяцам, добавьте в запрос
ГРУППИРОВКА ПО МЕСЯЦ(Поступление.Дата). - ⚡ Производительность: для больших баз (100 000+ документов) используйте индексированные поля в условиях
ГДЕ.
Чтобы выполнить запрос, откройте конфигуратор (Файл → Открыть конфигуратор), перейдите в Сервис → Запросы → Новый запрос и вставьте код. Для пользователей без прав на конфигуратор подойдёт внешняя обработка (см. следующий раздел).
Открыть конфигуратор (права администратора)|Создать новый запрос в меню "Сервис"|Проверить синтаксис (кнопка F7)|Установить параметры дат|Выполнить запрос и просмотреть результат-->
4. Внешние обработки: готовые решения для пользователей
Если у вас нет доступа к конфигуратору, но нужно посчитать документы с гибкими настройками, используйте внешние обработки. Это файлы с расширением .epf или .erf, которые можно скачать с сайтов 1С или форумов (например, Infostart). Популярные обработки для подсчёта документов:
- 📋 "Универсальный отчёт по документам" — позволяет строить отчёты по любым видам документов с группировкой по реквизитам.
- 🔎 "Поиск и замена в документах" — помимо поиска показывает количество найденных документов.
- 📊 "Анализ базы данных" — даёт статистику по всем объектам конфигурации, включая документы.
Чтобы подключить обработку:
- Скачайте файл (например,
УниверсальныйОтчетПоДокументам.epf). - В 1С перейдите в
Файл → Открыть → Выбрать файл обработки. - Запустите обработку и настройте фильтры (период, вид документа, организация).
- Нажмите
Сформировать— результат отобразится в таблице.
Преимущество внешних обработок в том, что они часто содержат дополнительные функции, например:
- Экспорт данных в Excel с сохранением форматирования.
- Поиск дублей документов по номерам или датам.
- Анализ проведения (какие документы не проведены и почему).
⚠️ Внимание: Перед использованием обработок из ненадёжных источников проверьте их на тестовой базе. Вредоносный код может повредить данные.
5. Прямой доступ к SQL: для администраторов баз данных
Если вы администрируете 1С на SQL Server или PostgreSQL, можно посчитать документы напрямую в базе данных. Этот метод самый быстрый для больших объёмов данных, но требует знаний SQL и прав доступа к серверу.
Каждый документ в 1С хранится в отдельной таблице, имя которой формируется по шаблону:
_Document{ИД_вида_документа}
Например, документы ПоступлениеТоваровУслуг могут храниться в таблице _Document123 (где 123 — внутренний идентификатор вида документа).
Чтобы найти точные имена таблиц, выполните запрос к системным таблицам 1С:
SELECT
t.name AS TableName,
p.name AS DocumentType
FROM
sys.tables t
JOIN
sys.partitions p ON t.object_id = p.object_id
WHERE
t.name LIKE '_Document%'
ORDER BY
t.name;
После этого можно посчитать документы за нужный период:
SELECT
COUNT(*) AS DocumentCount
FROM
_Document123
WHERE
DatePart >= '2023-01-01'
AND DatePart <= '2023-12-31';
| Конфигурация 1С | Пример таблицы документов | Поле с датой |
|---|---|---|
| 1С:Бухгалтерия 3.0 | _Document123 (Поступление) |
DateTime или DatePart |
| 1С:УТ 11 | _Document456 (Реализация) |
PostingDate |
| 1С:ЗУП 3.1 | _Document789 (Начисление зарплаты) |
Period |
Для PostgreSQL синтаксис будет аналогичным, но имена системных таблиц могут отличаться. Например, чтобы получить список всех таблиц документов, используйте:
SELECT tablename
FROM pg_tables
WHERE tablename LIKE '_document%';
⚠️ Внимание: Прямые запросы к базе данных могут нарушить целостность данных, если выполняются во время работы пользователей. Используйте этот метод только в нерабочее время или на резервной копии.
6. Специализированные отчёты для аудита и оптимизации
Если цель — не просто посчитать документы, а проанализировать их распределение для аудита или оптимизации базы, используйте специализированные отчёты. Например:
- 📉 "Анализ объёмов данных" — показывает, какие виды документов занимают больше всего места в базе.
- 🔄 "Отчёт по проведению" — выявляет документы, которые долго проводятся или вызывают ошибки.
- 🗃️ "Статистика по регистрам" — помогает понять, какие документы генерируют наибольшее количество движений.
В 1С:Предприятие 8.3 эти отчёты доступны через:
Для глубокого анализа можно использовать консоль запросов с таким кодом:
Метаданные.Имя КАК ВидДокумента, COUNT(*) КАК Количество, СУММА(РАЗМЕРДАННЫХ(Данные)) / 1024 КАК ОбъемКб ИЗ Документ.Любой КАК Документ ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.МетодыОбъектов КАК Метаданные ПО Документ.Метод() = Метаданные.Ссылка ГРУППИРОВКА ПО Метаданные.Имя УПОРЯДОЧИТЬ ПО ОбъемКб УБЫВАдминистрирование → Обслуживание → Анализ производительности.
ВЫБРАТЬ
Этот запрос покажет не только количество, но и объём данных, занимаемый каждым видом документов. Полезно для планирования архивации или очистки базы.
Для ускорения запросов по большим базам (100 000+ документов) используйте: 1. Индексы — убедитесь, что поля, используемые в условиях `ГДЕ`, проиндексированы. 2. Временные таблицы — для сложных отчётов сначала сохраните данные во временную таблицу, а затем работайте с ней. 3. Пакетную обработку — разбивайте запрос на части (например, по месяцам). 4. Режимы блокировок — используйте `ДЛЯ ИЗМЕНЕНИЯ` только если действительно нужно блокировать данные.Как ускорить выполнение сложных запросов?
Сравнение методов: какой выбрать?
| Метод | Сложность | Точность | Требуемые права | Когда использовать |
|---|---|---|---|---|
| Стандартные отчёты | ⭐ | Средняя (не учитывает помеченные на удаление) | Пользователь | Быстрая оценка по периодам |
| Журналы документов | ⭐ | Низкая (ограничение 1000+ документов) | Пользователь | Оперативный просмотр текущих данных |
| Запросы в конфигураторе | ⭐⭐⭐ | Высокая | Администратор/Программист | Глубокий анализ с фильтрами |
| Внешние обработки | ⭐⭐ | Высокая | Пользователь | Гибкие отчёты без доступа к конфигуратору |
| Прямой SQL | ⭐⭐⭐⭐ | Максимальная | Администратор БД | Оптимизация и аудит больших баз |
Для большинства пользователей достаточно стандартных отчётов или журналов документов. Если нужна детализация (например, по контрагентам или складам), подойдут внешние обработки. Для аудита и очистки базы от "мусорных" документов (непроведённых, дублей) обязательно используйте запросы в конфигураторе или SQL — только они дадут полную картину.
Если вам нужно не только количество, но и анализ "качества" документов (проводённые/непроводённые, с ошибками), комбинируйте запросы в конфигураторе с отчётом "Анализ проведения" из раздела администрирования. Да, но с ограничениями. В 1С:Fresh доступны стандартные отчёты и журналы документов, но нет возможности выполнять произвольные запросы или подключать внешние обработки. Используйте раздел Это ограничение интерфейса 1С для ускорения загрузки списков. Чтобы увидеть точное количество, используйте стандартный отчёт по документам или запрос в конфигураторе. Также можно экспортировать журнал в Excel — в файле будет полный список. Используйте запрос с фильтром по полю ИЗ Документ.ПоступлениеТоваровУслуг КАК Док ГДЕ Док.Пользователь = &ПользовательFAQ: Частые вопросы о подсчёте документов в 1С
Можно ли посчитать документы в 1С:Fresh (облако) без доступа к конфигуратору?
Отчёты → Стандартные отчёты или экспортируйте данные в Excel для дальнейшего анализа.Почему в журнале документов отображается "1000+", а не точное число?
Как посчитать документы, созданные конкретным пользователем?
Пользователь (или Ответственный, в зависимости от конфигурации). Пример:
ВЫБРАТЬ COUNT(*) КАК Количество
В качестве параметра передайте ссылку на пользователя (например, Пользователи.ИвановИИ).
Можно ли автоматически получать статистику по документам ежемесячно?
Да, для этого настройте регламентное задание в 1С. Создайте обработку, которая будет выполнять запрос и отправлять результат на email. Пример кода для регламентного задания:
Процедура ВыполнитьЗадание()
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ COUNT(*) КАК Количество ИЗ Документ.ПоступлениеТоваровУслуг";
Результат = Запрос.Выполнить();
ТекстПисьма = "Количество документов Поступление: " + Результат.Выбрать().Количество;
ОтправитьПочту("admin@company.ru", "Статистика 1С", ТекстПисьма);
КонецПроцедуры
Настройте выполнение задания в Администрирование → Регламентные задания.
Как узнать, сколько документов не проведены в базе?
Используйте запрос с проверкой статуса проведения:
ВЫБРАТЬ
COUNT(*) КАК КоличествоНепроведённых
ИЗ
Документ.ПоступлениеТоваровУслуг КАК Док
ГДЕ
НЕ Док.Проведён
Для ускорения добавьте фильтр по периоду. В 1С:УТ 11 можно использовать стандартный отчёт Анализ проведения документов.