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

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

Макет, параметр и расшифровка в 1С: что это и как работать с ними

Что такое макет, параметр и расшифровка в 1С, как они работают в отчётах и печатных формах, как настроить расшифровку ячейки и избежать типичных ошибок.

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

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

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

Что такое макет в 1С и какие области в нём бывают

Макет — это объект конфигурации (или внешний файл), содержащий заготовку табличного документа. Его создают в конфигураторе: для отчёта, обработки, документа или в разделе «Общие макеты». Макет делится на именованные области: «Шапка», «Строка», «Подвал» и т.д. При формировании документа программа получает нужную область, заполняет её параметры и выводит в итоговый табличный документ.

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

У ячеек макета есть свойство «Заполнение»: текст, параметр или шаблон. «Текст» — неизменяемая надпись. «Параметр» — ячейка, значение которой подставляется программно через коллекцию «Параметры» области. «Шаблон» — смесь текста и параметров в квадратных скобках, например «Счёт № [НомерДокумента] от [ДатаДокумента]».

Параметры ячеек: как данные попадают в макет

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

1c
Макет = ПолучитьМакет("Макет");
ОбластьСтрока = Макет.ПолучитьОбласть("Строка");
ОбластьСтрока.Параметры.Номенклатура = СтрокаТЧ.Номенклатура;
ОбластьСтрока.Параметры.Сумма = СтрокаТЧ.Сумма;
ТабДок.Вывести(ОбластьСтрока);

Если параметр в коде не заполнен, ячейка выведется пустой — молча, без ошибки. Поэтому при отладке печатной формы, где «не выводится сумма», первым делом проверяют два совпадения: имя параметра в макете и имя в коде должны совпадать посимвольно, а свойство «Заполнение» ячейки должно быть «Параметр» или «Шаблон», а не «Текст».

Для параметров можно задавать формат вывода (через «Формат» в свойствах ячейки или функцию Формат() в коде) — это важно для дат и чисел, иначе дата выведется со временем, а сумма без разделителей разрядов.

Расшифровка: что скрывается за ячейкой

Расшифровка — это произвольное значение (ссылка на документ, структура с параметрами, идентификатор), которое привязывается к ячейке и не видно на печати. Когда пользователь дважды щёлкает по ячейке, 1С может открыть связанный объект или сформировать детальный отчёт, используя это значение.

1c
ОбластьСтрока.Параметры.Документ = СтрокаТЧ.Документ;
ОбластьСтрока.Параметры.РасшифровкаДокумента = СтрокаТЧ.Документ; // ссылка для открытия

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

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

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

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

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

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

Как проверить расшифровку в отчёте СКД
  1. 1
    Сформируйте отчёт и дважды щёлкните по ячейке с суммой
  2. 2
    Проверьте, появилось ли меню расшифровки (открыть, расшифровать, отобрать)
  3. 3
    Если меню пустое — проверьте, не отключена ли расшифровка в настройках варианта
  4. 4
    Если действие есть, но отчёт пустой — проверьте отборы, передаваемые в детальный вариант

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

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

В обработчике первым параметром приходит значение расшифровки. Дальше логика своя: если это ссылка — вызвать «ПоказатьЗначение», если структура — сформировать отчёт. Не забудьте установить «СтандартнаяОбработка = Ложь», если реализуете своё действие, иначе платформа попытается выполнить стандартное поведение поверх вашего.

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

Проверка результата: после формирования документа курсор над ячейкой с расшифровкой меняется на «руку», а двойной щелчок выполняет заданное действие. Если ячейка выглядит как обычный текст — параметр расшифровки не заполнен или имя параметра в макете не совпадает с кодом.

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

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

Курсор над ячейкой
Норма

Меняется на указатель ссылки

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

Остаётся обычным — расшифровка не задана

Двойной щелчок
Норма

Выполняется заданное действие (открытие объекта или отчёт)

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

Ничего не происходит или ошибка — проверяйте обработчик

Печать формы
Норма

Расшифровка не видна на бумаге

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

Если расшифровка попала в текст ячейки — перепутаны параметры

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

Типичные ошибки
01
Имя параметра в макете и в коде различаются — значение молча не подставляется, ячейка пустая
02
У ячейки заполнение «Текст» вместо «Параметр» — обращение к параметру вызывает ошибку или игнорируется
03
Расшифровка заполнена, но событие «ОбработкаРасшифровки» не назначено — двойной щелчок не работает
04
В расшифровку кладут представление (строку) вместо ссылки — открыть объект по ней невозможно
05
Ожидание расшифровки в сохранённом MXL или PDF — она сохраняется только в живом табличном документе сеанса

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

Когда использовать параметры, а когда — СКД

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

Сравнение вариантов

Макет + параметры вручную

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

Отчёт на СКД

Расшифровка, отборы и варианты — встроенные; меньше кода; внешний вид ограничен возможностями компоновки

Внешняя печатная форма

Макет и код хранятся отдельно от конфигурации; безопасно при обновлениях; требует подключения через БСП

Итог

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

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

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

Чем параметр отличается от шаблона в ячейке макета?

Параметр — это ячейка, целиком заполняемая одним значением из кода. Шаблон — текст со вставками параметров в квадратных скобках, например «Договор № [Номер] от [Дата]»: ячейка одна, а параметров внутри несколько.

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

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

Сохраняется ли расшифровка при сохранении отчёта в файл?

При сохранении в MXL расшифровка частично сохраняется внутри файла, но при выгрузке в Excel или PDF она теряется полностью — это ограничение форматов, а не ошибка настройки.

Можно ли передать в расшифровку несколько значений?

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

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

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

Нужно ли программировать расшифровку в отчёте на СКД?

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