Оценка размера данных базы в МБ, количество записей объектов и дерево метаданных

22.09.26

База данных - Статистика базы данных

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

Файлы

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование Скачано Купить файл
Оценка размера базы, версия 1.0
.epf 15,42Kb ver:1.0
0 2 500 руб. Купить

Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний

Оформите подписку на компанию для решения рабочих задач

Оформить подписку и скачать решение со скидкой

Вы можете заказать платную доработку или адаптацию этой разработки под вашу конфигурацию на «Бирже заказов».

  • 0% комиссии — оплата напрямую исполнителю;
  • Исполнители любого масштаба — от отдельных специалистов до команд под проект;
  • Прямой обмен контактами между заказчиком и исполнителем;
  • Безопасная сделка — при необходимости;
  • Рейтинги, кейсы и прозрачная система откликов.

Обработка читает метаданные и строит дерево объектов конфигурации, а по кнопке считает у каждого объекта количество записей и вес данных. Встанете на строку — внизу появится состав объекта: стандартные и собственные реквизиты, табличные части, измерения и ресурсы с типами. Двойной щелчок открывает форму списка самого объекта. В шапке — имя и версия конфигурации и версия платформы. Работает она на любой конфигурации, файловой и клиент-серверной, и ничего не меняет — только читает.

Обследование базы — дерево метаданных Дерево видов метаданных: у каждого вида количество объектов, суммарный вес и число записей; в шапке имя и версия конфигурации

 

Количество записей

Обработка обходит коллекции Метаданные[ИмяКоллекции] и у каждого объекта берёт ПолноеИмя(). Выглядит оно как Справочник.Товары и подставляется прямо в текст запроса:

&НаСервере
Функция ПосчитатьЗаписи(ПолноеИмяОбъекта)

    Запрос = Новый Запрос("ВЫБРАТЬ КОЛИЧЕСТВО(*) КАК Кол ИЗ " + ПолноеИмяОбъекта);

    Попытка
        Выборка = Запрос.Выполнить().Выбрать();
    Исключение
        Возврат Неопределено;
    КонецПопытки;

    Выборка.Следующий();
    Возврат Выборка.Кол;

КонецФункции

У отчётов и обработок таблиц нет, поэтому запрос по ним падает. Функция ловит исключение и возвращает Неопределено, а в колонке появляется прочерк.

У констант, перечислений и журналов документов запрос тоже отработает, только толку от результата не будет: у константы в таблице всегда одна строка, перечисление вернёт число своих значений, то есть метаданных, а журнал отдаст документы, которые уже посчитаны в строке «Документы». Поэтому обработка считает записи только у тех видов, которые их действительно хранят: справочники, документы, планы, регистры, последовательности, бизнес-процессы и задачи — без такого отбора итог завышен.

 

Вес данных объекта

ПолучитьСтруктуруХраненияБазыДанных() отдаёт имена таблиц, поля и индексы, но размера в ней нет. Размер возвращает другой метод — ПолучитьРазмерДанныхБазыДанных(<ОбластьПоиска>, <ВключитьОбъекты>, <ИсключитьОбъекты>). Задуман он для разделённых данных: при ОбластьПоиска = Неопределено платформа считает всю базу. Чтобы получить вес одного объекта, обработка кладёт в область пустой массив, а сам объект передаёт вторым параметром:

&НаСервере
Функция РазмерОбъекта(ОбъектМД)

    Область = Новый Массив;
    Объекты = Новый Массив;
    Объекты.Добавить(ОбъектМД);

    Попытка
        Возврат ПолучитьРазмерДанныхБазыДанных(Область, Объекты);
    Исключение
        Возврат Неопределено;
    КонецПопытки;

КонецФункции

Метод возвращает байты и к СУБД не обращается, поэтому файловая база считается наравне с серверной. Обработка вызывает его по каждому объекту, и один вызов стоит доли миллисекунды.

История данных и расширения конфигурации в этот размер не входят. Сумма по объектам всегда меньше файла базы: остальное занимают индексы, служебные структуры и незанятое место.

 

Расчёт по кнопке

