Сделаем простейший отчет СКД.Пусть в нем будет выборка из спр Номенклатура.

Запрос для отчета будет такой:
ВЫБРАТЬ ПЕРВЫЕ 200 Номенклатура.Ссылка, Номенклатура.КодИЗ Справочник.Номенклатура КАК Номенклатура


Выведем 2 колонки: Ссылка и код.




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

1 Создадим форму для отчета и установим процедуру на событие "Обработка расшифровки"


2 Листинг процедур:

&НаКлиенте
Процедура РезультатОбработкаРасшифровки(Элемент, Расшифровка, СтандартнаяОбработка)
	перем ааа;
	
	стПолеРасшифровки=ПолучитьРасшифровкуНаСервере(Расшифровка);
	имяПоля=стПолеРасшифровки["НаименованиеПоля"];
	ЗначениеПоля=стПолеРасшифровки["ЗначениеПоля"];
	СтандартнаяОбработка=ложь;
	
	сообщить("поле:"+имяПоля+" Значение:"+строка(ЗначениеПоля));
	
	
	
	//ВвестиЧисло(ааа,,10,0);
	//элемент.ТекущаяОбласть.Текст=строка(ааа);
КонецПроцедуры

&наСервере
Функция ПолучитьРасшифровкуНаСервере(Расшифровка)
 Данные = ПолучитьИзВременногоХранилища(ДанныеРасшифровки);
 Поля = Данные.Элементы.Получить(Расшифровка).ПолучитьПоля();
 //ПолеНоменклатура = Поля.Найти("ОграничениеДнейОтсутствия"); 
 
 названиеПоля=поля[0].поле;
 ЗначениеПоля=поля[0].значение;
 стр=новый структура;
 стр.Вставить("НаименованиеПоля",названиеПоля);
 стр.Вставить("ЗначениеПоля",значениеПоля);
 возврат стр;
КонецФункции

При клике на любую ячейку получаем в сообщении название колонки и значение



Усложним задание.
Допустим при клике на колонку код нам нужно получить значение колонки Код и значение колонки Ссылка.

Код немного изменится:

&НаКлиенте
Процедура РезультатОбработкаРасшифровки(Элемент, Расшифровка, СтандартнаяОбработка)
	перем ааа;
	
	стПолеРасшифровки=ПолучитьРасшифровкуНаСервере(Расшифровка);
	имяПоля=стПолеРасшифровки["НаименованиеПоля"];
	ЗначениеПоля=стПолеРасшифровки["ЗначениеПоля"];
	СтандартнаяОбработка=ложь;
	
	Если имяПоля="Ссылка" Тогда
		сообщить("поле:"+имяПоля+" Значение:"+строка(ЗначениеПоля));
	иначе   // если кликнули на код, то выводим значение колонки ссылка
		сообщить("поле:"+имяПоля+" Значение:"+строка(ЗначениеПоля)+" Значение поля ссылка:"+строка(стПолеРасшифровки["Ссылка"]));
	конецЕсли;
	
	
	//ВвестиЧисло(ааа,,10,0);
	//элемент.ТекущаяОбласть.Текст=строка(ааа);
КонецПроцедуры

&наСервере
Функция ПолучитьРасшифровкуНаСервере(Расшифровка)
 Данные = ПолучитьИзВременногоХранилища(ДанныеРасшифровки);
 Поля = Данные.Элементы.Получить(Расшифровка).ПолучитьПоля();
 //ПолеНоменклатура = Поля.Найти("ОграничениеДнейОтсутствия"); 
 
 названиеПоля=поля[0].поле;
 ЗначениеПоля=поля[0].значение;
 
 //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! получаем соседние элементы расшифровки!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
 индексТекущегоЭлемента=число(Расшифровка);
  пока индексТекущегоЭлемента>0 цикл
п=Данные.Элементы[индексТекущегоЭлемента].ПолучитьПоля();
если п[0].поле="Ссылка" тогда
	Ссылка=п[0].значение;
	прервать;
конецЕсли;
индексТекущегоЭлемента=индексТекущегоЭлемента-1;
	 конецЦикла;
//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!конец получаем соседние элементы расшифровки!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
 
 
 
 стр=новый структура;
 стр.Вставить("НаименованиеПоля",названиеПоля);
 стр.Вставить("ЗначениеПоля",значениеПоля);
 стр.Вставить("Ссылка",ссылка);
 возврат стр;
КонецФункции

Группировки таким способом не получал - извините не нужно было :) А вот значения соседних ячеек получает.



Если нужно будет получать значения группировок и прочее, то посмотрите эту тему.

Скачать обработку можно тут.