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