Оба замера обработка делает по каждому объекту отдельно: сколько объектов, столько запросов и столько вызовов. На паре сотен это десятая доля секунды. Объектов на порядок больше — и время растёт во столько же раз, а форма виснет прямо на открытии. Поэтому при открытии она читает только описание конфигурации: дерево видов и объектов появляется сразу, колонки «Размер» и «Записей» пока пустые, отборы по ним недоступны.

Расчёт запускают две кнопки. «Рассчитать всё» проходит по всей базе, «Рассчитать вид» — только по тому виду, на строке которого стоит курсор. Вторая правит кэш выборочно, через ДанныеФормыВЗначение, поэтому посчитанное раньше по другим видам остаётся на месте.

Виды накапливаются, и пока посчитаны не все, итог показывает, по скольким объектам он сложен. Пустая колонка и прочерк значат разное: прочерк стоит там, где считать нечего, а пустота — там, где ещё не считали.

Посчитан один вид Посчитан один вид: у справочников числа есть, у остальных пусто, а итог говорит, по скольким объектам он сложен

 

Дерево и состав объекта

Реквизит формы объявлен как ДеревоЗначений, а колонки — подчинённые ему реквизиты. Иерархию таблица рисует сама, свойство Отображение задавать не требуется. Готовое дерево обработка кладёт целиком: ЗначениеВРеквизитФормы(Дерево, "ОбъектыМетаданных") заменяет прежнее содержимое, так что чистить реквизит заранее не нужно.

Состав обработка читает по текущей строке:

ОбъектМД = Метаданные.НайтиПоПолномуИмени(ПолноеИмяОбъекта);

Попытка
    ДобавитьРаздел(Состав, ОбъектМД.Реквизиты, "реквизиты");
Исключение
КонецПопытки;

Так же она забирает СтандартныеРеквизиты, Измерения, Ресурсы и ТабличныеЧасти — по одному вызову на коллекцию. Обращаться к объекту метаданных по имени свойства нельзя: Метаданные["Справочники"] работает, а ОбъектМД["Реквизиты"] — нет, только через точку. Попытка вокруг каждой коллекции здесь не перестраховка: у справочника нет измерений, у регистра — табличных частей.

В СтандартныеРеквизиты попадает и то, что реквизитом не является: Ссылка, ВерсияДанных, Предопределенный и ИмяПредопределенныхДанных — эти четыре обработка отсеивает.

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

Имена = Новый Массив;
Для Каждого Тип Из Элемент.Тип.Типы() Цикл
    ОбъектТипа = Метаданные.НайтиПоТипу(Тип);
    Если ОбъектТипа = Неопределено Тогда
        Имена.Добавить(Строка(Тип));
    Иначе
        Имена.Добавить(ОбъектТипа.ПолноеИмя());
    КонецЕсли;
КонецЦикла;

Возврат СтрСоединить(Имена, ", ");

У примитивных типов НайтиПоТипу возвращает Неопределено, и тогда в колонку идёт синоним. Составной тип обработка собирает целиком, через запятую.

Состав выбранного объекта Состав выбранного объекта: разделы, имена и типы; ссылочный тип показан именем из конфигурации

Двойной щелчок по объекту открывает его форму списка. Событие таблицы — Выбор, имя формы собирается из полного имени метаданных:

Если НЕ ЕстьФормаСписка(Данные.Вид) Тогда
    Сообщить("У вида «" + Данные.Вид + "» формы списка нет: показывать нечего.");
    Возврат;
КонецЕсли;

ОткрытьФорму(Данные.ПолноеИмя + ".ФормаСписка", , ЭтотОбъект);

Вид проверяется заранее, и это не перестраховка. Форма списка есть у справочников, документов, журналов, перечислений, планов, регистров, бизнес-процессов и задач; у константы форма значения, у отчёта и обработки — форма объекта. С несуществующим именем формы ОткрытьФорму не выбрасывает исключение, а молча ничего не делает: Попытка здесь бесполезна, обработчик отрабатывает вхолостую, и человек не понимает, нажал он или нет.

 

