Часто возникает необходимость получать поля группировке при расшифровке в отчете СКД. Я немного упростил себе эту задачу и написал функцию. Под катом код для управляемых форм и обычных
Для обычного приложения:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
Процедура ПолучитьЗначенияПолейГруппировок(ПолеИлиГруппировка,СтруктураПолей) МассивРодителей = ПолеИлиГруппировка.ПолучитьРодителей(); Для Каждого Стр из МассивРодителей Цикл Если ТипЗнч(Стр) = Тип("ЭлементРасшифровкиКомпоновкиДанныхГруппировка") Тогда ПолучитьЗначенияПолейГруппировок(Стр,СтруктураПолей); ИначеЕсли ТипЗнч(Стр) = Тип("ЭлементРасшифровкиКомпоновкиДанныхПоля") Тогда ПоляГруппировки = Стр.ПолучитьПоля(); Для Каждого гСтр из ПоляГруппировки Цикл Если СтруктураПолей.Свойство(гСтр.Поле) Тогда Если Не ЗначениеЗаполнено(СтруктураПолей[гСтр.Поле]) Тогда СтруктураПолей[гСтр.Поле] = гСтр.Значение; КонецЕсли; КонецЕсли; ПолучитьЗначенияПолейГруппировок(Стр,СтруктураПолей); КонецЦикла; КонецЕсли; КонецЦикла; КонецПроцедуры СтруктураПолейГруппировок = Новый Структура("Документ, Поставщик"); ПолучитьЗначенияПолейГруппировок(ДанныеРасшифровки.Элементы[Область.Расшифровка],СтруктураПараметров); |
Для управляемых форм:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
&НаСервере Процедура ПолучитьСтруктуруВозврата(ПолеИлиГруппировка,СтруктураПолей) МассивРодителей = ПолеИлиГруппировка.ПолучитьРодителей(); Для Каждого Стр из МассивРодителей Цикл Если ТипЗнч(Стр) = Тип("ЭлементРасшифровкиКомпоновкиДанныхГруппировка") Тогда ПолучитьСтруктуруВозврата(Стр,СтруктураПолей); ИначеЕсли ТипЗнч(Стр) = Тип("ЭлементРасшифровкиКомпоновкиДанныхПоля") Тогда ПоляГруппировки = Стр.ПолучитьПоля(); Для Каждого гСтр из ПоляГруппировки Цикл Если СтруктураПолей.Свойство(гСтр.Поле) Тогда Если Не ЗначениеЗаполнено(СтруктураПолей[гСтр.Поле]) Тогда СтруктураПолей[гСтр.Поле] = гСтр.Значение; КонецЕсли; КонецЕсли; ПолучитьСтруктуруВозврата(Стр,СтруктураПолей); КонецЦикла; КонецЕсли; КонецЦикла; КонецПроцедуры &НаСервере Функция ПолучитьДанныеРасшифровки(Расшифровка,СтруктураВозврата); Данные = ПолучитьИзВременногоХранилища(ДанныеРасшифровки); ПолучитьСтруктуруВозврата(Данные.Элементы[Расшифровка],СтруктураВозврата); КонецФункции // ПолучитьДанныеРасшифровки() СтруктураВозврата = Новый Структура("КонтактноеЛицо,График"); ПолучитьДанныеРасшифровки(Расшифровка,СтруктураВозврата); |