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

Разработка и Конфигурация · 11 мин

Как добавить параметр в макет 1С

Как добавить параметр в макет 1С: создание области с параметрами, заполнение из кода, работа с табличным документом и СКД. Примеры, ошибки и проверка результата.

Параметры в макете 1С позволяют выводить в печатную форму или отчёт изменяющиеся данные: номер документа, ФИО сотрудника, суммы, даты. Вместо жёстко зашитого текста в ячейке макета размещается именованный параметр, а фактическое значение подставляется программно при формировании документа. Такой подход делает макет универсальным: один шаблон обслуживает любые документы одного типа.

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

Где в макете 1С используются параметры

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

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

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

Откройте конфигуратор, найдите нужный макет (например, в ветке документа: Документы → РеализацияТоваровУслуг → Макеты → МакетПечати) и откройте его двойным щелчком. Если макета нет, создайте его: правой кнопкой на ветке «Макеты» → «Добавить», тип — «Табличный документ».

Выделите ячейку, в которую нужно выводить данные, и откройте палитру свойств (правой кнопкой → «Свойства» или Alt+Enter). Найдите свойство «Заполнение» и установите значение «Параметр». Затем в свойстве «Параметр» укажите имя — латиницей или кириллицей без пробелов, например «НомерДокумента» или «НаименованиеТовара». После этого в ячейке отобразится имя параметра в угловых скобках или как служебная метка — это нормально, в итоговой печатной форме его не будет.

Если ячеек с параметрами несколько и они образуют логический блок (шапка, строка, подвал), выделите соответствующие строки и создайте именованную область: меню «Таблица» → «Имена» → «Назначить имя» (в новых версиях — «Таблица» → «Именованные области»). Имя области понадобится в коде для её получения.

Порядок действий
  1. 1
    Откройте макет в конфигураторе и выделите нужную ячейку
  2. 2
    В палитре свойств установите «Заполнение» = «Параметр»
  3. 3
    В поле «Параметр» введите имя без пробелов
  4. 4
    Выделите строки блока и назначьте имя области через «Таблица» → «Имена»
  5. 5
    В модуле менеджера или формы напишите код заполнения параметров
  6. 6
    Обновите конфигурацию и проверьте печатную форму на тестовом документе

Как заполнить параметр из кода

Значения параметрам присваиваются после получения области макета и до её вывода в результирующий табличный документ. Типовой фрагмент кода в модуле менеджера документа выглядит так:

Функция ПечатьСчета(СсылкаНаДокумент) Экспорт

ТабДок = Новый ТабличныйДокумент;

Макет = Документы.РеализацияТоваровУслуг.ПолучитьМакет("МакетПечати");

ОбластьШапка = Макет.ПолучитьОбласть("Шапка");

ОбластьШапка.Параметры.НомерДокумента = СсылкаНаДокумент.Номер;

ОбластьШапка.Параметры.ДатаДокумента = Формат(СсылкаНаДокумент.Дата, "ДЛФ=D");

ТабДок.Вывести(ОбластьШапка);

Возврат ТабДок;

КонецФункции

Обращение идёт через коллекцию «Параметры» области: Область.Параметры.ИмяПараметра = Значение. Если область выводится в цикле (например, строки табличной части), получайте область один раз до цикла, а внутри цикла только присваивайте параметры и выводите — это быстрее, чем повторное получение области на каждой итерации.

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

bsl
ОбластьСтрока = Макет.ПолучитьОбласть("Строка");
Для Каждого СтрокаТовара Из Товары Цикл
    ОбластьСтрока.Параметры.НаименованиеТовара = СтрокаТовара.Номенклатура;
    ОбластьСтрока.Параметры.Количество = СтрокаТовара.Количество;
    ОбластьСтрока.Параметры.Сумма = СтрокаТовара.Сумма;
    ТабДок.Вывести(ОбластьСтрока);
КонецЦикла;

Как использовать шаблон для вставки параметров в текст

Когда в ячейке должна быть фраза с переменными частями — например, «Всего наименований 5, на сумму 12 500,00 руб.» — установите свойство «Заполнение» в значение «Шаблон». Тогда в тексте ячейки переменные части заключаются в квадратные скобки: «Всего наименований [КоличествоСтрок], на сумму [СуммаДокумента] руб.».

