Еще один вариант отчета Статистика по документам

14.10.22

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

Отчет на базе СКД с отображением статистики по проведенным документам за указанный период с возможностью отбора по организации.

Скачать файлы

Наименование Файл Версия Размер
Еще один вариант отчета Статистика по документам: (вар.2)
.erf 8,42Kb
10
.erf 8,42Kb 10 Скачать

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

мШаблонО="ВЫБРАТЬ
	         |	КОЛИЧЕСТВО(Док.Ссылка) КАК Счетчик,
	         |	""АвансовыйОтчет"" КАК Имя,
	         |	Док.Организация КАК Организация
	         |ИЗ
	         |	Документ.АвансовыйОтчет КАК Док
	         |ГДЕ
	         |	Док.Дата <= &Дата2
	         |	И Док.Дата >= &Дата1
	         |	И Док.Проведен = ИСТИНА
	         |{ГДЕ
	         |	Док.Организация.*}
	         |
	         |СГРУППИРОВАТЬ ПО
	         |	Док.Организация";

	мШаблон="ВЫБРАТЬ
	        |	КОЛИЧЕСТВО(Док.Ссылка) КАК Счетчик,
	        |	""АвансовыйОтчет"" КАК Имя,
	        |	NULL КАК Организация
	        |ИЗ
	        |	Документ.АвансовыйОтчет КАК Док
	        |ГДЕ
	        |	Док.Дата <= &Дата2
	        |	И Док.Дата >= &Дата1
	        |	И Док.Проведен = ИСТИНА";

мШаблонО предназначен для документов, у которых присутствует реквизит Организация, мШаблон - для остальных. Ниже приводится код для заполнения схемы запроса.

Схема=новый СхемаЗапроса; 	
	н=0;
	для каждого мета  из Метаданные.Документы цикл
		
		если мета.Реквизиты.Найти("Организация")<>неопределено тогда
			мТекстЗапроса=СтрЗаменить(мШаблонО,"АвансовыйОтчет",мета.Имя);
		иначе
			мТекстЗапроса=СтрЗаменить(мШаблон ,"АвансовыйОтчет",мета.Имя);
		конецесли;	
		
		
		если н=0 тогда
	            схема.УстановитьТекстЗапроса(мТекстЗапроса);
				мОператоры=схема.ПакетЗапросов[0].Операторы;
		иначе	                     
			буфер=новый СхемаЗапроса;        	
			буфер.УстановитьТекстЗапроса(мТекстЗапроса);
			мОператоры.Добавить(буфер.ПакетЗапросов[0].Операторы[0]);             
		конецесли;
		н=н+1;
    конеццикла;

Каждый запрос, кроме первого добавляется в коллекцию операторы.  Текст итогового запроса возвращает функция ПолучитьТекстЗапроса().

мТекст=Схема.ПолучитьТекстЗапроса();

В рассмотренном коде используется шаблон текста запроса. Код получился достаточно понятным. Но интересно было бы все сделать только средствами объекта СхемаЗапроса. Теперь мы расширили список полей запроса и добавили реквизит документа Проведен. Ниже приводится именно такой вариант.

    Схема=новый СхемаЗапроса; 	
	н=0;
	для каждого мета  из Метаданные.Документы цикл
		
		
		если н=0 тогда
				мОператор=схема.ПакетЗапросов[0].Операторы[0];
	 	иначе	                     
				мОператор=схема.ПакетЗапросов[0].Операторы.Добавить();			
		конецесли;
		мИсточник=мОператор.Источники.Добавить("Документ."+мета.Имя)   ;
		мИсточник.Источник.Псевдоним="Док";
		
		мОператор.ВыраженияОтбораКомпоновкиДанных.Добавить("Док.Дата");
		мОператор.ВыраженияОтбораКомпоновкиДанных.Добавить("Док.Проведен");
		
		
		мПоле    =мОператор.ВыбираемыеПоля.Добавить("КОЛИЧЕСТВО(Док.Ссылка)");
		мПоле    =мОператор.ВыбираемыеПоля.Добавить(""""+мета.Имя+"""");
		мПоле    =мОператор.ВыбираемыеПоля.Добавить("Док.Проведен");
		
		
		
		если мета.Реквизиты.Найти("Организация")=неопределено тогда
			мПоле    =мОператор.ВыбираемыеПоля.Добавить("NULL");	 
		иначе  
			мПоле    =мОператор.ВыбираемыеПоля.Добавить("Док.Организация");	
			мОператор.ВыраженияОтбораКомпоновкиДанных.Добавить("Док.Организация");
		конецесли;
		н=н+1;
    конеццикла;

	схема.ПакетЗапросов[0].Колонки[0].Псевдоним="Счетчик";
	схема.ПакетЗапросов[0].Колонки[1].Псевдоним="Имя";
    инд=схема.ПакетЗапросов[0].Колонки.Количество()-1;
	мИмя=схема.ПакетЗапросов[0].Колонки[инд].Псевдоним;
	если СтрНайти(мИмя,"Поле")<>0 тогда
				схема.ПакетЗапросов[0].Колонки.Удалить(инд);
	конецесли; 
	мТекст=Схема.ПолучитьТекстЗапроса();

 

 

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

Разработанный отчет тестировался  на платформе 1С:Предприятие 8.3 (8.3.21.1508) в операционной системе Windows, в конфигурации Бухгалтерия предприятия КОРП, редакция 3.0 (3.0.100.16) .

Статистика по видам документов

См. также

Infostart Toolkit: Инструменты разработчика 1С 8.3 на управляемых формах

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

Набор инструментов программиста и специалиста 1С для всех конфигураций на управляемых формах. В состав входят инструменты: Консоль запросов, Консоль СКД, Консоль кода, Редактор объекта, Анализ прав доступа, Метаданные, Поиск ссылок, Сравнение объектов, Все функции, Подписки на события и др. Редактор запросов и кода с раскраской и контекстной подсказкой. Доработанный конструктор запросов тонкого клиента. Продукт хорошо оптимизирован и обладает самым широким функционалом среди всех инструментов, представленных на рынке.

12000 руб.

02.09.2020    102259    568    385    

615

Использование менеджера временных таблиц в СКД

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

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

05.12.2023    2340    ProgrammingStore    13    

49

Модель СКД

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

DSL для работы с СКД.

1 стартмани

15.11.2023    4189    10    kalyaka    4    

82

Разрыв страницы в СКД. Легко!

СКД Платформа 1С v8.3 Система компоновки данных Бесплатно (free)

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

01.09.2023    3276    KVIKS    15    

76

Гибкие отборы через СКД на управляемых формах. Демо-обработка

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

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

2 стартмани

07.06.2023    4642    26    quazare    7    

46

Вывод элементов иерархии верхнего уровня на СКД

СКД Платформа 1С v8.3 Абонемент ($m)

Как получить родителя первого уровня иерархического справочника с помощью СКД.

1 стартмани

06.06.2023    4292    echo77    6    

72

Обработка результатов запроса произвольными вычисляемыми полями. Обзор некоторых новых функций СКД

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

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

07.02.2023    5601    quazare    8    

38
Оставьте свое сообщение