Справочники и Данные · 9 мин
Как узнать количество элементов в справочнике 1С
Способы узнать количество элементов справочника в 1С: настройка списка, групповой отбор, запрос на встроенном языке, консоль запросов и проверка результата.
Количество элементов справочника в 1С нужно знать при аудите базы, перед сверткой данных, при оценке объема миграции и при поиске «мусорных» записей. Универсальной кнопки «показать итог» в стандартной форме списка нет, поэтому используют несколько рабочих приемов: от простой настройки списка до запроса на встроенном языке.
Выбор способа зависит от вашей роли. Пользователю без прав разработчика подойдут приемы через интерфейс списка и отчеты. Программисту или администратору быстрее получить точное число через запрос ВЫБРАТЬ КОЛИЧЕСТВО(*) или консоль запросов.
Важно различать общее количество записей и количество «рабочих» элементов: помеченные на удаление и предопределенные элементы тоже хранятся в справочнике и учитываются при подсчете, если их не отфильтровать явно.
Зачем знать количество элементов и что считать
Перед подсчетом определите, какое именно число вам нужно. В справочнике 1С одновременно существуют активные элементы, помеченные на удаление, предопределенные (созданные разработчиком конфигурации) и, для иерархических справочников, группы. Простой подсчет «всех строк» часто дает завышенную цифру.
Типовые ситуации, когда нужно точное число:
- оценка объема данных перед переносом в другую базу;
- контроль дублирования номенклатуры или контрагентов;
- проверка результата загрузки данных из файла или обмена;
- аудит перед сверткой базы или удалением устаревших записей.
Если справочник иерархический, решите, считать ли группы. Например, в справочнике «Номенклатура» папки — это тоже элементы, и запрос без условий посчитает их вместе с товарами.
Как посмотреть количество через список справочника без программирования
Самый доступный способ — работа со стандартной формой списка. Откройте справочник, затем через меню «Ещё» выберите «Настроить список» (в некоторых конфигурациях — «Настройка списка»). Уберите отборы, если они установлены, чтобы видеть все элементы.
Дальше есть два приема. Первый — выделить все строки списка (Ctrl+A) и посмотреть в строку состояния или всплывающую подсказку: в ряде типовых конфигураций платформа показывает количество выделенных строк. Второй — вывести список в табличный документ через «Ещё → Вывести список»: в полученном табличном документе количество строк видно по нумерации или через итоговую строку.
Метод вывода списка удобен тем, что одновременно дает файл для сверки: вы можете сохранить его и сравнить с данными после загрузки или чистки. Ограничение — на очень больших справочниках (сотни тысяч элементов) вывод списка может занять заметное время.
- 1Откройте справочник и снимите все отборы через «Ещё → Настроить список»
- 2Выберите «Ещё → Вывести список» и отметьте нужные колонки
- 3Дождитесь формирования табличного документа
- 4Посчитайте строки по нумерации или через поиск последней строки
- 5Вычтите строки групп, если нужен подсчет только элементов
Подсчет через универсальный отчет и динамический список
В типовых конфигурациях на управляемых формах (1С:Бухгалтерия, 1С:Управление торговлей, ERP) есть «Универсальный отчет». Откройте его, выберите тип объекта «Справочник», укажите нужный справочник и период не требуется — справочники не периодические. В настройках оставьте одно поле, например «Ссылка», и установите ресурс «Количество».
Отчет покажет как общее число элементов, так и разрез по группам, владельцам или любым реквизитам. Это удобно, когда нужно не просто число, а распределение: сколько контрагентов у каждого менеджера, сколько позиций номенклатуры в каждой папке.
Если универсального отчета в конфигурации нет, проверьте раздел «Отчеты» — многие справочники имеют собственные отчеты с итогами. Дополнительно в динамических списках можно включить отображение итогов по числовым колонкам, но для подсчета строк это косвенный прием.
Универсальный отчет — самый безопасный способ для пользователя без прав разработчика: он не меняет данные, работает в рамках стандартных прав и сразу показывает помеченные на удаление элементы отдельной группировкой, если добавить поле ПометкаУдаления.
Точный подсчет запросом: КОЛИЧЕСТВО(*) и условия
Для разработчика или администратора самый быстрый и точный способ — запрос на встроенном языке. Базовый вариант выглядит так:
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| КОЛИЧЕСТВО(*) КАК КоличествоЭлементов
|ИЗ
| Справочник.Номенклатура КАК Номенклатура";
Результат = Запрос.Выполнить().Выбрать();
Если Результат.Следующий() Тогда
Сообщить("Элементов: " + Результат.КоличествоЭлементов);
КонецЕсли;
Чтобы посчитать только активные элементы, добавьте условие по пометке удаления:
Запрос.Текст =
"ВЫБРАТЬ
| КОЛИЧЕСТВО(*) КАК Количество
|ИЗ
| Справочник.Номенклатура КАК Номенклатура
|ГДЕ
| НЕ Номенклатура.ПометкаУдаления
| И НЕ Номенклатура.ЭтоГруппа";
Условие НЕ ЭтоГруппа актуально только для иерархических справочников с иерархией групп и элементов. Для линейных справочников (например, «Валюты») такого поля нет, и запрос с ним выдаст ошибку — уберите условие.
Дополнительные полезные варианты условий: отбор по владельцу для подчиненных справочников, по реквизиту для анализа заполненности, по полю Предопределенный, чтобы отделить штатные элементы конфигурации от пользовательских.
ВЫБРАТЬ КОЛИЧЕСТВО(*) КАК Количество ИЗ Справочник.Контрагенты ГДЕ НЕ ПометкаУдаленияКонсоль запросов и внешние инструменты
Если писать код в конфигураторе неудобно, используйте консоль запросов — внешнюю обработку, которая выполняет произвольный запрос в пользовательском режиме. Откройте обработку через «Файл → Открыть», вставьте текст запроса и нажмите «Выполнить». Результат — одно число в таблице.
Консоль запросов требует права на запуск внешних обработок и открытие внешних файлов. В строго настроенных базах эта возможность отключена профилем безопасности — тогда остаются способы через интерфейс или обращение к администратору.
Для файловых баз есть еще один путь: инструменты просмотра структуры хранения показывают таблицы и их размеры, но точное количество записей проще получить запросом — размер таблицы в байтах не дает числа строк напрямую.
Проверка результата и типичные ошибки
После получения числа убедитесь, что оно соответствует ожиданиям. Сравните подсчет запросом с количеством строк при выводе списка: расхождение обычно означает, что в запросе забыто условие по пометке удаления или по группам.
Еще одна проверка — подсчет по частям. Разбейте справочник по группам верхнего уровня и сложите результаты: сумма должна сойтись с общим числом. Если не сходится, ищите элементы без группы или ошибку в условиях отбора.
Отдельная ловушка — запросы с соединениями к табличным частям или регистрам. Если нужно количество элементов справочника, считайте по самой таблице справочника без соединений, либо используйте КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Ссылка).
Как проверить результат
Значения совпадают или отличаются ровно на количество помеченных
Расхождение без объяснимой причины — проверьте отборы
Сумма подсчетов по группам равна общему числу
Сумма меньше — есть элементы вне групп или ошибка условия
Число стабильно при неизменных данных
Число меняется — в базу идет запись, уточните момент подсчета
Часто задаваемые вопросы
Как узнать количество элементов, если нет прав разработчика?
Используйте вывод списка в табличный документ через «Ещё → Вывести список» и посчитайте строки, либо универсальный отчет с ресурсом «Количество» по справочнику. Оба способа работают в рамках обычных пользовательских прав и не требуют изменения конфигурации.
Почему запрос показывает больше элементов, чем видно в списке?
Чаще всего в списке установлен отбор (например, скрыты помеченные на удаление или отфильтрованы группы), а запрос считает все записи. Сравните условия: добавьте в запрос ГДЕ НЕ ПометкаУдаления и при необходимости И НЕ ЭтоГруппа.
Как посчитать только помеченные на удаление элементы?
Выполните запрос с условием ГДЕ ПометкаУдаления по таблице справочника. Это число полезно знать перед запуском штатной обработки «Удаление помеченных объектов», чтобы оценить объем чистки.
Можно ли узнать количество элементов всех справочников сразу?
Да, программно: пройдите циклом по Метаданные.Справочники и для каждого выполните запрос с КОЛИЧЕСТВО(*). Так формируют сводную таблицу заполненности базы для аудита или оценки объема миграции.
Влияет ли подсчет количества на производительность базы?
Запрос КОЛИЧЕСТВО(*) по одному справочнику выполняется быстро даже на больших таблицах. Нагрузку создают разве что массовые подсчеты по всем справочникам в цикле — такую проверку лучше запускать в нерабочее время на крупных базах.
Чем отличается КОЛИЧЕСТВО(*) от КОЛИЧЕСТВО(Ссылка)?
Для простого запроса по таблице справочника результат одинаков, так как ссылка не бывает пустой. Разница проявляется в запросах с соединениями и группировками: КОЛИЧЕСТВО() считает все строки результата, а КОЛИЧЕСТВО(Ссылка) — только строки с заполненной ссылкой. Для подсчета элементов справочника используйте КОЛИЧЕСТВО() без соединений.
Что важно запомнить
Точное количество элементов справочника дает запрос КОЛИЧЕСТВО(*) с условиями по пометке удаления и группам; без прав разработчика используйте вывод списка или универсальный отчет. Всегда проверяйте результат сверкой с видимым списком и помните, что помеченные на удаление элементы тоже хранятся в базе.