Шаблон кросс-таблицы с иерархией на СКД

22.12.18

Разработка - Инструментарий разработчика

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

Скачать файл

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

Наименование По подписке [?] Купить один файл
ДДС по месяцам и кварталам (Простой отчет):
.erf 29,99Kb
22
22 Скачать (1 SM) Купить за 1 850 руб.
ДДС по счетам в разрезе валют (Сложный отчет)
.erf 31,80Kb
14
14 Скачать (1 SM) Купить за 1 850 руб.

Добрый день! Представляю вашему вниманию пример реализации отчета кросс-таблицы с иерархией и жестко заданной структурой вывода на примере  двух отчетов для БП 3.0:

1. ДДС по месяцам и кварталам (Простой отчет);

2. ДДС по счетам в разрезе валют (Сложный отчет).

Предпосылки:

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

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

     Несмотря на то, что данный шаблон является своего рода "велосипедом", на моей практике он помогал мне на порядок минимизировать трудозатраты и реализовывать достаточно сложные отчеты.

Основной алгоритм разработанного шаблона:

1. Разработка схемы компоновки данных;

2. Вывод данных в дерево значений;

3. Создание нового дерева значений с нужными колонками кросс-таблицы;

4. Заполнение кросс-таблицы на основании дерева значений СКД;

5. Вывод кросс-таблицы в табличный документ.

1. Схема компоновки данных для отчета ДДС по месяцам и кварталам.

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

1.2 Схема компоновки данных по счетам в разрезе валют (Сложный отчет).

Этот  вариант отчета выводит данные по всем организациям, по счетам БУ 50,51,52,55 с горизонтальными итогами в разрезе регламентированной валюты.

Основными удобствами при использовании шаблона является удобная программная структура, позволяющая разрабатывать сложный отчет различными способами, а также процедуры представленные ниже:

1. Процедура заполнения кросс-таблицы на основание дерева значений.

Процедура ЗаполнитьДанныеОтчетаРекурсивно(ДанныеКомпоновкиДанныхСтроки, ОсновнаяТаблица, СтруктураВывода)
	
	Для каждого ДанныеКомпоновкиДанныхСтрока Из ДанныеКомпоновкиДанныхСтроки.Строки Цикл
		
		Если ЗначениеЗаполнено(ДанныеКомпоновкиДанныхСтрока.ПериодМесяц) Тогда
			
			ИмяКолонкиМесяца = ПредставлениеМесяца(ДанныеКомпоновкиДанныхСтрока.ПериодМесяц);
			СуммаОборот       =  ДанныеКомпоновкиДанныхСтрока.СуммаОборот;
			
			УстновитьЗначениеРеквизитаРодителяРекурсивно(ОсновнаяТаблица, ИмяКолонкиМесяца,  СуммаОборот); 
			УстновитьЗначениеРеквизитаРодителяРекурсивно(ОсновнаяТаблица, "Итого",  СуммаОборот); 
				
		Иначе
			
			НСтр = ОсновнаяТаблица.Строки.Добавить();
			ЗаполнитьЗначенияСвойств(НСтр, ДанныеКомпоновкиДанныхСтрока); 
			
			Если ЗначениеЗаполнено(ДанныеКомпоновкиДанныхСтрока.Контрагент) Тогда	 
				
				НСтр.КолонкаГруппировки = ДанныеКомпоновкиДанныхСтрока.Контрагент;
				
			ИначеЕсли ЗначениеЗаполнено(ДанныеКомпоновкиДанныхСтрока.СДДС) Тогда	
				НСтр.КолонкаГруппировки = ДанныеКомпоновкиДанныхСтрока.СДДС;
				
			ИначеЕсли ЗначениеЗаполнено(ДанныеКомпоновкиДанныхСтрока.ТипДвижения) Тогда
				НСтр.КолонкаГруппировки = ДанныеКомпоновкиДанныхСтрока.ТипДвижения;				
			КонецЕсли;
			
			ЗаполнитьДанныеОтчетаРекурсивно(ДанныеКомпоновкиДанныхСтрока,  НСтр, СтруктураВывода);	
		КонецЕсли;
		
	КонецЦикла;
	
	
КонецПроцедуры 

2. Процедура, устанавливающая значение ресурса во всех родительских группировках.

Процедура УстновитьЗначениеРеквизитаРодителяРекурсивно(Родитель, ИмяРеквизта, ЗначениеРеквизита)
	
	
	Если НЕ ЗначениеЗаполнено(Родитель) Или  ЗначениеРеквизита = NULL Тогда
		Возврат;
	КонецЕсли;
	
	Родитель[ИмяРеквизта] = Родитель[ИмяРеквизта] + ЗначениеРеквизита; 
	
	УстновитьЗначениеРеквизитаРодителяРекурсивно(Родитель.Родитель, ИмяРеквизта, ЗначениеРеквизита);
	
	
