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