Программный вывод скд в дерево значений

1. user2066905 05.08.24 15:50 Сейчас в теме
Люди добрые, прошу помощи, второй день ломаю голову и ничего на ум не приходит.
Нужно сформировать дерево значений из отчёта СКД Анализ начислений и удержаний, но вывод постоянно пустой. Вот код:

СхемаКомпоновкиДанных = Отчеты.АнализНачисленийИУдержаний.ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");

КомпоновщикНастроекДанныхОтчета = Новый КомпоновщикНастроекКомпоновкиДанных; 
КомпоновщикНастроекДанныхОтчета.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных (СхемаКомпоновкиДанных));
КомпоновщикНастроекДанныхОтчета.ЗагрузитьНастройки(СхемаКомпоновкиДанных.ВариантыНастроек.Найти("РасчетныйЛисток").Настройки);

ПараметрыДанных = КомпоновщикНастроекДанныхОтчета.Настройки.ПараметрыДанных.Элементы;
ЭлементПериода = ПараметрыДанных.Найти("Период");
ЭлементПериода.Использование = Истина;
ЭлементПериода.Значение = Период;

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

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


Код отрабатывает, структура отчета в дереве, но значения нулевые
По теме из базы знаний
Найденные решения
10. laperuz 46 06.08.24 10:34 Сейчас в теме
(8) А инициацию запросов механизма представлений кто делать будет?
https://infostart.ru/1c/articles/841337/

После строки
СхемаКомпоновкиДанных = Отчеты.АнализНачисленийИУдержаний.ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");

Добавить
ЗарплатаКадрыОбщиеНаборыДанных.ЗаполнитьОбщиеЗапросы(СхемаКомпоновкиДанных.НаборыДанных);

И еще разрешить использование внешних функций в вычисляемых полях, вместо
ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки, НаборыВнешнихДанных, ДанныеРасшифровки);

должно быть
ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки, НаборыВнешнихДанных, ДанныеРасшифровки, Истина);
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
3. yispepotri 05.08.24 16:16 Сейчас в теме
(1) а какая цель получения данных из СКД, не проще ли собрать нужный запрос и данные из него передать в дерево?
5. user2066905 05.08.24 20:08 Сейчас в теме
(3) не до конца понимаю как собрать запрос зарплаты общий, сказали с скд скопировать, но там внешние наборы данных есть и в ошибку запрос падает, если сможешь подсказать как собрать, буду благодарен
6. yispepotri 06.08.24 08:34 Сейчас в теме
(5) а почему именно дерево, нельзя ли в рамках СКД реализовать что требуется? выводить информацию в том виде, который нужен
9. user2066905 06.08.24 10:23 Сейчас в теме
(6) Нет, после этого мне нужно будет из этого дерева сформировать xml файл
7. lmnlmn 69 06.08.24 08:39 Сейчас в теме
(1) В этом же коде сделайте вывод в табличный документ. Может статься что отчет реально пустой и взращивание дерева тут не причем.
8. user2066905 06.08.24 10:22 Сейчас в теме
(7) Тут вот и вопрос, почему он пустой, что может быть не так
Проверяю формирование напрямую из Расчетного листка, всё формирует
10. laperuz 46 06.08.24 10:34 Сейчас в теме
(8) А инициацию запросов механизма представлений кто делать будет?
https://infostart.ru/1c/articles/841337/

После строки
СхемаКомпоновкиДанных = Отчеты.АнализНачисленийИУдержаний.ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");

Добавить
ЗарплатаКадрыОбщиеНаборыДанных.ЗаполнитьОбщиеЗапросы(СхемаКомпоновкиДанных.НаборыДанных);

И еще разрешить использование внешних функций в вычисляемых полях, вместо
ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки, НаборыВнешнихДанных, ДанныеРасшифровки);

должно быть
ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки, НаборыВнешнихДанных, ДанныеРасшифровки, Истина);
11. user2066905 06.08.24 12:19 Сейчас в теме
(10) ВЫ святейший человек, спасибо вам большое
2. user2066905 05.08.24 15:52 Сейчас в теме
Организация, подразделение, должность, сотрудник - реквизиты формы
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот