Когда мы работаем с отчетами в 1С, часто возникает необходимость не только красиво отобразить данные, но и обеспечить их детализацию по двойному клику, то есть настроить расшифровку. В Системе Компоновки Данных (СКД) это особенно актуально, когда мы используем собственные макеты для оформления отчета. Давайте вместе разберемся, как корректно настроить расшифровку в ячейках таких макетов, чтобы отчет был не только информативным, но и интерактивным.
Для того чтобы в ячейке макета СКД правильно работала расшифровка, нам нужно учесть несколько ключевых моментов. Рассмотрим подробнее, как связать отображаемое значение с механизмом детализации.
Создание и заполнение ячейки макета: Прежде всего, мы должны создать ячейку в нашем макете СКД. Для отображения значения поля в этой ячейке, мы используем свойство Заполнение со значением Параметр. Далее, в свойстве Параметр указываем имя параметра макета, которое будет соответствовать выводимому полю. Например, если мы хотим вывести подразделение, параметр может называться Подразделение.
Важно помнить, что в выражении для поля в СКД мы должны использовать само поле, а не его представление. То есть, вместо Представление(Подразделение), мы должны указать просто Подразделение. Это позволит СКД корректно работать с данными ссылочного типа.
Настройка параметра расшифровки: Это ключевой шаг для активации расшифровки. Для ячейки макета, где мы хотим настроить детализацию, мы должны установить свойство Параметр расшифровки. Здесь мы указываем имя параметра, который будет использоваться для расшифровки. Крайне важно, чтобы этот параметр также ссылался на то же самое поле, что и основной параметр для заполнения, или на то поле, которое мы хотим открывать при расшифровке.
Например, если параметр для отображения значения называется Подразделение, то и Параметр расшифровки также должен быть Подразделение. Часто возникает ошибка, когда для расшифровки указывают не само поле, а некий "РасшифровкаПоля". Мы выясним, что это неверный подход и приведет к некорректной работе.
Различие между параметрами: Хотя для простоты мы часто используем одно и то же имя для параметра значения и параметра расшифровки (если они относятся к одному и тому же полю), в более сложных сценариях рекомендуется давать им разные имена. Например, ПараметрЗначениеПодразделение и ПараметрРасшифровкаПодразделение. Это поможет избежать путаницы и гарантировать, что оба параметра будут корректно обработаны системой.
Настройка действия расшифровки: После того как мы связали ячейку с параметром расшифровки, нам нужно указать, что именно должно произойти при двойном клике. Для этого в свойствах ячейки макета мы используем свойство Основное действие и устанавливаем его в значение Открыть значение. Затем, в свойстве Выражение, мы указываем имя поля, форму которого мы хотим открыть. Обычно это то же самое поле, которое используется для расшифровки.
Посмотрим на пример:
// В свойствах ячейки макета:
// Заполнение = Параметр
// Параметр = Подразделение
// Параметр расшифровки = Подразделение
// Основное действие = Открыть значение
// Выражение = Подразделение
Таким образом, при двойном клике на ячейке с подразделением, откроется форма элемента справочника "Подразделения".
Иногда стандартные механизмы расшифровки могут быть недостаточными. Разберем ситуации, когда нам требуется более гибкое поведение.
Расшифровка одного поля открывает значение другого: Представим ситуацию, когда мы выводим в отчете наименование товара, но при расшифровке хотим открыть форму документа, которым этот товар был оприходован. Для этого нам потребуется добавить в запрос схемы компоновки данных ссылку на нужный документ (например, Регистратор), даже если мы не выводим его непосредственно в отчет.
Затем, в свойствах ячейки макета для отображаемого поля (например, Товар), мы устанавливаем Параметр расшифровки, указывающий на этот скрытый Регистратор. Таким образом, при двойном клике на ячейке с товаром, будет открываться форма документа-регистратора.
Произвольная обработка расшифровки: Для более сложных сценариев, когда стандартные действия не подходят, мы можем использовать программную обработку. Для этого нам понадобится создать форму отчета СКД и использовать событие ОбработкаРасшифровки табличного поля (обычно называемого "Результат").
В этом обработчике мы можем программно определить, какое действие должно выполняться при двойном клике, переопределить стандартные действия, добавить собственные или изменить поведение в зависимости от типа выбранного элемента. Например, мы можем открыть новую форму отчета с детализацией или переформировать текущий отчет с дополнительными отборами.
Посмотрим на пример кода в обработчике ОбработкаРасшифровки:
Процедура РезультатОбработкаРасшифровки(Элемент, Расшифровка, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь; // Отменяем стандартную обработку
ЗначениеРасшифровки = Расшифровка.ПолучитьПоля().Получить(0).Значение;
Если ТипЗнч(ЗначениеРасшифровки) = Тип("СправочникСсылка.Подразделения") Тогда
// Открываем форму элемента справочника "Подразделения"
ОткрытьЗначение(ЗначениеРасшифровки);
ИначеЕсли ТипЗнч(ЗначениеРасшифровки) = Тип("ДокументСсылка.РеализацияТоваровУслуг") Тогда
// Открываем форму документа "РеализацияТоваровУслуг"
ОткрытьЗначение(ЗначениеРасшифровки);
ИначеЕсли ТипЗнч(ЗначениеРасшифровки) = Тип("Число") Тогда
// Пример: если расшифровывается число, открываем другой отчет с отбором
ФормаОтчета = Отчеты.МойДетальныйОтчет.ПолучитьФорму();
ФормаОтчета.УстановитьПараметрОтбора("Сумма", ЗначениеРасшифровки);
ФормаОтчета.Открыть();
КонецЕсли;
КонецПроцедуры
В этом примере мы анализируем тип значения, по которому произошла расшифровка, и выполняем соответствующее действие. Это дает нам полный контроль над поведением отчета.
Проанализируем еще несколько моментов, которые помогут нам сделать работу с макетами и расшифровкой в СКД более эффективной.
Стандартное поведение без пользовательских макетов: Если мы не используем пользовательские макеты, платформа 1С автоматически генерирует их и настраивает стандартную расшифровку. Для ссылочных типов данных по умолчанию выполняется действие Открыть значение (например, открывается форма документа или элемента справочника). Это полезно учитывать, чтобы понимать, что именно мы переопределяем, создавая собственные макеты.
Заполнение ячеек шаблоном: Помимо заполнения ячейки параметром (Заполнение = Параметр), мы можем использовать тип заполнения Шаблон. В этом случае текст ячейки может содержать несколько параметров, заключенных в квадратные скобки (например, [Товар] (арт: [Артикул])), позволяя формировать комбинированные значения. При этом расшифровка будет работать по тому параметру, который мы укажем в свойстве Параметр расшифровки для данной ячейки.
Надеемся, что этот подробный разбор поможет вам успешно настроить расшифровку в пользовательских макетах СКД и создавать еще более функциональные и удобные отчеты в 1С!
← К списку