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

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

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

Анализ структуры отчета: Группировки против Детальных записей

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

Выясним причину: расшифровка в 1С работает только в том случае, если система четко понимает, какой объект (ссылку) ей нужно открыть. Если в колонке выводится просто число (например, количество документов), полученное в результате запроса, но сама ссылка на документ в текущей строке или группировке «потеряна» для компоновщика, расшифровка будет недоступна.

Чтобы исправить это в детальных записях, выполним следующие действия:

  1. Перейдем на вкладку «Настройки» в схеме компоновки данных.
  2. Убедимся, что в разделе «Выбранные поля» присутствует поле-ссылка (например, Регистратор, Ссылка или сам документ).
  3. Если мы не хотим видеть это поле в отчете, но оно нужно для работы расшифровки, мы можем добавить его в выбранные поля, но установить ему нулевую ширину в настройках оформления.

Настройка ролей полей в наборе данных

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

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

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

Работа с ресурсами и агрегатными функциями

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

Если этого не происходит, проанализируем настройки на вкладке «Ресурсы»:

Использование собственных макетов оформления

Если вы решили сделать отчет визуально безупречным и создали собственный макет на вкладке «Макеты», это наиболее вероятная зона риска. При ручном рисовании ячеек 1С «забывает», что в конкретной ячейке находится не просто текст, а данные СКД.

Чтобы вернуть расшифровку в макете, выполните следующие шаги:

  1. Выделите ячейку в макете.
  2. В свойствах ячейки найдите параметр «Параметр расшифровки».
  3. Укажите имя параметра (например, П1).
  4. В таблице параметров макета (ниже области рисования) сопоставьте этот параметр с конкретным полем из схемы компоновки.

Без этой связки ячейка будет абсолютно «мертвой» для стандартных механизмов платформы.

Программная проверка свойств табличного документа

Если отчет выводится не в стандартную форму, а в специально созданную вами (возможно, с использованием инструментов типа СКДБилдер), проверим программный код в модуле формы. Посмотрим на свойства объекта Результат (тип ТабличныйДокумент).

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


// Свойства табличного документа должны позволять взаимодействие
Элементы.Результат.ТолькоПросмотр = Ложь; // Но лучше Истина, если не нужно редактирование
Элементы.Результат.Защита = Ложь;

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

Тип значения и выражение расшифровки

Выясним еще один нюанс: расшифровка работает по ссылкам. Если ваше поле в наборе данных имеет тип «Строка» или «Число», 1С не предложит открыть его карточку. Но иногда нам нужно, чтобы при нажатии на число (например, ID заказа из внешней базы) открывался связанный объект в 1С.

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

Расположение полей группировок

Иногда расшифровка перестает работать из-за специфических настроек отображения. Посмотрим на вкладку «Настройки» — «Другие настройки». Найдем параметр «Расположение полей группировок».

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

Итоги и контрольный список для проверки

Подводя итог, если вы столкнулись с неактивной расшифровкой, пройдите по этому списку:

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

Соблюдение этих правил гарантирует, что ваши отчеты будут интерактивными и удобными для конечного пользователя.

← На главную