Получение значения расшифровки и значений вышестоящих группировок расшифровки в отчете СКД
Ниже приводится небольшой кусок кода, позволяющий получить значение расшифровки и значения всех вышестоящих группировок расшифровки в отчете построенном на СКД при использовании обычных форм. Имя поля и значение просто выводится пользователю в сообщении. Соответственно, вы можете вставить свой алгоритм вместо вывода сообщений.
Реализовано с помощью рекурсивного вызова процедуры, получающей значения вышестоящей группировки.
- Описание
- Подробнее
Описание
В форме для поля «Результат» определим для события «ОбработкаРасшифровки» процедуру «РезультатОбработкиРасшифровки». И, соответствено, тело процедуры будет следующим:
Процедура РезультатОбработкаРасшифровки(Элемент, Расшифровка, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
//Значение текущего поля
Поле = ДанныеРасшифровки.Элементы[Расшифровка].ПолучитьПоля()[0];
Сообщить("Поле: " + Поле.Поле + ", значение: " + Поле.Значение);
//Значения всех вышестоящих группировок
ВывестиЗначениеГруппировки(Расшифровка);
КонецПроцедуры Где процедура «ВывестиЗначениеГруппировки» имеет следующее содержание:
Процедура ВывестиЗначениеГруппировки(ТекРасшифровка)
МассивРодителей = ДанныеРасшифровки.Элементы[ТекРасшифровка].ПолучитьРодителей();
Для СчРодителей = 1 По МассивРодителей.Количество() Цикл
ПолеРодитель = МассивРодителей[СчРодителей-1];
Если Число(ПолеРодитель.Идентификатор) > 0 Тогда
//Получим текущее поле
Если ТипЗнч(ПолеРодитель) = Тип("ЭлементРасшифровкиКомпоновкиДанныхПоля") Тогда
МассивПолей = ПолеРодитель.ПолучитьПоля();
ИначеЕсли ТипЗнч(ПолеРодитель) = Тип("ЭлементРасшифровкиКомпоновкиДанныхГруппировка") Тогда
МассивПолей = ПолеРодитель.ПолучитьРодителей()[0].ПолучитьПоля();
КонецЕсли;
Для СчПолей = 1 По МассивПолей.Количество() Цикл
Поле = МассивПолей[СчПолей-1];
//Выведем значения текущей расшифровки
Сообщить("Поле: " + Поле.Поле + ", значение: " + Поле.Значение);
//Рекурсивный вызов процедуры.
РасшифровкиВыше = ПолеРодитель.ПолучитьРодителей()[0].Идентификатор;
ВывестиЗначениеГруппировки(РасшифровкиВыше);
КонецЦикла;
КонецЕсли;
КонецЦикла;
КонецПроцедурыПример работы данных процедур можно посмотреть здесь

