Разработка и Конфигурация · 11 мин
Как добавить параметр в макет 1С
Как добавить параметр в макет 1С: создание области с параметрами, заполнение из кода, работа с табличным документом и СКД. Примеры, ошибки и проверка результата.
Параметры в макете 1С позволяют выводить в печатную форму или отчёт изменяющиеся данные: номер документа, ФИО сотрудника, суммы, даты. Вместо жёстко зашитого текста в ячейке макета размещается именованный параметр, а фактическое значение подставляется программно при формировании документа. Такой подход делает макет универсальным: один шаблон обслуживает любые документы одного типа.
Работа с параметрами доступна в табличных макетах (тип «Табличный документ») и в макетах схемы компоновки данных. Механика отличается: в табличном документе параметр задаётся прямо в свойствах ячейки, а в СКД — через выражения и ресурсы. Ниже разобраны оба сценария с конкретными действиями и примерами кода.
Где в макете 1С используются параметры
Параметр — это именованное место в ячейке макета, куда при формировании печатной формы подставляется значение из программы. Типичные примеры: шапка счёта с номером и датой, строка табличной части с наименованием товара и ценой, подпись с расшифровкой фамилии руководителя.
Отличие параметра от шаблона: шаблон позволяет вставлять значения внутрь произвольного текста ячейки через квадратные скобки, например «Счёт № [НомерДокумента] от [ДатаДокумента]». Параметр же занимает ячейку целиком. Если нужен текст с переменными фрагментами — используйте шаблон, если ячейка полностью заполняется данными — параметр.
Как добавить параметр в табличный макет через конфигуратор
Откройте конфигуратор, найдите нужный макет (например, в ветке документа: Документы → РеализацияТоваровУслуг → Макеты → МакетПечати) и откройте его двойным щелчком. Если макета нет, создайте его: правой кнопкой на ветке «Макеты» → «Добавить», тип — «Табличный документ».
Выделите ячейку, в которую нужно выводить данные, и откройте палитру свойств (правой кнопкой → «Свойства» или Alt+Enter). Найдите свойство «Заполнение» и установите значение «Параметр». Затем в свойстве «Параметр» укажите имя — латиницей или кириллицей без пробелов, например «НомерДокумента» или «НаименованиеТовара». После этого в ячейке отобразится имя параметра в угловых скобках или как служебная метка — это нормально, в итоговой печатной форме его не будет.
Если ячеек с параметрами несколько и они образуют логический блок (шапка, строка, подвал), выделите соответствующие строки и создайте именованную область: меню «Таблица» → «Имена» → «Назначить имя» (в новых версиях — «Таблица» → «Именованные области»). Имя области понадобится в коде для её получения.
- 1Откройте макет в конфигураторе и выделите нужную ячейку
- 2В палитре свойств установите «Заполнение» = «Параметр»
- 3В поле «Параметр» введите имя без пробелов
- 4Выделите строки блока и назначьте имя области через «Таблица» → «Имена»
- 5В модуле менеджера или формы напишите код заполнения параметров
- 6Обновите конфигурацию и проверьте печатную форму на тестовом документе
Как заполнить параметр из кода
Значения параметрам присваиваются после получения области макета и до её вывода в результирующий табличный документ. Типовой фрагмент кода в модуле менеджера документа выглядит так:
Функция ПечатьСчета(СсылкаНаДокумент) Экспорт
ТабДок = Новый ТабличныйДокумент;
Макет = Документы.РеализацияТоваровУслуг.ПолучитьМакет("МакетПечати");
ОбластьШапка = Макет.ПолучитьОбласть("Шапка");
ОбластьШапка.Параметры.НомерДокумента = СсылкаНаДокумент.Номер;
ОбластьШапка.Параметры.ДатаДокумента = Формат(СсылкаНаДокумент.Дата, "ДЛФ=D");
ТабДок.Вывести(ОбластьШапка);
Возврат ТабДок;
КонецФункции
Обращение идёт через коллекцию «Параметры» области: Область.Параметры.ИмяПараметра = Значение. Если область выводится в цикле (например, строки табличной части), получайте область один раз до цикла, а внутри цикла только присваивайте параметры и выводите — это быстрее, чем повторное получение области на каждой итерации.
Тип значения должен соответствовать содержимому: для дат используйте Формат() с нужной маской, для чисел и сумм при необходимости — тоже Формат() или настройте формат ячейки в самом макете через свойство «Формат». Если параметр не заполнен, в итоговом документе ячейка останется пустой — ошибки не будет, но пустая ячейка в печатной форме может выглядеть как дефект.
ОбластьСтрока = Макет.ПолучитьОбласть("Строка");
Для Каждого СтрокаТовара Из Товары Цикл
ОбластьСтрока.Параметры.НаименованиеТовара = СтрокаТовара.Номенклатура;
ОбластьСтрока.Параметры.Количество = СтрокаТовара.Количество;
ОбластьСтрока.Параметры.Сумма = СтрокаТовара.Сумма;
ТабДок.Вывести(ОбластьСтрока);
КонецЦикла;Как использовать шаблон для вставки параметров в текст
Когда в ячейке должна быть фраза с переменными частями — например, «Всего наименований 5, на сумму 12 500,00 руб.» — установите свойство «Заполнение» в значение «Шаблон». Тогда в тексте ячейки переменные части заключаются в квадратные скобки: «Всего наименований [КоличествоСтрок], на сумму [СуммаДокумента] руб.».
Заполнение из кода выполняется точно так же — через коллекцию Параметры области. Имена в квадратных скобках должны совпадать с именами, которым присваиваются значения, с точностью до символа. Внутри квадратных скобок допустимо и форматирование: [СуммаДокумента, ЧДЦ=2] — такой синтаксис позволяет задать формат прямо в шаблоне.
Параметр или шаблон
Подходит, когда ячейка целиком содержит одно значение: номер, дату, ФИО, сумму. Проще контролировать формат через свойства ячейки.
Подходит для составных фраз с несколькими переменными внутри текста. Ограничение: сложнее локализовать и менять вёрстку, формат задаётся в тексте шаблона.
Статический текст без подстановок. Используется для неизменных надписей: заголовков, подписей «М.П.», пояснений.
Как добавить параметр в макет СКД
В схеме компоновки данных параметры работают иначе: они фильтруют данные запроса или участвуют в вычислениях. Откройте макет типа «Схема компоновки данных», перейдите на закладку «Параметры» и добавьте новую строку: укажите имя, тип (например, Дата, СправочникСсылка.Номенклатура), заголовок, который увидит пользователь, и при необходимости значение по умолчанию.
Чтобы параметр влиял на выборку, сошлитесь на него в тексте запроса на закладке «Наборы данных»: ГДЕ Документ.Дата МЕЖДУ &НачалоПериода И &КонецПериода. Имена в запросе (с амперсандом) должны совпадать с именами на закладке «Параметры» — СКД свяжет их автоматически.
Если параметр не должен быть виден пользователю, снимите флаг «Включать в доступные поля» или установите «Ограничение доступности». Для служебных параметров, которые заполняются только программно, это стандартная практика: пользователь не сможет случайно изменить значение в настройках отчёта.
Как проверить результат и найти ошибку
Базовая проверка: сформируйте печатную форму на тестовом документе с заранее известными значениями. Каждый параметр макета должен отобразить корректное значение, даты — в нужном формате, суммы — с правильным числом знаков после запятой и без обрезания по ширине ячейки.
Если вместо значения выводится пустота — чаще всего имя параметра в коде не совпадает с именем в макете (опечатка, лишний пробел, другой регистр не виноват: имена в 1С регистронезависимы, но опечатки критичны). Если возникает ошибка «Параметр не найден» — параметр с таким именем отсутствует в области либо вы обращаетесь не к той области.
Полезный приём отладки: временно выведите значение через Сообщить() перед присваиванием параметру, чтобы убедиться, что источник данных вообще содержит значение. Часто проблема не в макете, а в пустой выборке запроса или незаполненном реквизите документа.
Как проверить результат
Отображается значение из документа в нужном формате
Пустая ячейка или виден текст вида [ИмяПараметра]
Присутствует параметр с нужным именем
Параметра нет — ошибка в имени области или макете
Данные пересчитываются с учётом отбора
Результат не меняется — параметр не связан с запросом
Типичные ошибки и ограничения
Самая частая ошибка — несовпадение имён: в макете параметр назван «НомерДок», а в коде присваивается «НомерДокумента». Вторая по частоте — присваивание параметров области после её вывода в табличный документ: ТабДок.Вывести(Область) фиксирует текущее состояние, поздние изменения в выведенную копию не попадут.
Из ограничений: параметр существует только внутри своей области, к нему нельзя обратиться из другой области макета. Также нельзя добавить параметр в макет программно «на лету» без изменения самого макета — состав параметров определяется в конфигураторе. Если печатная форма строится полностью кодом без макета, параметры не нужны: значения пишутся в ячейки напрямую через ТабДок.Область("R2C3").Текст.
Часто задаваемые вопросы
Можно ли добавить параметр в макет без доступа к конфигуратору?
Нет, состав параметров макета задаётся только в конфигураторе или через расширение. Пользовательский режим «Изменить форму» и внешние печатные формы позволяют создать собственный макет в файле, но редактировать его всё равно придётся в конфигураторе при разработке внешней обработки.
Почему в печатной форме виден текст в квадратных скобках?
Это признак незаполненного шаблона: ячейка имеет заполнение «Шаблон», но параметру в коде не присвоено значение. Проверьте совпадение имени в квадратных скобках с именем в строке Область.Параметры.Имя = Значение.
Как вывести в параметр значение составного типа, например контрагента с ИНН?
Параметр принимает одно значение. Сформируйте строку заранее в коде: Строка(Контрагент) + ", ИНН " + Контрагент.ИНН — и присвойте её одному параметру, либо используйте шаблон с двумя параметрами.
Чем параметр макета отличается от параметра отчёта на СКД?
Параметр табличного макета — это точка вставки данных в ячейку при печати. Параметр СКД — это значение, влияющее на отбор и расчёт данных отчёта, его может менять пользователь в настройках. Это разные механизмы, хотя называются одинаково.
Как передать параметры во внешнюю печатную форму?
Во внешней печатной форме макет получают через ЭтотОбъект.ПолучитьМакет("ИмяМакета"), дальше работа с параметрами идентична встроенным макетам: получение области, присваивание значений коллекции Параметры, вывод в табличный документ.
Почему после обновления конфигурации параметры пропали?
Значит, был изменён типовой макет, и обновление вернуло его к поставляемому виду. Восстановите изменения из копии и в дальнейшем выносите доработанные макеты в расширение конфигурации или во внешние печатные формы.
Что важно запомнить
Параметр добавляется в свойствах ячейки макета (Заполнение = «Параметр»), заполняется из кода через Область.Параметры.Имя до вывода области, а в СКД объявляется на закладке «Параметры» и связывается с запросом через &Имя. Контролируйте совпадение имён и защищайте доработки от затирания при обновлении.