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

14.10.22

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

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

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

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

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

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

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

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

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

10000 8000 руб.

02.09.2020    122323    673    389    

716

Генератор схемы компоновки данных (СКД), написание кода схемы программно

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

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

3 стартмани

05.02.2024    4052    25    obmailok    17    

63

СКД на JavaScript в 1С

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

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

2 стартмани

11.12.2023    8169    20    John_d    25    

123

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

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

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

05.12.2023    4662    PROSTO-1C    13    

61

Модель СКД

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

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

1 стартмани

15.11.2023    5815    15    kalyaka    5    

86

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

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

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

01.09.2023    4532    KVIKS    15    

80

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

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

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

2 стартмани

07.06.2023    5373    32    quazare    7    

50

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

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

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

1 стартмани

06.06.2023    6212    echo77    6    

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