Есть возможность сформировать список всех объектов метаданных и отметить нужные к замеру. Результат замера выводится в таблицу. Имеется возможность сортировки объектов по количеству записей и вывода результата в Excel. Обработка легко подключается к базе в качестве дополнительной глобальной обработки. Работает в небезопасном режиме (для чтения объектов метаданных без права администрирования).
Писалась для ERP 2.4.7.151, платформу 8.3.13.1644. Работает в ЗУП 3.1.9.159. По идее должна работать и в других конфигурациях на БСП.
&НаСервере
Процедура НачатьЗамерНаСервере()
УстановитьПривилегированныйРежим(Истина);
Для каждого ОбъектКЗамеру Из Объект.ВыбранныеОбъектыМетаданных Цикл
Если Не ОбъектКЗамеру.Отметка Тогда
Продолжить;
КонецЕсли;
ТипЗнчВыбранныйСтрокой = ОбъектКЗамеру.ПолноеИмяОбъектаМетаданных;
МетаданныеКЗамеру = Метаданные.НайтиПоПолномуИмени(ТипЗнчВыбранныйСтрокой);
Если СтрНайти(МетаданныеКЗамеру.ПолноеИмя(), "РегистрСведений") > 0 Тогда
Попытка
НаборЗаписей = РегистрыСведений[МетаданныеКЗамеру.Имя].СоздатьНаборЗаписей();
НаборЗаписей.Прочитать();
КоличествоЗаписей = НаборЗаписей.Количество();
Строка = Объект.Результат.Добавить();
Строка.ОбъектМетаданных = ОбъектКЗамеру.ПолноеИмяОбъектаМетаданных;
Строка.КоличествоЗаписей = КоличествоЗаписей;
Исключение
Сообщить("ОшибкаОбработкиОбъекта "+МетаданныеКЗамеру.ПолноеИмя()+" "+ОписаниеОшибки());
Продолжить;
КонецПопытки;
КонецЕсли;
Если СтрНайти(МетаданныеКЗамеру.ПолноеИмя(), "РегистрНакопления") > 0 Тогда
Попытка
НаборЗаписей = РегистрыНакопления[МетаданныеКЗамеру.Имя].СоздатьНаборЗаписей();
НаборЗаписей.Прочитать();
КоличествоЗаписей = НаборЗаписей.Количество();
Строка = Объект.Результат.Добавить();
Строка.ОбъектМетаданных = ОбъектКЗамеру.ПолноеИмяОбъектаМетаданных;
Строка.КоличествоЗаписей = КоличествоЗаписей;
Исключение
Сообщить("ОшибкаОбработкиОбъекта "+МетаданныеКЗамеру.ПолноеИмя()+" "+ОписаниеОшибки());
Продолжить;
КонецПопытки;
КонецЕсли;
Если СтрНайти(МетаданныеКЗамеру.ПолноеИмя(), "Документ") > 0 Тогда
Попытка
ВыборкаДокументов = Документы[МетаданныеКЗамеру.Имя].Выбрать();
КоличествоЗаписей = 0;
Пока ВыборкаДокументов.Следующий() Цикл
КоличествоЗаписей = КоличествоЗаписей + 1;
КонецЦикла;
Строка = Объект.Результат.Добавить();
Строка.ОбъектМетаданных = ОбъектКЗамеру.ПолноеИмяОбъектаМетаданных;
Строка.КоличествоЗаписей = КоличествоЗаписей;
Исключение
Сообщить("ОшибкаОбработкиОбъекта "+МетаданныеКЗамеру.ПолноеИмя()+" "+ОписаниеОшибки());
Продолжить;
КонецПопытки;
КонецЕсли;
Если СтрНайти(МетаданныеКЗамеру.ПолноеИмя(), "Справочник") > 0 Тогда
Попытка
ВыборкаСправочников = Справочники[МетаданныеКЗамеру.Имя].Выбрать();
КоличествоЗаписей = 0;
Пока ВыборкаСправочников.Следующий() Цикл
КоличествоЗаписей = КоличествоЗаписей + 1;
КонецЦикла;
Строка = Объект.Результат.Добавить();
Строка.ОбъектМетаданных = ОбъектКЗамеру.ПолноеИмяОбъектаМетаданных;
Строка.КоличествоЗаписей = КоличествоЗаписей;
Исключение
Сообщить("ОшибкаОбработкиОбъекта "+МетаданныеКЗамеру.ПолноеИмя()+" "+ОписаниеОшибки());
Продолжить;
КонецПопытки;
КонецЕсли;
КонецЦикла;
УстановитьПривилегированныйРежим(Ложь);
КонецПроцедуры
вот это
КоличествоЗаписей = 0;
Пока ВыборкаДокументов.Следующий() Цикл
КоличествоЗаписей = КоличествоЗаписей + 1;
КонецЦикла;
лучше заменить на Запрос который вернет количество
и для справочников можно аналогично
«Рука лицо» — в то время как наши кОрабли бороздят просторы вселенной, в 2019 году мы считаем количество записей в таблицах через чтение набора записей и выборки, а если там миллионов 10 записей?
Бедная ERP
(3) зачем ? уже написали в (1) и (2) , не на мисте .
(4) Просто с таким уровнем представляю, что в ЕРП они нашкодили — эта мысль основная (Как говорил Штирлиц, запоминается только последняя часть разговора, а у вас наоборот :))
С ее требованиями и подобными разработками никаких серверов не хватит. И Вас не смущает, что автор мало того, что «денюшку» просит, да еще и не отписался по комментариям 1/2? Вот зайдет какой-нибудь неокрепший ум и возьмет данный код (не читая комментов) на вооружение и пополнит ряды сами знаете кого.
Подарок