Сценарии

  • Отбор «Размер больше» с порогом оставляет в дереве только тяжёлые объекты — сразу видно, на что ушло место.
  • Поиск по синониму или имени открывает состав чужой конфигурации без конфигуратора и без монопольного режима.
  • Отбор «Записей больше 0» даёт список объектов с данными — перед переносом или свёрткой.
  • Двойной щелчок по найденному объекту открывает его список: нашли тяжёлый справочник — сразу смотрите, что в нём лежит.

 

Поставка

ОбследованиеБазы.epf — внешняя обработка; расширений и внешних компонент она не требует. Форму собирает программно, код открыт и лежит в модуле формы.

Проверено на следующих конфигурациях и релизах:

  • Управление нашей фирмой, редакция 3.0, релизы 3.0.14.143

Вступайте в нашу телеграмм-группу Инфостарт

размер базы вес таблиц количество записей метаданные анализ информационной базы обслуживание базы дерево метаданных

См. также

Инструменты администратора БД Статистика базы данных Системный администратор 1С 8.3 Абонемент ($m)

База растёт, диски кончаются, бэкап перестал влезать в ночь — а на вопрос «что именно занимает место?» никто не может ответить. Конфигуратор молчит: самые тяжёлые таблицы часто вообще не видны в дереве метаданных. Обработка строит полную карту объёмов базы за несколько минут: все объекты метаданных с табличными частями, имена таблиц СУБД, служебные таблицы платформы отдельным списком и готовый SQL-скрипт точных размеров для MS SQL и PostgreSQL. К СУБД не обращается — только платформенные средства, только чтение.

10 стартмани

03.08.2026    1707    25    nedomolkov.ivan    5    

3

Статистика базы данных Разработчик 1С 8.3 Абонемент ($m)

Внешняя обработка для анализа фактического использования объектов метаданных конфигурации 1С. Позволяет быстро узнать, сколько создано объектов каждого вида метаданных среди справочников и документов. Какие из них активно используются, какие реквизиты заполняются, а какие остаются пустыми.

1 стартмани

27.04.2026    1588    12    archi517    0    

7

Статистика базы данных Разработчик Пользователь 1С 8.3 Абонемент ($m)

По указанному периоду показывает, какие виды документов введены в информационную базу, и также количество введенных документов.

1 стартмани

03.03.2026    1126    7    burgerkirg    0    

5

Статистика базы данных Системный администратор Разработчик 1С:Предприятие 8 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Зарплата и Управление Персоналом 3.x 1С:Управление нашей фирмой 3.0 1С:Библиотека стандартных подсистем Абонемент ($m)

Расчет размера таблиц базы данных по метаданным. Будет полезна для выбора стратегии уменьшения размера базы (свертка, переход на новую, выгрузка на тома). Иногда некоторые таблицы могут иметь необоснованно огромный размер.

3 стартмани

27.10.2025    3271    108    gebungen    0    

4

Статистика базы данных 1С:Предприятие 8 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Зарплата и Управление Персоналом 3.x 1С:Управление нашей фирмой 3.0 Абонемент ($m)

Небольшая подсистема для конфигураций на управляемых формах, использующих БСП, которая поможет провести анализ, какие из внешних обработок (отчетов, печатных форм, заполнений объектов) используются активно, а какие утратили актуальность.

3 стартмани

12.09.2025    3340    24    onezero    4    

17

Статистика базы данных Разработчик 1С:Предприятие 8 1С:Управление торговлей 11 Абонемент ($m)

Еще одна публикация, позволяющая корректно оценить количество элементов справочников и документов в базе данных, а также их количество за выбранный период.

2 стартмани

10.04.2025    4369    47    aximo    14    

8

Статистика базы данных Разработчик 1С 8.3 Бесплатно (free)

Обработка по отображению количества объектов в базе (документов и справочников). Позволяет проанализировать количество всех справочников в базе, а также документов за период (если период не заполнен, покажет общее количество документов) и перейти в форму списка каждого объекта.

15.03.2025    3826    322    priem_nv    0    

7
Для отправки сообщения требуется регистрация/авторизация