Определение размера базы данных 1С с разбивкой по объектам метаданных
База данных - Статистика базы данных
Файлы
ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.
Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний
Оформите подписку на компанию для решения рабочих задач
Оформить подписку и скачать решение со скидкойВы можете заказать платную доработку или адаптацию этой разработки под вашу конфигурацию на «Бирже заказов».
- 0% комиссии — оплата напрямую исполнителю;
- Исполнители любого масштаба — от отдельных специалистов до команд под проект;
- Прямой обмен контактами между заказчиком и исполнителем;
- Безопасная сделка — при необходимости;
- Рейтинги, кейсы и прозрачная система откликов.
Не раз приходилось мне объясняться с нашим системным администратором по вопросу неожиданного роста базы данных. И вот наконец решил больше не гадать о причинах и написал такой инструмент.
Идея очень проста:
1. Вводим строку подключения к серверу баз данных. Нажимаем кнопку "Заполнить структуру БД".
1. Строится дерево метаданных и реальных таблиц в которых хранятся объекты.
2. Обработка обращается напрямую к серверу баз данных и для каждой реальной таблицы производится запрос с определением ее физического размера.
3. Полученные данные о размере выводятся в дерево метаданных, суммируются итоги.
4. Изучаем, идем разговаривать с админом))))
Опробовано на MS SQL Server 2008.
Вступайте в нашу телеграмм-группу Инфостарт
См. также
Статистика базы данных База данных Linux Системный администратор Разработчик Руководитель проекта 1С:Предприятие 8 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Зарплата и Управление Персоналом 3.x 1C:ERP 1С:Розница Платные (руб)
Универсальная обработка для анализа данных ИБ (файловая, MS SQL, PostgreSQL) Win+linux
5000 руб.
05.05.2026 1667 1 4
Статистика базы данных Разработчик 1С:Предприятие 8 Россия Абонемент ($m)
Внешняя обработка для комплексной диагностики информационной базы 1С без прямого подключения к SQL Server или другой СУБД. Позволяет определить, какие объекты 1С занимают основной объём базы, сколько записей содержат, какова средняя интенсивность накопления данных за последние 24 месяца, сколько КБ приходится на одну запись, а также увидеть связанные таблицы хранения и структуру индексов. Расчёт выполняется пакетно с отображением прогресса и возможностью остановки. В результате формируется единая таблица по объектам метаданных с итоговыми показателями и возможностью выгрузки результатов в Excel. Подходит разработчикам 1С, администраторам и специалистам, которым необходимо быстро понять структуру и точки роста большой информационной базы.
4 стартмани
26.10.2026 434 1 VVLab 2
Статистика базы данных Поиск данных Инструменты администратора БД Администрирование Разработчик Аналитик 1С 8.3 1С 8.5 1С:Розница 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Розница 3.0 Платные (руб)
Универсальная внешняя обработка для проверки «здоровья» любой базы 1С. За один запуск выполняет 26 проверок логической целостности данных и выдаёт отчёт: оценку состояния базы от 0 до 100, список проблем по важности (критично / предупреждение / информация), расшифровку до конкретных документов и записей и рекомендации, что делать. Находит: проведённые документы без движений и непроведённые с движениями, движения с «битым» регистратором, отрицательные остатки, проводки без счёта, дубли номеров и кодов, документы с датой в будущем, отключённые и отставшие итоги, зависшие очереди обмена, администраторов без пароля и другое. Подходит для любой конфигурации: БП, УТ, КА, ERP, УНФ, ЗУП, Розница, УТ 10.3, УПП, отраслевые и самописные, с БСП и без. Платформа 8.3.10 и выше, управляемые и обычные формы. Ничего не изменяет в базе — только читает данные.
7320 руб.
20.10.2026 538 0 0
Инструменты администратора БД Статистика базы данных Системный администратор Разработчик 1С:Предприятие 8 1С:Бухгалтерия государственного учреждения 1С:Бухгалтерия 3.0 1С:ERP Управление предприятием 2 1С:Зарплата и кадры бюджетного учреждения 1С:Зарплата и кадры государственного учреждения 3 1С:Зарплата и Управление Персоналом 3.x 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 1.6 1С:Управление нашей фирмой 3.0 1С:Управление торговлей 11 1С:Розница 2 1С:Розница 3.0 1С:РМК Абонемент ($m)
Отчет отобразит внутренние названия таблиц в базе данных 1С, связанные с ними типы данных, количество записей в таблицах, а также размер в мегабайтах. Подойдет для любой конфигурации 1С 8 на управляемых формах платформы 8.3.15 и выше.
2 стартмани
11.08.2026 1168 18 Marat1c8 5
Инструменты администратора БД Статистика базы данных Системный администратор 1С 8.3 Абонемент ($m)
База растёт, диски кончаются, бэкап перестал влезать в ночь — а на вопрос «что именно занимает место?» никто не может ответить. Конфигуратор молчит: самые тяжёлые таблицы часто вообще не видны в дереве метаданных. Обработка строит полную карту объёмов базы за несколько минут: все объекты метаданных с табличными частями, имена таблиц СУБД, служебные таблицы платформы отдельным списком и готовый SQL-скрипт точных размеров для MS SQL и PostgreSQL. К СУБД не обращается — только платформенные средства, только чтение.
10 стартмани
03.08.2026 2631 31 nedomolkov.ivan 9
Статистика базы данных Разработчик 1С 8.3 Абонемент ($m)
Внешняя обработка для анализа фактического использования объектов метаданных конфигурации 1С. Позволяет быстро узнать, сколько создано объектов каждого вида метаданных среди справочников и документов. Какие из них активно используются, какие реквизиты заполняются, а какие остаются пустыми.
1 стартмани
27.04.2026 1868 15 archi517 0
Статистика базы данных Разработчик Пользователь 1С 8.3 Абонемент ($m)
По указанному периоду показывает, какие виды документов введены в информационную базу, и также количество введенных документов.
1 стартмани
03.03.2026 1340 8 burgerkirg 0
Статистика базы данных Системный администратор Разработчик 1С:Предприятие 8 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Зарплата и Управление Персоналом 3.x 1С:Управление нашей фирмой 3.0 1С:Библиотека стандартных подсистем Абонемент ($m)
Расчет размера таблиц базы данных по метаданным. Будет полезна для выбора стратегии уменьшения размера базы (свертка, переход на новую, выгрузка на тома). Иногда некоторые таблицы могут иметь необоснованно огромный размер.
3 стартмани
27.10.2025 3589 112 gebungen 0
RS = RS.NextRecordset();
по причине:
Произошла исключительная ситуация (ADODB.Recordset): Текущий проводник не поддерживает возврат нескольких наборов записей в результате одной операции.
Тоже вылезала ошибка на RS = RS.NextRecordset(); пока не изменил поставщика на SQL Server Native Client 10.0 - с ней заработала.
Provider=SQLNCLI10.1;Integrated Security=SSPI;Persist Security Info=False;User ID="";Initial Catalog=database_name;Data Source=server-addres;Initial File Name="";Server SPN=""
спасибо за обработку давно искал (+)
Строка подключения выглядит так:
Provider=SQLOLEDB.1;Persist Security Info=False;User ID=username;Password=pass;Initial Catalog=databasename;Data Source= SERVER
RS = RS.NextRecordset();
по причине:
Произошла исключительная ситуация (ADODB.Recordset): Текущий поставщик не поддерживает возврат нескольких наборов записей в результате выполнения одной операции.
Строка подключения:
Provider=SQLOLEDB.1;Persist Security Info=False;User ID=user;Password=pass;Initial Catalog=cat;Data Source=server
Поставщика на SQL Server Native Client 10.0 в списке нет
такая ошибка вылетает иногда причем я заметил только на больших таблицах. И выпадает она именно из за того, что когда выполняется sp_spaceused иногда происходит конфликт блокировок в итоге селект не возвращает ничего и 1С вылетет .
Пытаюсь бороться с этим уже недели и в транзакции запускал и время соединения (таймаут) увеличивал, все равно иногда вылетает.:( :(
Очень обидно так как эту замечательную обработку настроил так чтобы она выгружала информацию о статистике в отдельно стоящую базу, в которой накапливаются данных о наших 15 информационных базах. В итоге наконец то получил общую статистику по размерам. Теперь бы сделать так чтобы сбор статистики работал стабильно, чтобы можно было ее запускать регулярно.
Вопрос к автору. Во первых огромное спасибо за обработку и во вторы можно ли с Вами как то связаться е-майл, телефон, скайп? Может постараемся как то совместно решить данную проблему? Я очень заинтересован в развитии данной обработке и думаю что сделаю следующие дополнительные опции:
1) Выгрузка данных в отдельно стоящее хранилище - простенькая БД с табличками Сервер, БазаДанных, Таблица1С_СКЭЛЬ, ЛогРазмеров на каждую дату.
2) Дополнительно хочу сделать выгрузку по каждой таблице размера индекса и статистике их использования, по аналогии с таблицами получать данные по DM_DB_INDEX_OPERATIONAL_STATS,DM_DB_INDEX_USAGE_STATS, sp_MSindexspace
3) накапливание статистики по рекомендуемым индексам в БД
RS = RS.NextRecordset();
по причине:
Произошла исключительная ситуация (ADODB.Recordset): Текущий проводник не поддерживает возврат нескольких наборов записей в результате одной операции.
аналогичная ситуация
кажется решил проблему с таймаутом и ошибкой Текущий поставщик не поддерживает возврат нескольких наборов записей в результате
попробуйте изменить следующее:
RS = Новый COMОбъект("ADODB.Recordset");
cmd = Новый COMОбъект("ADODB.Command");
cmd.ActiveConnection = Connect;
cmd.CommandText = СтрЗаменить(ШаблонЗапроса,"%ИмяТаблицы%",Строка.ТаблицаSQL);
//Добавляем информацию о тамймауте.
cmd.CommandTimeout=360;
Попытка
//при вызове рекодсета так - он не использует настройки таймаута.
//RS.Open(СтрЗаменить(ШаблонЗапроса,"%ИмяТаблицы%",Строка.ТаблицаSQL), Connect);
//Вызываем рекордсет через RS=cmd.Execute(); RS=cmd.Execute();
Исключение
Сообщить(ОписаниеОшибки());
Сообщить("------------------");
сообщить(СтрЗаменить(ШаблонЗапроса,"%ИмяТаблицы%",Строка.ТаблицаSQL));
КонецПопытки;
1) Была проблема когда параллельно выгружаешь данные из нескольких баз а временная таблица одна. Для каждой базы нужно создавать таблицу со своим имененм. Переменная должна быть инициализирована выше.
2) Добавил перед началом удаление таблицы если она существует.
3) Если по каким то причинам запрос вылетает (у меня иногда бывает, когда запускаешь в консоли - конфликты блокировок, сделал так чтобы команда выполнялась 30 раз в цикле, если возникает какая то проблема.
ШаблонЗапросаУдаления="if exists (select * from tempdb.dbo.sysobjects where id = object_id('tempdb..[#t_"+ИмяБазыДанных+"]') ) drop table #t_"+ИмяБазыДанных+";";
ШаблонЗапроса = "
|SET NOCOUNT ON;
|declare @sucess int;
|declare @count int;
|set @sucess=0;
|set @count=0;
|WHILE @sucess = 0 and @count<30
|BEGIN
| BEGIN TRY
| BEGIN TRANSACTION;
| "+ШаблонЗапросаУдаления+"
| CREATE TABLE #t_"+ИмяБазыДанных+"([Name] varchar(255), [TableRows] varchar(255), [SizeReserved] varchar(255), [DataSize] varchar(255), [IndexSize] varchar(255), [Unused] varchar(255));
| INSERT INTO #t_"+ИмяБазыДанных+"
| exec sp_spaceused N'%ИмяТаблицы%','true';
| SELECT * FROM #t_"+ИмяБазыДанных+" ORDER BY CONVERT(bigint, REPLACE([SizeReserved], ' KB', '')) DESC;
| "+ШаблонЗапросаУдаления+"
| set @sucess=1;
| COMMIT TRANSACTION;
| END TRY
| BEGIN CATCH
| set @count=@count+1;
| WAITFOR DELAY '00:00:05';
| END CATCH
|END ";
ПоказатьВ 1с практически нет связей "один объект - одна таблица" (только для самых примитивных "объектов" - которые представлены примитивными типами данных). Это не реляционная система хранения данных. Чтобы получить объем данных по объекту - нужно по ссылкам найти все завязанные на этот объект данные по всем смежным таблицам.
А вы просто получате данные по списку объектов, который, собственно, вы можете получить любым списком в 1С, а не по самим объектам. И умножить на вес полей в таблице хранения - и получите тот же самый объем таблицы хранения ссылок.
Для каждого объекта выводятся таблицы SQL в которых он хранится.
Регистр - Основная, Итоги.
Документ, Справочник - Основная, Табличные части.
Для каждой реальной таблицы определяется ее размер средством запроса к SQL серверу.
Не понятен крик Вашей души... Что не так?
и вот что там нарисовано:
Регистр накопления "Денежные средства к списанию"
Таблицы: Итоги (_AccumRGT20896)
Основная (_AccumRG20889)
Регистрация изменений (_AccumRGChng20897)
Что вы имели ввиду?
то, что у вас один объект - одна таблица, и подсчет только по этой таблице. А в 1С такого не бывает - чтобы объект занимал одну таблицу (документ там, или справочник; понятно, что можно получить "вес" всех записей регистра - но какое это имеет отношение к "весу", скажем, документов?).
В 1С данные по объектам "размазаны" по базе, а не в одной таблице находятся.
вы одного не поймете - что чтобы получить объем, например, определенного вида документов, нужно оценить все таблицы как самих документов, так и их взаимодействие: проводки по регистрам (что вы и оцениваете как "вес объекта"), использование данных (и создание под это новых структур хранения в базе - т.е. увеличение занимаемого базой места) из них в других объектах и т.д.
Вы тестировали обработку ? Сравнивали полученный результат с размером файла базы данных?
Один в один они конечно не сойдутся, всегда будет отличие на объем служебных таблиц.
Скачайте, сравните, потом претензии....
У меня при формировании выдала ошибку:
Не удалось соединиться с SQL - сервером
{Форма.Форма.Форма(93)}: Ошибка при вызове метода контекста (Open): Произошла исключительная ситуация (Microsoft OLE DB Provider for SQL Server): Ошибка входа пользователя "sa".
Ошибку удалось обойти выбрав сохранить пароль.
Безвариантное представление информации - только дерево, ни фильтров, ни смены сортировки, но это легко решаемо.
Надобность вручную вписать строку подключения напрягла, но не сильно, минут на 5.
А вот что хотелось бы сразу видеть в статье - что запускать обработку надо в той же базе, для которой берешь статистику... А то я было разогнался в другую базу, мол, всё равно строку подключения целиком пишу ;-]
О чем это может говорить и можно ли его урезать каким-то образом?
Простым образом (записать пустой набор записей регистра) не получится.
Простой выход - просто чистить последовательным удалением отдельных записей. Долго, но надежно.
За неделю одна таблица выросла в несколько раз, до 8Gb.
Речь о табличной части Товары документа "Счет на оплату покупателю".
Вот текущее состояние таблицы:
name rows resivedKB dataKB index_sizeKB unusedKB
_Document635_VT19248 1044567 9790240 8356536 1430768 2936
Что было? Ничего криминального не было. Добавлен реквизит (тип: перечисление) в сам документ.
Немного ускорил обработку: получение размеров всех таблицы БД выполняется одним запросом к БД.
Provider=MSDASQL.1;Password=*****;Persist Security Info=True;User ID=1sservice;Extended Properties="Description=1c-test;DRIVER=SQL Server;SERVER=1C-TEST;UID=1sservice;PWD=****;APP=1С:Предприятие 8.3;WSID=1C-TEST"
Такой эррор ловлю по всей базе:
{ВнешняяОбработка.РазмерТаблицБазыДанных.Форма.Форма.Форма(115)}: Ошибка при вызове метода контекста (Execute): Произошла исключительная ситуация (Microsoft SQL Server Native Client 11.0): Объект "_Enum34651" не существует в базе данных "*******", или недопустимо его использование в данной операции.
По всем регистрам, справочникам, перечислениям итд... несколько сот ошибок все объекты базы выводит красиво в списочке...
Переделал обработку на execute как посоветовали
Provider=SQLNCLI11.1;Integrated Security=SSPI;Persist Security Info=False;User ID="";Initial Catalog=********;Data Source=USER-PC;Initial File Name="";Server SPN=""
Где ***** - некоторое имя моей базы на Скуль
Вы можете заказать платную консультацию или разработку у автора. Будет создан приватный заказ на «Бирже заказов» для автора.
№ 128362
Создание 17.05.12 19:49
Обновление 17.05.12 19:49
Просмотры 85257
Загрузки 1135
Рейтинг
123
Комментарии 60
Код открыт Не указано
Рубрики Статистика базы данных
Тип файла Внешняя обработка (ert,epf)
Платформа 1С:Предприятие 8
Конфигурация
1C:Бухгалтерия
,
Универсальные
Операционная система Не имеет значения
Страна Россия
Отрасль Не имеет значения
Налоги Не имеет значения
Вид учета Не имеет значения
Доступ к файлу Абонемент ($m)