Как открыть карточку номенклатуры по двойному клику в отчете УТ 10.3?

Программист 1С v8.3 (Обычные формы) 1С:Управление торговлей Управленческий учет Торговля и дистрибуция
← На главную

При разработке пользовательских отчетов на обычных формах в конфигурации «Управление торговлей 10.3» (без использования Схемы компоновки данных — СКД) часто возникает задача интерактивного перехода к объектам базы. Например, требуется, чтобы при двойном клике по наименованию товара в отчете открывалась форма редактирования соответствующего элемента справочника Номенклатура.

Рассмотрим подробно, почему стандартная расшифровка может не срабатывать, и разберем по шагам, как правильно настроить свойства ячейки макета и результирующего табличного документа.

Выясним причину проблемы

В обычных формах платформа 1С автоматически обрабатывает двойной клик по ячейке табличного документа и открывает форму ссылочного объекта только при выполнении двух ключевых условий:

  1. В параметр расшифровки ячейки выгружена ссылка на объект (например, типа СправочникСсылка.Номенклатура), а не его текстовое представление или наименование.
  2. Для табличного документа включен режим просмотра (свойство ТолькоПросмотр = Истина). Если документ доступен для редактирования, платформа воспринимает двойной клик как команду для начала редактирования текста внутри ячейки, а не как расшифровку.

Настройка расшифровки в макете и коде

Проанализируем порядок действий для корректной настройки стандартной расшифровки в не-СКД отчете.

Шаг 1. Настройка ячейки в макете отчета

В макете табличного документа выделим ячейку, в которой выводится наименование товара, и откроем её палитру свойств. Укажем следующие параметры:

  1. Заполним свойство Заполнение значением Параметр.
  2. В поле Параметр укажем имя переменной для вывода текста, например: ТМЦ.
  3. В поле ПараметрРасшифровки укажем имя параметра, передающего ссылку: ТМЦРасшифровка (или то же имя ТМЦ, если параметр и расшифровка совпадают).

Шаг 2. Заполнение параметров в модуле отчета

При формировании отчета в коде модуля необходимо передать в параметр расшифровки именно ссылку на элемент справочника, полученную из выборки или результата запроса:


// Получаем область строковой части макета
ОбластьСтрока = Макет.ПолучитьОбласть("Детали");

Пока Выборка.Следующий() Цикл
    // Заполняем текстовое представление для отображения в ячейке
    ОбластьСтрока.Параметры.ТМЦ = Выборка.НоменклатураНаименование;
    
    // Передаем ссылку на номенклатуру в параметр расшифровки
    ОбластьСтрока.Параметры.ТМЦРасшифровка = Выборка.Номенклатура;
    
    // Выводим область в результирующий табличный документ
    ТабДок.Вывести(ОбластьСтрока);
КонецЦикла;

Шаг 3. Включение режима «Только просмотр»

Это ключевой момент, без которого платформа не даст запустить расшифровку по двойному клику. После того как табличный документ полностью сформирован и заполнен данными, установим свойство ТолькоПросмотр в значение Истина:


// Блокируем редактирование ячеек для включения интерактивной расшифровки
ТабДок.ТолькоПросмотр = Истина;
ТабДок.Показать();

Альтернативный вариант: Программная обработка расшифровки

Если табличный документ выведен на форму отчета в элемент управления ПолеТабличногоДокумента, мы можем перехватить событие двойного клика и обработать его программно с помощью события ОбработкаРасшифровки.

Рассмотрим, как это реализовать по шагам:

  1. Создадим обработчик события ОбработкаРасшифровки для элемента формы ЭлементФормы.ТабличныйДокумент.
  2. Отключим стандартную системную обработку клика с помощью флага СтандартнаяОбработка = Ложь.
  3. Откроем форму объекта программно, используя метод ОткрытьЗначение().

Процедура ЭлементТабДокОбработкаРасшифровки(Элемент, Расшифровка, СтандартнаяОбработка)
    
    // Проверяем, что в расшифровке передана ссылка на номенклатуру
    Если ТипЗнч(Расшифровка) = Тип("СправочникСсылка.Номенклатура") Тогда
        СтандартнаяОбработка = Ложь;
        ОткрытьЗначение(Расшифровка);
    КонецЕсли;

КонецПроцедуры

Таким образом, для быстрой реализации достаточно убедиться, что в ПараметрРасшифровки попадает ссылка СправочникСсылка.Номенклатура, а для итогового ТабличныйДокумент задано условие ТолькоПросмотр = Истина.

← На главную