Заполнение из кода выполняется точно так же — через коллекцию Параметры области. Имена в квадратных скобках должны совпадать с именами, которым присваиваются значения, с точностью до символа. Внутри квадратных скобок допустимо и форматирование: [СуммаДокумента, ЧДЦ=2] — такой синтаксис позволяет задать формат прямо в шаблоне.

Параметр или шаблон

Заполнение «Параметр»

Подходит, когда ячейка целиком содержит одно значение: номер, дату, ФИО, сумму. Проще контролировать формат через свойства ячейки.

Заполнение «Шаблон»

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

Заполнение «Текст»

Статический текст без подстановок. Используется для неизменных надписей: заголовков, подписей «М.П.», пояснений.

Как добавить параметр в макет СКД

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

Чтобы параметр влиял на выборку, сошлитесь на него в тексте запроса на закладке «Наборы данных»: ГДЕ Документ.Дата МЕЖДУ &НачалоПериода И &КонецПериода. Имена в запросе (с амперсандом) должны совпадать с именами на закладке «Параметры» — СКД свяжет их автоматически.

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

Как проверить результат и найти ошибку

Базовая проверка: сформируйте печатную форму на тестовом документе с заранее известными значениями. Каждый параметр макета должен отобразить корректное значение, даты — в нужном формате, суммы — с правильным числом знаков после запятой и без обрезания по ширине ячейки.

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

Полезный приём отладки: временно выведите значение через Сообщить() перед присваиванием параметру, чтобы убедиться, что источник данных вообще содержит значение. Часто проблема не в макете, а в пустой выборке запроса или незаполненном реквизите документа.

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

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

Ячейка с параметром в печатной форме
Норма

Отображается значение из документа в нужном формате

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

Пустая ячейка или виден текст вида [ИмяПараметра]

Коллекция Параметры области в отладчике
Норма

Присутствует параметр с нужным именем

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

Параметра нет — ошибка в имени области или макете

Отчёт на СКД при смене параметра
Норма

Данные пересчитываются с учётом отбора

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

Результат не меняется — параметр не связан с запросом

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

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

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

Типичные ошибки
01
Опечатка в имени параметра: ячейка остаётся пустой или возникает ошибка обращения к параметру
02
Присваивание значений после ТабДок.Вывести(): изменения не попадают в результат
03
Получение области внутри цикла: формирование большой табличной части замедляется в разы
04
Параметр СКД объявлен, но не используется в запросе: отбор не работает, пользователь считает отчёт неисправным
05
Изменение типового макета без копии: при обновлении конфигурации доработки затираются

Часто задаваемые вопросы

Можно ли добавить параметр в макет без доступа к конфигуратору?

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

Почему в печатной форме виден текст в квадратных скобках?

Это признак незаполненного шаблона: ячейка имеет заполнение «Шаблон», но параметру в коде не присвоено значение. Проверьте совпадение имени в квадратных скобках с именем в строке Область.Параметры.Имя = Значение.

Как вывести в параметр значение составного типа, например контрагента с ИНН?

Параметр принимает одно значение. Сформируйте строку заранее в коде: Строка(Контрагент) + ", ИНН " + Контрагент.ИНН — и присвойте её одному параметру, либо используйте шаблон с двумя параметрами.

Чем параметр макета отличается от параметра отчёта на СКД?

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

Как передать параметры во внешнюю печатную форму?

Во внешней печатной форме макет получают через ЭтотОбъект.ПолучитьМакет("ИмяМакета"), дальше работа с параметрами идентична встроенным макетам: получение области, присваивание значений коллекции Параметры, вывод в табличный документ.

Почему после обновления конфигурации параметры пропали?

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

Итог

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

Параметр добавляется в свойствах ячейки макета (Заполнение = «Параметр»), заполняется из кода через Область.Параметры.Имя до вывода области, а в СКД объявляется на закладке «Параметры» и связывается с запросом через &Имя. Контролируйте совпадение имён и защищайте доработки от затирания при обновлении.