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

14.10.22

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

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

Скачать файл

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

Наименование По подписке [?] Купить один файл
Еще один вариант отчета Статистика по документам: (вар.2)
.erf 8,42Kb
13
13 Скачать (1 SM) Купить за 1 850 руб.

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

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

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

См. также

SALE! 15%

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

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

10000 руб.

02.09.2020    159389    872    399    

861

Запросы СКД Программист Стажер Система компоновки данных Россия Бесплатно (free)

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

15.05.2024    8684    implecs_team    6    

47

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

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

3 стартмани

05.02.2024    6992    56    obmailok    21    

79

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

Долгое время поддерживаю web-портал, в котором появилась необходимость создавать отчеты. Просмотрев различные фреймворки на js, я решил сделать свое решение, которое позволяло бы быстро разрабатывать и добавлять новые отчеты на web-портал.

2 стартмани

11.12.2023    10801    23    John_d    25    

124

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

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

05.12.2023    8013    PROSTO-1C    15    

68

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

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

01.09.2023    6613    KVIKS    15    

82

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

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

2 стартмани

07.06.2023    6075    36    quazare    7    

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