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