Справочники и Данные · 10 мин
Как узнать размер справочника в 1С
Как узнать размер справочника в 1С: количество элементов через запрос и консоль, размер таблицы в базе SQL, оценка объёма данных и типичные ошибки.
Вопрос «какой размер у справочника» в 1С возникает в двух разных ситуациях. Первая — нужно узнать количество элементов: сколько контрагентов, номенклатурных позиций или сотрудников заведено в базе. Вторая — требуется оценить физический объём, который таблица справочника занимает в файловой базе или на SQL-сервере, например при диагностике «разросшейся» базы.
Способ решения зависит от того, какая именно задача стоит, какой режим работы используется (файловый или клиент-серверный) и какие права есть у пользователя. Простой подсчёт элементов доступен даже без программирования, а вот точный размер таблицы на диске определяется уже средствами СУБД.
Ниже разобраны все рабочие варианты: от стандартных возможностей конфигуратора до запросов к MS SQL Server, с ограничениями каждого метода и проверкой результата.
Что понимать под «размером справочника»
Прежде чем выбирать инструмент, определите, что именно нужно измерить. В практике администрирования 1С различают три величины:
- Количество элементов — число записей справочника, включая помеченные на удаление. Это самый частый запрос.
- Логический объём данных — суммарный размер значений реквизитов, включая хранилища значений (картинки, файлы, длинные строки).
- Физический размер таблицы — место, которое таблица справочника и её индексы занимают в файле базы данных.
Эти величины могут отличаться на порядки. Справочник «Номенклатура» с 50 000 позиций может занимать 20 МБ, а может — 20 ГБ, если в дополнительных реквизитах или присоединённых файлах хранятся изображения товаров. Поэтому формулировка «узнать размер» всегда требует уточнения цели.
Как узнать количество элементов справочника без программирования
Самый быстрый способ — открыть список справочника в режиме предприятия и воспользоваться выводом количества строк. В управляемых формах это делается через меню «Ещё» списка: пункты «Вывести список» или «Найти» с последующим подсчётом. Однако для больших справочников такой пересчёт может занять заметное время.
Второй вариант — стандартный отчёт или обработка «Консоль запросов», которая входит во многие типовые конфигурации на БСП (раздел «Администрирование» → «Печатные формы, отчеты и обработки» или подключаемые внешние инструменты). Достаточно выполнить простейший запрос:
ВЫБРАТЬ
КОЛИЧЕСТВО(Номенклатура.Ссылка) КАК КоличествоЭлементов
ИЗ
Справочник.Номенклатура КАК НоменклатураЗапрос вернёт одно число — общее количество элементов, включая помеченные на удаление и предопределённые. Если нужно исключить помеченные, добавьте условие ГДЕ НЕ Номенклатура.ПометкаУдаления. Для иерархического справочника можно отдельно посчитать группы: ГДЕ Номенклатура.ЭтоГруппа.
Подсчёт через встроенный язык
Если есть доступ к конфигуратору или внешней обработке, количество элементов получают программно:
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ КОЛИЧЕСТВО(Ссылка) ИЗ Справочник.Контрагенты";
Результат = Запрос.Выполнить().Выбрать();
Результат.Следующий();
Сообщить("Элементов: " + Результат[0]);Не используйте для подсчёта выборку с перебором (Выбрать() и цикл со счётчиком) — на больших справочниках это в разы медленнее агрегатного запроса и создаёт лишнюю нагрузку на сервер.
Как узнать физический размер таблицы справочника в клиент-серверной базе
В клиент-серверном варианте работы у платформы 1С есть штатный инструмент — отчёт о размерах таблиц базы данных. Он доступен в конфигураторе: меню «Администрирование» → «Параметры информационной базы» (в ряде версий — «Администрирование» → «Сервис» → «Параметры базы данных»). В открывшемся окне формируется список таблиц с указанием занимаемого места.
- 1Откройте конфигуратор и авторизуйтесь с правами администратора
- 2Перейдите в меню «Администрирование» → «Параметры информационной базы»
- 3Дождитесь формирования списка таблиц — на больших базах это занимает время
- 4Найдите таблицу нужного справочника по имени вида _Reference (например, _Reference123)
- 5Посмотрите колонки с размером данных и индексов
Сложность в том, что таблицы в отчёте показаны под служебными именами вида _Reference256, а не по именам метаданных. Соответствие имени таблицы справочнику конфигурации устанавливается через функцию «ПолучитьСтруктуруХраненияБазыДанных» — её можно вызвать из внешней обработки или посмотреть сопоставление в специализированных инструментах администратора.
Запрос напрямую к MS SQL Server
Если база работает на MS SQL Server и у вас есть доступ к Management Studio, размер таблицы узнаётся системным запросом:
SELECT t.NAME AS TableName,
SUM(a.total_pages) * 8 / 1024 AS SizeMB
FROM sys.tables t
JOIN sys.indexes i ON t.object_id = i.object_id
JOIN sys.partitions p ON i.object_id = p.object_id AND i.index_id = p.index_id
JOIN sys.allocation_units a ON p.partition_id = a.container_id
WHERE t.NAME LIKE '_Reference%'
GROUP BY t.NAME
ORDER BY SizeMB DESCЗапрос вернёт размеры всех таблиц справочников в мегабайтах, отсортированные по убыванию. Так сразу видно, какие справочники занимают больше всего места. Учтите, что выполнение требует прав на чтение системных представлений, а на больших базах запрос может выполняться несколько секунд.
Как оценить размер справочника в файловой базе
В файловом варианте все данные хранятся в едином файле 1Cv8.1CD, и выделить размер отдельного справочника штатными средствами нельзя. Доступны лишь косвенные оценки.
Первый подход — сравнение размера файла до и после массовой загрузки или удаления данных с последующим сжатием (тестированием и исправлением с уменьшением размера). Разница покажет примерный вклад данных справочника. Способ трудоёмок и подходит только для копии базы.
Второй подход — оценка через количество элементов и средний размер записи. Если известно, что справочник содержит 100 000 элементов, а основные реквизиты — короткие строки и ссылки, объём обычно исчисляется десятками мегабайт. Точную цифру без инструментов анализа файла получить нельзя.
Что влияет на размер справочника и как его уменьшить
Если оценка показала, что справочник занимает неоправданно много места, типичные причины следующие:
- Хранилища значений в реквизитах — картинки, печатные формы, сериализованные данные. Один реквизит с изображениями может увеличить таблицу в сотни раз.
- Накопленные помеченные объекты — при небрежном удалении годами копятся «мёртвые» записи.
- Дубли элементов — результат обменов без контроля уникальности; дубли раздувают и таблицу, и индексы.
- Табличные части с большим числом строк — размер табличных частей хранится в отдельных таблицах и не виден при взгляде на количество элементов.
Безопасный порядок сокращения объёма: сначала штатное удаление помеченных объектов с контролем ссылочной целостности, затем поиск и объединение дублей (в типовых конфигурациях есть обработка «Поиск и удаление дублей»), затем перенос тяжёлых файлов в тома хранения, если конфигурация это поддерживает.
Как проверить результат и выбрать подходящий способ
После получения цифры убедитесь, что она отвечает исходному вопросу. Сопоставьте количество элементов из запроса с тем, что видно в списке справочника при снятых отборах. Если физический размер таблицы непропорционален количеству записей (например, 10 000 элементов занимают несколько гигабайт), ищите тяжёлые реквизиты или присоединённые файлы.
Как выбрать действие
Для регулярного контроля имеет смысл сохранить запрос подсчёта элементов и SQL-запрос размеров таблиц в виде регламентной проверки: периодический снимок показателей позволяет заметить аномальный рост до того, как закончится место на диске.
Что важно запомнить
Размер справочника — это либо количество элементов (считается запросом КОЛИЧЕСТВО), либо физический объём таблицы (смотрится в параметрах информационной базы конфигуратора или через системные представления SQL). В файловой базе точный размер отдельного справочника штатно не определяется. Большой объём при малом числе записей почти всегда означает файлы и хранилища значений в реквизитах.
Частые вопросы
Можно ли узнать количество элементов справочника без доступа к конфигуратору?
Да. В режиме предприятия откройте список справочника и используйте вывод списка с подсчётом строк, либо консоль запросов, если она доступна в конфигурации. Прав администратора для чтения данных справочника обычно не требуется — достаточно стандартных прав пользователя на этот объект.
Почему число элементов в запросе больше, чем видно в списке?
Запрос КОЛИЧЕСТВО считает все записи, включая помеченные на удаление и те, что скрыты отборами или ограничениями доступа на уровне записей (RLS). Добавьте в запрос условие на пометку удаления и учитывайте действующие отборы списка.
Как узнать, какой таблице _Reference соответствует нужный справочник?
Используйте встроенную функцию ПолучитьСтруктуруХраненияБазыДанных — она возвращает таблицу соответствия объектов метаданных и имён таблиц СУБД. Вызвать её можно из внешней обработки; также существуют готовые обработки администратора, показывающие это соответствие в удобном виде.
Уменьшится ли файл базы после удаления элементов справочника?
Не автоматически. После штатного удаления помеченных объектов место внутри файла помечается как свободное, но размер файла 1Cv8.1CD на диске не меняется. Для физического уменьшения файловой базы выполните тестирование и исправление с включённым сжатием таблиц — обязательно на копии или после резервного копирования.
Что делать, если справочник занимает гигабайты при небольшом числе записей?
Проверьте реквизиты типа «ХранилищеЗначения» и механизм присоединённых файлов — в них обычно лежат изображения и документы. Решение — перенос файлов в тома хранения (если конфигурация поддерживает) или очистка ненужных вложений штатными средствами.