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

27.02.19

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

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

Скачать файл

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

Наименование По подписке [?] Купить один файл
Отчет по метаданным. Количество элементов справочников, документов, регистров. Отбор по периоду.
.erf 7,39Kb
73
73 Скачать (1 SM) Купить за 1 850 руб.

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

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

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

 

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

 

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

См. также

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

Анализ количества записей регистров/документов/справочников, в том числе в динамике.

13.11.2024    406    47    evgeni-red    2    

5

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

«Навигатор метаданных» поможет изучать структуру данных конфигурации, переходить по связям между объектами конфигурации.Для аналитиков и разработчиков.

1 стартмани

11.09.2024    1113    15    m_kislyak    3    

9

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

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

1 стартмани

10.09.2024    3293    40    pahno    8    

7

Статистика базы данных Программист Платформа 1С v8.3 1С:Комплексная автоматизация 2.х Россия Абонемент ($m)

Данная обработка - алгоритм предлагает оценку вашей базы на количество тех или иных типов документов с их реквизитами.

6 стартмани

12.08.2024    754    0    aximo    2    

3

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

Объединен, унифицирован и значительно улучшен функционал двух исходных обработок для контроля размеров таблиц хранения 1С в серверных базах: https://infostart.ru/1c/tools/128362/ (для MS SQL) и https://infostart.ru/1c/tools/978816/ (для PG SQL).

1 стартмани

16.05.2024    1665    43    yuraos    4    

10

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

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

1 стартмани

29.12.2023    2176    13    RustIG    5    

9

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

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

1 стартмани

26.10.2023    1342    18    dimanich70    0    

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