Идея публикации аналогична infostart.ru/public/1144838/.
Порой требуется провести экспресс оценку ведения учета в базе. Приложенный отчет позволяет вывести количество всех документов и элементов справочников в базе 1С.
Ниже код формы отчета.
&НаСервере
Процедура СформироватьНаСервере()
ТабДок.НачатьАвтогруппировкуСтрок();
ОтчетОбъект = РеквизитФормыВЗначение("Отчет");
Макет = ОтчетОбъект.ПолучитьМакет("Макет");
ТабДок.Очистить();
ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");
ОбластьЗаголовок.Параметры.Заголовок = "Количество документов";
ТабДок.Вывести(ОбластьЗаголовок, 0);
ОбластьШапкаТаблицы = Макет.ПолучитьОбласть("ШапкаТаблицы");
ОбластьГод = Макет.ПолучитьОбласть("Год");
ОбластьПроведен = Макет.ПолучитьОбласть("Проведен");
Для Номер = 1 По Метаданные.Документы.Количество() Цикл
ИмяДок = Метаданные.Документы.Получить(Номер-1).Имя;
Если Не ПравоДоступа("Чтение", Метаданные.Документы.Получить(Номер-1)) Тогда
Продолжить;
КонецЕсли;
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ РАЗРЕШЕННЫЕ
| ГОД(Документ.Дата) КАК Год,
| ВЫБОР
| КОГДА Документ.Проведен
| ТОГДА ""Проведен""
| ИНАЧЕ ""Не проведен""
| КОНЕЦ КАК Проведен,
| Документ.Ссылка КАК Ссылка
|ИЗ
| Документ.ПоступлениеТоваров КАК Документ
|ИТОГИ
| КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Ссылка)
|ПО
| ОБЩИЕ,
| Год,
| Проведен";
Запрос.Текст = СтрЗаменить(Запрос.Текст, "ПоступлениеТоваров", ИмяДок);
РезультатЗапроса = Запрос.Выполнить();
ВыборкаОбщие = РезультатЗапроса.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока ВыборкаОбщие.Следующий() Цикл
ОбластьШапкаТаблицы.Параметры.Заполнить(ВыборкаОбщие);
ОбластьШапкаТаблицы.Параметры.ИмяОбъекта = ИмяДок;
ТабДок.Вывести(ОбластьШапкаТаблицы, 1);
ВыборкаГод = ВыборкаОбщие.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока ВыборкаГод.Следующий() Цикл
ОбластьГод.Параметры.Заполнить(ВыборкаГод);
ТабДок.Вывести(ОбластьГод, 2);
ВыборкаПроведен = ВыборкаГод.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока ВыборкаПроведен.Следующий() Цикл
ОбластьПроведен.Параметры.Заполнить(ВыборкаПроведен);
ТабДок.Вывести(ОбластьПроведен, 3);
КонецЦикла;
КонецЦикла;
КонецЦикла;
КонецЦикла;
ОбластьЗаголовок.Параметры.Заголовок = "Количество справочников";
ТабДок.Вывести(ОбластьЗаголовок, 0);
Для Номер = 1 По Метаданные.Справочники.Количество() Цикл
ИмяСпр = Метаданные.Справочники.Получить(Номер-1).Имя;
Если Не ПравоДоступа("Чтение", Метаданные.Справочники.Получить(Номер-1)) Тогда
Продолжить;
КонецЕсли;
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ РАЗРЕШЕННЫЕ
| КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Справочник.Ссылка) КАК Ссылка
|ИЗ
| Справочник.Номенклатура КАК Справочник";
Запрос.Текст = СтрЗаменить(Запрос.Текст, "Номенклатура", ИмяСпр);
РезультатЗапроса = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
ОбластьШапкаТаблицы.Параметры.Заполнить(ВыборкаДетальныеЗаписи);
ОбластьШапкаТаблицы.Параметры.ИмяОбъекта = ИмяСпр;
ТабДок.Вывести(ОбластьШапкаТаблицы, 2);
КонецЦикла;
КонецЦикла;
ТабДок.ЗакончитьАвтогруппировкуСтрок();
КонецПроцедуры
Тестировалось на платформе 1С:Предприятие 8.3 (8.3.20.1590), конфигурациях Розница, редакция 2.3 (2.3.10.32), 1С:ERP Управление предприятием 2 (2.5.7.255).