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

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

Как сделать расшифровку в 1С: простые способы и настройка в СКД

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

Расшифровка в 1С — это возможность «провалиться» из итоговой цифры отчёта в данные, из которых она сложилась: документы, проводки, элементы справочников. Менеджер видит в отчёте по продажам сумму 1 250 000 рублей и двойным щелчком открывает список реализаций, которые её сформировали. Бухгалтер из оборотно-сальдовой ведомости переходит к карточке счёта или конкретной операции.

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

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

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

Расшифровка (детализация, drill-down) — это переход от агрегированного показателя к первичным данным. В отчёте по остаткам склада итог по номенклатуре расшифровывается до приходных и расходных накладных; в ОСВ сальдо по счёту 62 раскрывается до контрагентов, договоров и документов расчётов.

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

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

Как получить расшифровку в типовом отчёте

В отчётах на СКД (это почти все отчёты современных типовых конфигураций) порядок действий одинаковый:

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

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

Если двойной клик ничего не делает, проверьте, не открыт ли отчёт в режиме просмотра защищённого табличного документа, и нет ли у ячейки признака «только просмотр». Также убедитесь, что вы кликаете по ячейке с данными (суммой), а не по заголовку группировки.

Расшифровка в отчётах на СКД: как это устроено

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

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

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

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

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

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

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

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

Для отчётов, формируемых программно (без типовой формы), расшифровку подключают через процессор вывода: при выводе результата в табличный документ передают объект данных расшифровки, а у табличного документа устанавливают свойство, разрешающее обработку расшифровки.

Расшифровка в обычных формах и макетах

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

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

Сравнение подходов

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

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

Обработчик в форме отчёта на СКД

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

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

Вариант для старых конфигураций и произвольных печатных форм; полный контроль, но всё заполняется вручную при выводе

Типичные ошибки и ограничения

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

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

Как проверить, что расшифровка работает правильно

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

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

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

Сумма детальных строк
Норма

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

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

Детализация показывает больше или меньше — не перенесены отборы

Отборы в расшифровывающем отчёте
Норма

Период, организация и группировка совпадают с исходным отчётом

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

Отчёт открылся без отборов или с чужим периодом

Права пользователя
Норма

Документы из расшифровки открываются без ошибок

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

Ошибка нарушения прав доступа при клике

Повторный клик
Норма

Детальный отчёт тоже расшифровывается глубже

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

Второй уровень детализации не работает

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

Итог

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

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

Частые вопросы

Почему двойной клик по ячейке отчёта ничего не открывает?

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

Можно ли расшифровать отчёт до документов, если он построен по виртуальной таблице остатков?

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

Как по клику открыть не документ, а другой отчёт со своими отборами?

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

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

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

Работает ли расшифровка в веб-клиенте и на мобильной платформе?

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

Можно ли сделать расшифровку во внешнем отчёте, не меняя конфигурацию?

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