При разработке пользовательских отчетов на обычных формах в конфигурации «Управление торговлей 10.3» (без использования Схемы компоновки данных — СКД) часто возникает задача интерактивного перехода к объектам базы. Например, требуется, чтобы при двойном клике по наименованию товара в отчете открывалась форма редактирования соответствующего элемента справочника Номенклатура.
Рассмотрим подробно, почему стандартная расшифровка может не срабатывать, и разберем по шагам, как правильно настроить свойства ячейки макета и результирующего табличного документа.
В обычных формах платформа 1С автоматически обрабатывает двойной клик по ячейке табличного документа и открывает форму ссылочного объекта только при выполнении двух ключевых условий:
СправочникСсылка.Номенклатура), а не его текстовое представление или наименование.ТолькоПросмотр = Истина). Если документ доступен для редактирования, платформа воспринимает двойной клик как команду для начала редактирования текста внутри ячейки, а не как расшифровку.Проанализируем порядок действий для корректной настройки стандартной расшифровки в не-СКД отчете.
Шаг 1. Настройка ячейки в макете отчета
В макете табличного документа выделим ячейку, в которой выводится наименование товара, и откроем её палитру свойств. Укажем следующие параметры:
Заполнение значением Параметр.Параметр укажем имя переменной для вывода текста, например: ТМЦ.ПараметрРасшифровки укажем имя параметра, передающего ссылку: ТМЦРасшифровка (или то же имя ТМЦ, если параметр и расшифровка совпадают).Шаг 2. Заполнение параметров в модуле отчета
При формировании отчета в коде модуля необходимо передать в параметр расшифровки именно ссылку на элемент справочника, полученную из выборки или результата запроса:
// Получаем область строковой части макета
ОбластьСтрока = Макет.ПолучитьОбласть("Детали");
Пока Выборка.Следующий() Цикл
// Заполняем текстовое представление для отображения в ячейке
ОбластьСтрока.Параметры.ТМЦ = Выборка.НоменклатураНаименование;
// Передаем ссылку на номенклатуру в параметр расшифровки
ОбластьСтрока.Параметры.ТМЦРасшифровка = Выборка.Номенклатура;
// Выводим область в результирующий табличный документ
ТабДок.Вывести(ОбластьСтрока);
КонецЦикла;
Шаг 3. Включение режима «Только просмотр»
Это ключевой момент, без которого платформа не даст запустить расшифровку по двойному клику. После того как табличный документ полностью сформирован и заполнен данными, установим свойство ТолькоПросмотр в значение Истина:
// Блокируем редактирование ячеек для включения интерактивной расшифровки
ТабДок.ТолькоПросмотр = Истина;
ТабДок.Показать();
Если табличный документ выведен на форму отчета в элемент управления ПолеТабличногоДокумента, мы можем перехватить событие двойного клика и обработать его программно с помощью события ОбработкаРасшифровки.
Рассмотрим, как это реализовать по шагам:
ОбработкаРасшифровки для элемента формы ЭлементФормы.ТабличныйДокумент.СтандартнаяОбработка = Ложь.ОткрытьЗначение().
Процедура ЭлементТабДокОбработкаРасшифровки(Элемент, Расшифровка, СтандартнаяОбработка)
// Проверяем, что в расшифровке передана ссылка на номенклатуру
Если ТипЗнч(Расшифровка) = Тип("СправочникСсылка.Номенклатура") Тогда
СтандартнаяОбработка = Ложь;
ОткрытьЗначение(Расшифровка);
КонецЕсли;
КонецПроцедуры
Таким образом, для быстрой реализации достаточно убедиться, что в ПараметрРасшифровки попадает ссылка СправочникСсылка.Номенклатура, а для итогового ТабличныйДокумент задано условие ТолькоПросмотр = Истина.