Отчет по метаданным. Количество элементов справочников, документов, регистров. Отбор по периоду

27.02.19

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

Отчет по метаданным. Количество элементов справочников, документов, регистров. Есть отбор по периоду для периодических метаданных. Можно использовать для анализа при переносе данных. 8.3.13.1644.

Скачать исходный код

Наименование Файл Версия Размер
Отчет по метаданным. Количество элементов справочников, документов, регистров. Отбор по периоду.
.erf 7,39Kb
67
.erf 7,39Kb 67 Скачать

Отчет строится универсально по метаданным. В данный момент реализовано для справочников. документов, регистров сведений и накоплений. Возможно добавить свои. Показывается количество записей в каждом объекте метаданных. Сделано для сравнения при переносе данных и текущего объема в информационной базе. Тестировалось на 8.3.13.1644.

Сначала делается обход по метаданным. Запросом в цикле получаем количество элементов, собираем в таблицу. Полученную таблицу передаем в СКД для вывода отчета. За счет того, что таблица с данными уже загружена в СКД, можете только настроить структура под себя и нужный отчет готов. Код открытый.

Для желающих сделать все самостоятельно выкладываю код для формирования внешней таблицы, дальше программно формируете отчет на СКД и подключаете внешние данные.

 

Функция ПолучитьТаблицуМетаданных(ПериодЗапроса)
	
	ТЗ = Новый ТаблицаЗначений;
		
	ОписаниеЧисла = Новый ОписаниеТипов("Число");
    ОписаниеСтроки = Новый ОписаниеТипов("Строка");   
    ОписаниеДаты = Новый ОписаниеТипов("Дата");      
    ОписаниеБулева = Новый ОписаниеТипов("Булево");
	
	ТЗ.Колонки.Добавить("Тип",ОписаниеСтроки);
	ТЗ.Колонки.Добавить("Вид",ОписаниеСтроки);
	ТЗ.Колонки.Добавить("Периодичность",ОписаниеБулева);
	ТЗ.Колонки.Добавить("Количество",ОписаниеЧисла);
	
	ТипМД = "Справочник";
	Для Каждого Эл Из Метаданные.Справочники Цикл
		ВидМД = Эл.Имя;
		Запрос = Новый Запрос;
		Запрос.Текст = "Выбрать ЕстьNULL(Сумма(1),0) КАК Количество Из " + ТипМД + "." +ВидМД;
		РезультатЗапроса = Запрос.Выполнить();
		Выборка = РезультатЗапроса.Выбрать();
		Выборка.Следующий();
		
		НоваяСтрока = ТЗ.Добавить();
		НоваяСтрока.Тип = ТипМД;
		НоваяСтрока.Вид = Эл.Имя;
		НоваяСтрока.Периодичность = Ложь;
		НоваяСтрока.Количество = Выборка.Количество;
	КонецЦикла;
	
	ТипМД = "Документ";
	Для Каждого Эл Из Метаданные.Документы Цикл
		ВидМД = Эл.Имя;
		Запрос = Новый Запрос;
		Запрос.Текст = "Выбрать ЕстьNULL(Сумма(1),0) КАК Количество Из " + ТипМД + "." +ВидМД;
		Если ПериодЗапроса <> Неопределено Тогда
			Запрос.Текст = Запрос.Текст + " ГДЕ Дата >= &НачДата И Дата <= &КонДата";
			Запрос.УстановитьПараметр("НачДата",ПериодЗапроса.ДатаНачала);
			Запрос.УстановитьПараметр("КонДата",ПериодЗапроса.ДатаОкончания);
		КонецЕсли;		
		РезультатЗапроса = Запрос.Выполнить();
		Выборка = РезультатЗапроса.Выбрать();
		Выборка.Следующий();
		
		НоваяСтрока = ТЗ.Добавить();
		НоваяСтрока.Тип = ТипМД;
		НоваяСтрока.Вид = Эл.Имя;
		НоваяСтрока.Периодичность = Истина;
		НоваяСтрока.Количество = Выборка.Количество;
	КонецЦикла;
	
	ТипМД = "РегистрСведений";
	Для Каждого Эл Из Метаданные.РегистрыСведений Цикл
		ВидМД = Эл.Имя;
		Запрос = Новый Запрос;
		Запрос.Текст = "Выбрать ЕстьNULL(Сумма(1),0) КАК Количество Из " + ТипМД + "." +ВидМД;
		
		Периодичность = Не Эл.ПериодичностьРегистраСведений = Метаданные.СвойстваОбъектов.ПериодичностьРегистраСведений.Непериодический;
		Если Периодичность И ПериодЗапроса <> Неопределено Тогда
			Запрос.Текст = Запрос.Текст + " ГДЕ Период >= &НачДата И Период <= &КонДата";
			Запрос.УстановитьПараметр("НачДата",ПериодЗапроса.ДатаНачала);
			Запрос.УстановитьПараметр("КонДата",ПериодЗапроса.ДатаОкончания);
		КонецЕсли;		    		
		
		РезультатЗапроса = Запрос.Выполнить();
		Выборка = РезультатЗапроса.Выбрать();
		Выборка.Следующий();
		
		НоваяСтрока = ТЗ.Добавить();
		НоваяСтрока.Тип = ТипМД;
		НоваяСтрока.Вид = Эл.Имя;
		НоваяСтрока.Периодичность = Периодичность;
		НоваяСтрока.Количество = Выборка.Количество;
	КонецЦикла;
	
	ТипМД = "РегистрНакопления";
	Для Каждого Эл Из Метаданные.РегистрыНакопления Цикл
		ВидМД = Эл.Имя;
		Запрос = Новый Запрос;
		Запрос.Текст = "Выбрать ЕстьNULL(Сумма(1),0) КАК Количество Из " + ТипМД + "." +ВидМД;
		
		Если ПериодЗапроса <> Неопределено Тогда
			Запрос.Текст = Запрос.Текст + " ГДЕ Период >= &НачДата И Период <= &КонДата";
			Запрос.УстановитьПараметр("НачДата",ПериодЗапроса.ДатаНачала);
			Запрос.УстановитьПараметр("КонДата",ПериодЗапроса.ДатаОкончания);
		КонецЕсли;		
		
		РезультатЗапроса = Запрос.Выполнить();
		Выборка = РезультатЗапроса.Выбрать();
		Выборка.Следующий();
		
		НоваяСтрока = ТЗ.Добавить();
		НоваяСтрока.Тип = ТипМД;
		НоваяСтрока.Вид = Эл.Имя;
		НоваяСтрока.Периодичность = Истина;
		НоваяСтрока.Количество = Выборка.Количество;
	КонецЦикла;
	
	Возврат ТЗ;
	
