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

Документы и Печать · 9 мин

Как заполнить параметр в макете 1С

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

Параметры макета в 1С — это именованные места в ячейках табличного документа, в которые при формировании печатной формы подставляются значения из данных программы: номер документа, дату, наименование контрагента, сумму. Правильно заполненный параметр позволяет создать один макет и выводить по нему любые документы без ручного редактирования печатной формы.

Работа с параметрами состоит из двух сторон: в макете объявляется параметр (в свойстве ячейки «Заполнение» выбирается значение «Параметр»), а в коде модуля этому параметру присваивается конкретное значение через коллекцию Параметры области табличного документа. Ошибка на любой из сторон приводит либо к пустому месту в печатной форме, либо к тексту вида «[ИмяПараметра]» прямо в документе.

Материал подходит для типовых конфигураций на управляемых и обычных формах — механизм параметров табличного документа одинаков везде. Примеры кода приведены на встроенном языке 1С и работают как в модулях менеджеров печати, так и во внешних печатных формах.

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

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

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

Как объявить параметр в макете

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

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

Если ячейка должна содержать несколько значений, выберите «Заполнение — Шаблон» и в тексте ячейки укажите вставки в квадратных скобках: Счёт № [НомерСчета] от [ДатаСчета]. Каждая вставка становится параметром с соответствующим именем.

Порядок действий в макете
  1. 1
    Откройте макет табличного документа в конфигураторе
  2. 2
    Выделите ячейку и откройте палитру свойств
  3. 3
    Установите «Заполнение — Параметр» и впишите имя параметра
  4. 4
    Задайте формат ячейки при необходимости (дата, число)
  5. 5
    Сохраните макет и обновите конфигурацию

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

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

Макет = ПолучитьМакет("МакетСчета");

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

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

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

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

Важно понимать порядок: сначала заполняются параметры области, потом область выводится методом Вывести() или Присоединить() в итоговый табличный документ. Если присвоить параметр после вывода — изменения в готовой форме не появятся, область уже зафиксирована.

В типовых конфигурациях (БСП) печатные формы строятся через процедуры модуля менеджера объекта, где данные берутся из выборки запроса. Принцип тот же: Область.Параметры.ИмяПараметра = Выборка.ПолеЗапроса;. Во внешних печатных формах данные обычно получают запросом по ссылке на документ, переданной в массиве объектов.

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

Заполнение параметров в цикле и табличных частях

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

Безопасный приём — получать область внутри цикла через Макет.ПолучитьОбласть("Строка") либо явно присваивать все параметры на каждой итерации. Это исключает «протекание» данных из одной строки документа в другую, что особенно критично для сумм и количеств.

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

Форматирование значений параметров

Формат вывода можно задать двумя способами. Первый — в самом макете: свойство ячейки «Формат» (например, ДЛФ=D для даты или ЧДЦ=2 для числа). Второй — в коде через функцию Формат() перед присвоением. Формат в макете удобнее, когда тип значения постоянен; формат в коде даёт гибкость, если представление зависит от условий.

Для сумм прописью в типовых конфигурациях используются функции общих модулей (например, формирование суммы прописью через функции работы с числами), результат которых присваивается параметру уже строкой. Не передавайте в параметр ссылочные объекты напрямую, если нужно особое представление: Строка(Ссылка) выдаёт стандартное представление, которое может не совпадать с требуемым в печатной форме.

Типичные ошибки и как их найти

Самая частая ошибка — несовпадение имени параметра в макете и в коде. Внешне это выглядит как пустая ячейка или как текст «[ИмяПараметра]» в готовой форме (для шаблонов). Проверка проста: откройте макет, найдите ячейку, сверьте имя в свойстве «Параметр» с именем в коде посимвольно.

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

Типичные ошибки
01
Опечатка в имени параметра — ячейка остаётся пустой или выводится [ИмяПараметра]
02
Присвоение параметра после Вывести() — значение не попадает в форму
03
Получение области один раз вне цикла — в строках документа дублируются данные предыдущей строки
04
Передача ссылки вместо представления — в форме выводится нечитаемое значение
05
Изменение макета без обновления конфигурации — в пользовательском режиме видна старая версия

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

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

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

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

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

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

Выводится подставленное значение в нужном формате

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

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

Строки табличной части
Норма

Каждая строка содержит свои данные

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

Значения повторяются из предыдущей строки

Даты и суммы
Норма

Формат соответствует требованиям формы

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

Дата со временем, сумма без копеек или с лишними знаками

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

Почему в печатной форме выводится текст [ИмяПараметра]?

Это признак шаблона, параметр которого не получил значения в коде. Проверьте, что имя в квадратных скобках в макете совпадает с именем при присвоении через Область.Параметры, и что строка присвоения реально выполняется (не в невыполняемой ветке условия).

Можно ли заполнить параметр картинкой или штрихкодом?

Да, но не через текстовое присвоение. Для картинок в макете используется ячейка с типом «Картинка», а в коде вызывается метод области Рисунки с присвоением свойства Картинка. Штрихкоды в типовых конфигурациях выводятся через специальные функции формирования изображения штрихкода.

Как вывести значение только при его наличии, а иначе скрыть строку?

Заполните параметр условно: если значение пустое, не выводите область совсем или выведите альтернативную область без этой строки. Для частичной видимости удобно держать в макете два варианта области и выбирать нужный в коде.

Работает ли этот механизм во внешних печатных формах?

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

Что делать, если параметр заполнен, но форма показывает старое значение?

Чаще всего не обновлена конфигурация после изменения макета или кэшируется старая версия внешней обработки. Обновите конфигурацию базы данных, переподключите внешнюю печатную форму и сформируйте документ заново.

Итог

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

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