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

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

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

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

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

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

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

Что такое расшифровка и где она работает

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

Стандартная расшифровка доступна в отчетах, сформированных на базе СКД, — а это практически все отчеты в современных управляемых конфигурациях. В обычных формах (старые конфигурации на 8.1–8.2) механизм тоже существует, но настраивается через свойство ячейки «Расшифровка» и обработчик ОбработкаРасшифровки табличного поля.

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

Как пользоваться расшифровкой в типовом отчете

В типовых конфигурациях (1С:Бухгалтерия, УТ 11, ERP) сценарий одинаков. Сформируйте отчет, затем дважды щелкните по интересующей ячейке с цифрой или щелкните правой кнопкой мыши. Платформа покажет меню с доступными действиями: «Расшифровать», «Открыть», «Отобрать», «Сгруппировать», «Оформить».

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

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

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

Как включить стандартную расшифровку в отчете на СКД

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

Типовой прием — добавить в структуру настроек детальную группировку без полей группировки (пункт «Детальные записи») либо поле «Регистратор» внутрь существующей группировки. Тогда в меню расшифровки появится возможность спуститься до конкретного документа, а действие «Открыть» покажет саму накладную или счет.

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

Программная обработка расшифровки в модуле формы

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

Обработчик получает параметры Расшифровка (идентификатор элемента расшифровки), СтандартнаяОбработка и ДополнительныеПараметры. Установив СтандартнаяОбработка = Ложь, вы берете логику на себя. Чтобы получить значения полей ячейки, используются объекты ДанныеРасшифровки — их нужно поместить в данные формы при компоновке результата (метод ПоместитьВоВременноеХранилище для данных расшифровки).

Типовой каркас обработчика выглядит так: получить из данных расшифровки поля элемента по идентификатору, извлечь нужные значения (контрагент, период, документ), затем открыть форму или построить отчет программно. Идентификатор расшифровки без адреса данных расшифровки бесполезен — это частая причина ошибок «Элемент расшифровки не найден».

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

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

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

Порядок такой: в обработчике получаете значения полей расшифровки, затем открываете форму детального отчета с параметрами — проще всего через ОткрытьФорму("Отчет.ПродажиПоДокументам.Форма", ПараметрыФормы), где в параметрах передаете отбор и признак СформироватьПриОткрытии = Истина. Отчет на СКД сам подхватит переданные параметры, если они совпадают с именами параметров схемы.

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

Способы реализации расшифровки

Стандартная расшифровка СКД

Ноль кода, работает сразу по полям группировок. Ограничение: нельзя переопределить действие, только штатные варианты меню.

Программный обработчик

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

Отчет-расшифровка через параметры формы

Баланс простоты и гибкости: детальный отчет открывается с готовым отбором. Ограничение: оба отчета должны быть на СКД, имена параметров должны совпадать.

Типичные проблемы и их диагностика

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

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

Третья группа проблем — расшифровка показывает не те данные, что видит пользователь. Причина обычно в том, что детальный отчет не наследует все отборы родительского: при программном открытии передавайте полный состав отборов, а не только значение ячейки, иначе детализация «разъедется» с итогом.

Типичные ошибки
01
Не добавлен регистратор в детальные записи СКД — расшифровка не доходит до документов
02
Адрес данных расшифровки не сохраняется при формировании — обработчик падает с ошибкой поиска элемента
03
В детальный отчет передается только значение ячейки без отборов родителя — суммы расшифровки не сходятся с итогом
04
СтандартнаяОбработка = Ложь установлена, но своя логика не реализована — отчет перестает реагировать на щелчки
05
Попытка расшифровать результат, выведенный вручную без СКД, — у ячеек нет данных расшифровки

Проверка результата и ограничения

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

Учитывайте ограничения платформы. Расшифровка требует дополнительных ресурсов: данные расшифровки хранятся в памяти сервера и увеличивают объем передаваемых данных. В отчетах с миллионами строк детальных записей расшифровка может работать медленно — в таких случаях детализацию ограничивают отборами по умолчанию.

Если отчет работает под разными правами, помните: расшифровка до документа откроет объект только при наличии у пользователя права просмотра. При RLS-ограничениях детальный отчет покажет меньше строк, чем ожидает пользователь, — это норма, а не ошибка настройки.

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

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

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

Открывается меню или детальный отчет с отбором по значению

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

Нет реакции или пустое меню — расшифровка не настроена

Итог детального отчета
Норма

Совпадает со значением ячейки-источника

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

Суммы расходятся — потеряны отборы или параметры

Открытие документа из расшифровки
Норма

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

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

Ошибка прав доступа или «объект не найден»

Повторное формирование родительского отчета
Норма

Расшифровка продолжает работать

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

Ошибка данных расшифровки — адрес не сохранен

FAQ: частые вопросы о расшифровке отчетов в 1С

Почему в меню расшифровки нет пункта «Открыть» для документа?

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

Можно ли расшифровать отчет, построенный без СКД?

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

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

Прямой настройки прав на расшифровку нет. На уровне отчета её отключают в обработчике события, устанавливая СтандартнаяОбработка = Ложь без дополнительных действий. Для ограничения данных используются права на объекты и RLS — тогда пользователь физически не увидит запрещенные документы даже через расшифровку.

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

Чаще всего детальный отчет получает отбор по значению, которого нет в его данных: например, родительский отчет строится по одному регистру, а детальный — по другому с иными измерениями. Проверьте, что поля отбора существуют в схеме детального отчета и типы значений совпадают. Также убедитесь, что период передается корректно.

Как сделать расшифровку по двойному щелчку сразу, без контекстного меню?

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

Итог

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

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