Запрос для отчета будет такой:
ВЫБРАТЬ ПЕРВЫЕ 200 Номенклатура.Ссылка, Номенклатура.КодИЗ Справочник.Номенклатура КАК Номенклатура
Выведем 2 колонки: Ссылка и код.
Чтобы получать имя колонки и значение ячейки при двойном клике нужно сделать следующее:
1 Создадим форму для отчета и установим процедуру на событие "Обработка расшифровки"
2 Листинг процедур:
&НаКлиенте Процедура РезультатОбработкаРасшифровки(Элемент, Расшифровка, СтандартнаяОбработка) перем ааа; стПолеРасшифровки=ПолучитьРасшифровкуНаСервере(Расшифровка); имяПоля=стПолеРасшифровки["НаименованиеПоля"]; ЗначениеПоля=стПолеРасшифровки["ЗначениеПоля"]; СтандартнаяОбработка=ложь; сообщить("поле:"+имяПоля+" Значение:"+строка(ЗначениеПоля)); //ВвестиЧисло(ааа,,10,0); //элемент.ТекущаяОбласть.Текст=строка(ааа); КонецПроцедуры &наСервере Функция ПолучитьРасшифровкуНаСервере(Расшифровка) Данные = ПолучитьИзВременногоХранилища(ДанныеРасшифровки); Поля = Данные.Элементы.Получить(Расшифровка).ПолучитьПоля(); //ПолеНоменклатура = Поля.Найти("ОграничениеДнейОтсутствия"); названиеПоля=поля[0].поле; ЗначениеПоля=поля[0].значение; стр=новый структура; стр.Вставить("НаименованиеПоля",названиеПоля); стр.Вставить("ЗначениеПоля",значениеПоля); возврат стр; КонецФункции
При клике на любую ячейку получаем в сообщении название колонки и значение
Усложним задание.
Допустим при клике на колонку код нам нужно получить значение колонки Код и значение колонки Ссылка.
Код немного изменится:
&НаКлиенте Процедура РезультатОбработкаРасшифровки(Элемент, Расшифровка, СтандартнаяОбработка) перем ааа; стПолеРасшифровки=ПолучитьРасшифровкуНаСервере(Расшифровка); имяПоля=стПолеРасшифровки["НаименованиеПоля"]; ЗначениеПоля=стПолеРасшифровки["ЗначениеПоля"]; СтандартнаяОбработка=ложь; Если имяПоля="Ссылка" Тогда сообщить("поле:"+имяПоля+" Значение:"+строка(ЗначениеПоля)); иначе // если кликнули на код, то выводим значение колонки ссылка сообщить("поле:"+имяПоля+" Значение:"+строка(ЗначениеПоля)+" Значение поля ссылка:"+строка(стПолеРасшифровки["Ссылка"])); конецЕсли; //ВвестиЧисло(ааа,,10,0); //элемент.ТекущаяОбласть.Текст=строка(ааа); КонецПроцедуры &наСервере Функция ПолучитьРасшифровкуНаСервере(Расшифровка) Данные = ПолучитьИзВременногоХранилища(ДанныеРасшифровки); Поля = Данные.Элементы.Получить(Расшифровка).ПолучитьПоля(); //ПолеНоменклатура = Поля.Найти("ОграничениеДнейОтсутствия"); названиеПоля=поля[0].поле; ЗначениеПоля=поля[0].значение; //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! получаем соседние элементы расшифровки!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! индексТекущегоЭлемента=число(Расшифровка); пока индексТекущегоЭлемента>0 цикл п=Данные.Элементы[индексТекущегоЭлемента].ПолучитьПоля(); если п[0].поле="Ссылка" тогда Ссылка=п[0].значение; прервать; конецЕсли; индексТекущегоЭлемента=индексТекущегоЭлемента-1; конецЦикла; //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!конец получаем соседние элементы расшифровки!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! стр=новый структура; стр.Вставить("НаименованиеПоля",названиеПоля); стр.Вставить("ЗначениеПоля",значениеПоля); стр.Вставить("Ссылка",ссылка); возврат стр; КонецФункции
Группировки таким способом не получал - извините не нужно было :) А вот значения соседних ячеек получает.
Если нужно будет получать значения группировок и прочее, то посмотрите эту тему.
Скачать обработку можно тут.