КонецФункции

 

Метаданные Анализ БД

См. также

Физический размер таблиц (MSSQL)

Инструменты администратора БД Статистика базы данных Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Инструмент для получения физического размера таблиц ИБ (MSSQL)

1 стартмани

09.01.2024    1542    12    ImHunter    4    

7

Анализ документов: свертка базы, автотесты, динамика роста базы

Статистика базы данных Инструментарий разработчика Тестирование QA Платформа 1С v8.3 1С:Управление торговлей 10 1С:Управление производственным предприятием Абонемент ($m)

Внешняя обработка "Анализ документов и регистров" - можно использовать для детального изучения документов базы, связанных регистров (накопления и сведений). Предварительный анализ документов обычно требуется перед проведением свертки остатков базы, перед обновлением типовых релизов сильно измененной конфигурации, перед переходом на новую программу.

3 стартмани

29.12.2023    1221    8    RustIG    5    

8

Анализ использования номенклатуры

Статистика базы данных Логистика, склад и ТМЦ Платформа 1С v8.3 1С:ERP Управление предприятием 2 Абонемент ($m)

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

1 стартмани

26.10.2023    787    12    dimanich70    0    

4

Сведения о присоединенных файлах

Статистика базы данных Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Внешний отчет для анализа данных присоединенных файлов за произвольный период в любой конфигурации.

2 стартмани

24.10.2023    1732    38    ixijixi    6    

20

История фоновых заданий

Журнал регистрации Статистика базы данных HighLoad оптимизация Конфигурации 1cv8 Абонемент ($m)

Удобный отчет по выполнению фоновых заданий в 1С с разбивкой по разным критериям, например по срокам, в какой последовательности, выполнение дольше всех, сколько одновременно и так далее.

5 стартмани

04.09.2023    881    6    Maxiko    0    

8

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

Статистика базы данных Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Отчет выводит на экран количество документов в информационной базе. Это позволяет косвенно оценить объем данных в информационной базе. Данная информация может быть полезна, например, если предполагается свернуть информационную базу на определенную дату. От количества документов очень сильно зависит время свертки базы.

1 стартмани

16.08.2023    688    15    pwn    1    

3

Статистика по документам пользователя с версионированием по дате

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

Вывод документов, созданных или отредактированных пользователем за период, в том числе с возможностью "заглянуть" в версии документа на дату.

5 стартмани

30.06.2023    1954    10    nemec    7    

5
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. pelmenex 19.07.22 13:35 Сейчас в теме
По мне лучше как то так написать:
МассивМД = Новый Соответствие;
МассивМД.Вставить("Документ","Документы");
МассивМД.Вставить("Справочник","Справочники");
МассивМД.Вставить("РегистрНакопления","РегистрыНакопления");
МассивМД.Вставить("РегистрСведений","РегистрыСведений");
Запрос = Новый Запрос;
Для каждого ТипМД из МассивМД Цикл
	Для каждого Мд из Метаданные[ТипМД.Значение] Цикл
		
		ВидМД = Мд.Имя;
		Запрос.Текст = "Выбрать ЕстьNULL(Сумма(1),0) КАК Количество Из " + ТипМД.Ключ + "." +ВидМД;
		РезультатЗапроса = Запрос.Выполнить();
		Выборка = РезультатЗапроса.Выбрать();
		Выборка.Следующий();
		Если Выборка.Количество > 0 Тогда
			Сообщить(ТипМД.Ключ + "." + ВидМД + ": " + Выборка.Количество);
		КонецЕсли;	
	КонецЦикла;	
КонецЦикла;
Показать
user1767032; user870478; itcorpru; aezdakov; nekotina; +5 Ответить
Оставьте свое сообщение