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