КонецПроцедуры

3. Процедура, выполняющая рекурсивный вывод созданной кросс-таблицы в табличный документ.

Процедура ВывестиРекурсивно(ДокументРезультат, СтруктураВывода, Строки, ЗНАЧ Уровень)
	
	Для каждого Эл Из Строки Цикл
		
		Если Эл.Родитель <> Неопределено И Эл.КолонкаГруппировки = Эл.Родитель.КолонкаГруппировки И  Эл.Родитель.Строки.Количество()  = 1  Тогда
			Продолжить;
		КонецЕсли;
		
		ЗаполнитьПараметры(ДокументРезультат, СтруктураВывода, Эл, Уровень, );
		ДокументРезультат.НачатьГруппуСтрок();
		ВывестиРекурсивно(ДокументРезультат, СтруктураВывода, Эл.Строки, Уровень + 1); 
		ДокументРезультат.ЗакончитьГруппуСтрок();
		
	КонецЦикла;
	
	
КонецПроцедуры

Данная обработка тестировалась на 1С:Предприятие 8.3 (8.3.12.1714)  в Бухгалтерия предприятия, редакция 3.0 (3.0.43.239).

 

Кросс таблица СКД

См. также

SALE! 15%

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

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

10000 руб.

02.09.2020    160285    882    399    

866

SALE! 15%

Инструментарий разработчика Чистка данных Свертка базы Инструменты администратора БД Системный администратор Программист Руководитель проекта Платформа 1С v8.3 Конфигурации 1cv8 1С:Управление торговлей 10 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 Россия Платные (руб)

Инструмент представляет собой обработку для проведения свёртки или обрезки баз данных. Работает на ЛЮБЫХ конфигурациях (УТ, БП, ERP и т.д.). Поддерживаются управляемые и обычные формы. Может выполнять свертку сразу нескольких баз данных и выполнять их автоматически без непосредственного участия пользователя.

8400 7140 руб.

20.08.2024    8101    60    28    

71

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

Инструмент для написания и отладки кода в режиме «1С:Предприятие». Представляет собой консоль кода с возможностью пошаговой отладки, просмотра значений переменных любых типов, использования процедур и функций, просмотра стека вызовов, вычисления произвольных выражений на встроенном языке в контексте точки останова, синтаксического контроля и остановки по ошибке. В консоли используется удобный редактор кода с подсветкой, контекстной подсказкой, возможностью вызова конструкторов запроса и форматной строки.

9360 руб.

17.05.2024    23645    69    45    

118

SALE! 15%

Пакетная печать Печатные формы Инструментарий разработчика Программист Платформа 1С v8.3 Запросы 1С:Зарплата и кадры бюджетного учреждения 1С:Конвертация данных 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 Платные (руб)

Инструмент, позволяющий абсолютно по-новому взглянуть на процесс разработки печатных форм. Благодаря конструктору можно значительно снизить затраты времени на разработку печатных форм, повысить качество и "прозрачность" разработки, а также навести порядок в многообразии корпоративных печатных форм.

22200 19980 руб.

06.10.2023    15514    36    7    

71

SALE! 15%

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

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

10000 8500 руб.

10.11.2023    10543    37    27    

62

SALE! 35%

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

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

4800 3120 руб.

14.01.2013    188212    1141    0    

912

SALE! 15%

Инструментарий разработчика Программист 8.3.14 1С:Конвертация данных Россия Платные (руб)

Расширение для конфигурации “Конвертация данных 3”. Добавляет подсветку синтаксиса, детальную контекстную подсказку, глобальный поиск по коду.

15000 12750 руб.

07.10.2021    17370    6    32    

42

Инструментарий разработчика Программист Платные (руб)

Менеджер конфигураций 1С — альтернативный стартер информационных баз 1С:Предприятие.

1800 руб.

21.02.2023    7767    8    35    

23
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Светлый ум 417 09.09.19 06:56 Сейчас в теме
Кросс таблица с СКД - интересно, взял на вооружение +1
3. WI_IL 126 28.11.19 17:06 Сейчас в теме
(1) Спасибо, надеюсь не перемудрил с логикой.
2. lmnlmn 69 09.09.19 08:25 Сейчас в теме
Боюсь что программный вывод куда бы то ни было и программная обработка СКД из велосипеда превращается в "мейнстрим".
Оставьте свое сообщение