При разработке отчетов на Системе компоновки данных (СКД) программисты часто сталкиваются с ситуацией, когда отчет выводится корректно, данные верны, но при попытке расшифровать значение (например, открыть документ-основание или посмотреть состав итогового числа) пункт «Расшифровать» в контекстном меню отображается серым цветом. Рассмотрим подробнее, почему это происходит и разберем по шагам все способы решения этой проблемы.
Проанализируем ситуацию, описанную в сообщениях форума. Часто расшифровка кажется неактивной, когда пользователь работает с так называемыми «Детальными записями». Существует мнение, что для детальных записей расшифровка не предусмотрена в принципе. Однако это не совсем так.
Выясним причину: расшифровка в 1С работает только в том случае, если система четко понимает, какой объект (ссылку) ей нужно открыть. Если в колонке выводится просто число (например, количество документов), полученное в результате запроса, но сама ссылка на документ в текущей строке или группировке «потеряна» для компоновщика, расшифровка будет недоступна.
Чтобы исправить это в детальных записях, выполним следующие действия:
Регистратор, Ссылка или сам документ).Одной из самых частых причин неактивной расшифровки является некорректная настройка ролей полей. Разберем ситуацию с использованием поля Регистратор.
Если в вашем отчете данные собираются из регистров, крайне важно проверить флаг «Обязательное». Перейдем на закладку «Наборы данных» и найдем колонку «Роль» у нужного нам поля-ссылки. Если этот флаг не установлен, СКД может исключить это поле из запроса в целях оптимизации, если оно не выбрано пользователем явно. В итоге контекст для расшифровки пропадает.
Рекомендация: Всегда устанавливайте признак «Обязательное» для полей, которые должны служить ключом расшифровки для числовых ресурсов.
Рассмотрим ситуацию, когда в отчете выводится количество документов. Например, выражение ресурса выглядит так: Количество(ДокументСсылка). Если мы нажмем на итоговое число в группировке, система должна предложить расшифровать его по детальным записям.
Если этого не происходит, проанализируем настройки на вкладке «Ресурсы»:
ДокументСсылка), доступно для системы.Если вы решили сделать отчет визуально безупречным и создали собственный макет на вкладке «Макеты», это наиболее вероятная зона риска. При ручном рисовании ячеек 1С «забывает», что в конкретной ячейке находится не просто текст, а данные СКД.
Чтобы вернуть расшифровку в макете, выполните следующие шаги:
П1).Без этой связки ячейка будет абсолютно «мертвой» для стандартных механизмов платформы.
Если отчет выводится не в стандартную форму, а в специально созданную вами (возможно, с использованием инструментов типа СКДБилдер), проверим программный код в модуле формы. Посмотрим на свойства объекта Результат (тип ТабличныйДокумент).
Как показывают примеры программной работы с СКД, для работы расшифровки должны соблюдаться следующие условия:
// Свойства табличного документа должны позволять взаимодействие
Элементы.Результат.ТолькоПросмотр = Ложь; // Но лучше Истина, если не нужно редактирование
Элементы.Результат.Защита = Ложь;
Также важно проверить обработчик события ОбработкаРасшифровки (особенно если пишете его сами и ищете, как получить значения группировок). Если в нем прописано СтандартнаяОбработка = Ложь; и при этом не реализован ваш собственный алгоритм открытия форм, то по нажатию на ячейку ничего происходить не будет.
Выясним еще один нюанс: расшифровка работает по ссылкам. Если ваше поле в наборе данных имеет тип «Строка» или «Число», 1С не предложит открыть его карточку. Но иногда нам нужно, чтобы при нажатии на число (например, ID заказа из внешней базы) открывался связанный объект в 1С.
В этом случае в настройках поля набора данных в СКД можно вручную прописать «Выражение расшифровки». Там можно указать путь к полю, которое содержит реальную ссылку на объект. Это позволяет «подменить» техническое значение на полезное действие.
Иногда расшифровка перестает работать из-за специфических настроек отображения. Посмотрим на вкладку «Настройки» — «Другие настройки». Найдем параметр «Расположение полей группировок».
Если установлено значение «Отдельно и только в итоге», платформа может генерировать таблицу таким образом, что связи между ячейкой и данными разрываются. Попробуйте изменить это значение на «Вместе» и проверить, станет ли пункт меню активным.
Подводя итог, если вы столкнулись с неактивной расшифровкой, пройдите по этому списку:
Соблюдение этих правил гарантирует, что ваши отчеты будут интерактивными и удобными для конечного пользователя.