Как настроить расшифровку (drill-down) в отчете 1С при использовании макета?

Программист 1С v8.3 (Обычные формы) IT и автоматизация бизнеса
← На главную

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

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

Первым делом нам необходимо подготовить сам макет отчета. Откроем макет и выберем ячейку, в которую будет выводиться ссылка на объект. Проанализируем свойства этой ячейки (через контекстное меню или нажав F4). Нам важны следующие параметры:

  1. Заполнение: Убедитесь, что для ячейки установлено значение Параметр. Это позволит нам динамически подставлять данные в процессе формирования отчета.
  2. ПараметрРасшифровки: Это ключевое поле. Сюда нужно вписать имя параметра, который будет отвечать за хранение ссылки. Часто его называют так же, как и основной параметр, но для ясности можно использовать префикс, например, ДокументРасшифровка или просто Документ.
  3. Использование расшифровки: В палитре свойств найдите этот пункт и установите значение Ячейка. Это укажет платформе, что при нажатии на данную ячейку нужно пытаться выполнить действие расшифровки.

Шаг 2. Программное заполнение данных расшифровки

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

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


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

Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ Ссылка, Номер, Дата ИЗ Документ.РеализацияТоваровУслуг";
Выборка = Запрос.Выполнить().Выбрать();

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

Обратите внимание: если вы просто выведете ссылку в параметр НомерДокумента, 1С превратит её в строку. Для работы расшифровки в свойство, указанное в поле ПараметрРасшифровки, должна попасть именно Ссылка (объект типа ДокументСсылка, СправочникСсылка и т.д.).

Шаг 3. Режим просмотра — критическое условие

Многие начинающие разработчики сталкиваются с тем, что код написан верно, параметры заполнены, но при клике в отчете ничего не происходит — ячейка просто выделяется или переходит в режим редактирования текста. Выясним причину этой проблемы.

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


ТабДок.ТолькоПросмотр = Истина;
ТабДок.Показать();

После установки этого свойства при наведении курсора на ячейку с расшифровкой он будет меняться на характерную «руку», а двойной клик откроет форму документа.

Шаг 4. Использование события ОбработкаРасшифровки

Стандартное поведение (открытие формы по ссылке) удобно, но иногда требуется более сложная логика. Например, при клике на сумму задолженности вы хотите открыть не карточку контрагента, а детализированный отчет по акту сверки. В этом случае нам поможет событие ОбработкаРасшифровки.

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

Пример программной обработки:


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

Шаг 5. Передача нескольких параметров через Структуру

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

Разберем пример заполнения в коде:


ДанныеДляРасшифровки = Новый Структура;
ДанныеДляРасшифровки.Вставить("Документ", Выборка.Ссылка);
ДанныеДляРасшифровки.Вставить("Склад", Выборка.Склад);
ДанныеДляРасшифровки.Вставить("ДатаСреза", ТекущаяДата());

ОбластьСтрока.Параметры.Документ = ДанныеДляРасшифровки;

В обработчике расшифровки вы сможете легко извлечь все эти данные: НужныйСклад = Расшифровка.Склад;.

Шаг 6. Визуальное выделение расшифровки

Чтобы пользователь интуитивно понимал, что ячейка кликабельна, рекомендуется оформлять её визуально. Традиционно в 1С для этого используют синий цвет текста и подчеркивание (стиль гиперссылки). Хотя платформа и меняет вид курсора, явное выделение значительно повышает удобство работы с отчетом.

Подведем итог: для реализации расшифровки в макете необходимо связать параметр ячейки с данными ссылки, убедиться, что документ выводится в режиме ТолькоПросмотр, и при необходимости доопределить логику в событии ОбработкаРасшифровки. Это делает отчет мощным инструментом анализа, позволяя пользователю «проваливаться» от общих цифр к первичным документам.

← На главную