К статье
Практический материал

Отчеты и Аналитика · 9 мин

Как добавить расшифровку в отчет 1С

Как добавить расшифровку в отчет 1С: настройка в СКД, стандартная расшифровка, собственные обработчики и типичные ошибки. Практическая инструкция.

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

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

Как работает стандартная расшифровка в отчётах на СКД

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

Механизм основан на том, что СКД при формировании отчёта сохраняет для каждой ячейки служебную информацию: какие группировки и отборы привели к этому значению. При расшифровке платформа строит новый отчёт с дополнительной группировкой по выбранному полю и наложенными отборами из исходной ячейки. Поэтому качество расшифровки напрямую зависит от того, какие поля доступны в схеме компоновки.

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

Настройка расшифровки через схему компоновки данных

Основная работа по управлению расшифровкой ведётся в конструкторе СКД. Откройте отчёт в конфигураторе, перейдите к основной схеме компоновки данных и проверьте три области: набор данных, ресурсы и настройки структуры.

В наборе данных убедитесь, что запрос выбирает все поля, которые должны быть доступны для детализации. Например, если пользователь должен проваливаться из суммы продаж до конкретного документа, в запрос нужно включить ссылку на документ-регистратор. На закладке «Ресурсы» определите вычисляемые показатели (суммы, количества) — именно по ресурсам расшифровка наиболее осмысленна.

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

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

Расшифровка до документа

Частая задача — дать пользователю возможность из отчёта открыть первичный документ. Для этого в набор данных включают поле-ссылку на регистратор, а в структуре настроек добавляют детальные записи или группировку по регистратору. В результате из ячейки можно выбрать действие «Открыть», и платформа покажет форму документа. Это работает только если в ячейке действительно хранится ссылочное значение, а не представление в виде строки.

Программная расшифровка в отчётах без СКД

Если отчёт выводится в табличный документ программно (методами Вывести, Присоединить), стандартной расшифровки не будет. В этом случае разработчик заполняет свойство «Расшифровка» области или параметра макета и обрабатывает событие «ОбработкаРасшифровки» в модуле формы отчёта.

bsl
// При выводе ячейки
Область.Параметры.Сумма = ИтогПоКонтрагенту;
Область.Параметры.РасшифровкаСуммы = КонтрагентСсылка;

// В модуле формы отчёта
&НаКлиенте
Процедура РезультатОбработкаРасшифровки(Элемент, Расшифровка, СтандартнаяОбработка)
    СтандартнаяОбработка = Ложь;
    ПоказатьЗначение(, Расшифровка); // открываем объект
КонецПроцедуры

В параметр расшифровки можно поместить любое значение: ссылку, структуру с несколькими параметрами, строку-идентификатор. В обработчике вы решаете, что с этим значением делать: открыть объект, сформировать новый отчёт с отбором или показать произвольную форму. Обязательно установите СтандартнаяОбработка = Ложь, иначе платформа попытается выполнить действие по умолчанию.

Собственная расшифровка для отчёта на СКД через компоновщик

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

Типовой приём: получить из данных расшифровки значение поля (например, контрагента), затем программно сформировать другой отчёт, передав это значение в отбор. Результат выводят в новую форму или табличный документ. Такой подход позволяет строить многоуровневые аналитические отчёты: обороты по фирме → продажи по менеджеру → накладные менеджера.

Проверка результата и типичные ошибки

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

Контрольные точки

Как проверить результат

Двойной щелчок по ячейке ресурса
Норма

Открывается меню с пунктом «Расшифровать» и списком полей

Тревожный признак

Меню пустое или пункта нет — поле не в наборе данных или отключено

Сумма детального отчёта
Норма

Равна значению исходной ячейки

Тревожный признак

Суммы расходятся — проверьте отборы и роли полей в СКД

Действие «Открыть» на ссылочном поле
Норма

Открывается форма документа или элемента

Тревожный признак

В ячейке строка-представление вместо ссылки

Типичные ошибки
01
Поле детализации не включено в запрос набора данных — расшифровать по нему невозможно, меню не предлагает нужный пункт
02
В ячейку выведено представление вместо ссылки — действие «Открыть» недоступно
03
В программном обработчике не сброшен флаг СтандартнаяОбработка — выполняется лишнее действие платформы
04
Ресурс не рассчитан по нужным группировкам — расшифровка показывает неверные итоги
05
Ограничены настройки пользователя — часть полей расшифровки скрыта, пользователи считают это ошибкой

Часто задаваемые вопросы

Почему при двойном щелчке по ячейке ничего не происходит?

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

Можно ли расшифровать отчёт сразу до проводок?

Да, если в набор данных включить соединение с виртуальной таблицей движений регистра бухгалтерии или добавить отдельный вариант настроек с группировкой по регистратору и счетам. Пользователь сможет из суммы отчёта перейти к проводкам и открыть документ-источник.

Как запретить расшифровку для отдельных пользователей?

Для отчётов на СКД можно ограничить состав доступных полей в настройках варианта и снять у пользователя право изменения настроек. Для программных отчётов — не заполнять свойство расшифровки при выводе или проверять права в обработчике события.

Расшифровка открывается, но показывает пустой отчёт. В чём причина?

Обычно дело в отборах: в данные расшифровки передаются отборы по полям, которых нет в детальном запросе, либо наложенный отбор противоречив. Проверьте соответствие имён полей в основной и детальной частях схемы и корректность связи наборов данных.

Можно ли из ячейки открыть другой отчёт, а не детализацию текущего?

Да. В обработчике «ОбработкаРасшифровки» получите значение поля из данных расшифровки, программно создайте нужный отчёт, установите в его отбор это значение и сформируйте результат в отдельной форме. Это стандартный приём для цепочек аналитических отчётов.

Итог

Что важно запомнить

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