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

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

Разница между текстом, параметром и шаблоном в ячейке табличного документа 1С

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

В табличном документе 1С способ заполнения ячейки определяется свойством Заполнение, которое задаётся в конфигураторе для каждой ячейки макета. Доступны три варианта: Текст, Параметр и Шаблон. От выбранного варианта зависит, как именно данные попадут в итоговый документ: статически из макета, через явное присвоение параметра или через подстановку значений в строку с квадратными скобками.

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

Что такое свойство «Заполнение» и где его найти

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

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

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

Тип «Текст»: статическое содержимое ячейки

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

Важный нюанс: если ячейка имеет тип «Текст», обращение к ней как к параметру из кода не сработает. Строка Область.Параметры.Заголовок = "Счёт № 5" для такой ячейки либо ничего не изменит, либо вызовет ошибку «Параметр не найден» — поведение зависит от того, объявлен ли параметр в макете. Поэтому статические надписи правильнее менять непосредственно в макете, а не пытаться переопределить кодом.

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

Тип «Параметр»: программное заполнение одного значения

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

Заполнение в коде выглядит так:

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

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

Если параметру не присвоено значение, ячейка выводится пустой. Это удобно для необязательных полей, но опасно для обязательных: пропущенное присвоение не вызовет ошибки, и пустая ячейка уйдёт на печать незамеченной.

Тип «Шаблон»: подстановка значений внутрь строки

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

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

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

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

Сравнение трёх режимов заполнения

КритерийТекстПараметрШаблон
Источник содержимогоЗашито в макетПрисваивается из кодаСтрока макета + параметры из кода
Изменение из кодаНевозможноЗаменяет всё содержимое ячейкиПодстановка в отмеченные места
Количество значений в ячейкеНольОдноОдно или несколько
Типичное применениеЗаголовки, подписиРеквизиты, суммы, наименованияСоставные фразы, итоговые строки
Форматирование значенийНе требуетсяСвойство «Формат» ячейки или Формат()Только Формат() в коде
Реакция на незаданный параметр—Пустая ячейкаПустая подстановка внутри текста

Какой режим выбрать

Текст

Надпись одинакова во всех экземплярах документа и никогда не меняется из кода. Ограничение: любое изменение требует правки макета.

Параметр

Ячейка целиком содержит одно динамическое значение — номер, сумму, наименование. Ограничение: нельзя встроить статический текст рядом в той же ячейке.

Шаблон

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

Как выбрать режим и проверить результат

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

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

Порядок настройки ячейки-параметра
  1. 1
    Откройте макет, выделите ячейку и вызовите палитру свойств
  2. 2
    Установите свойство Заполнение = Параметр
  3. 3
    Впишите имя в свойство Параметр, например НомерДокумента
  4. 4
    При необходимости задайте свойство Формат для даты или числа
  5. 5
    В коде присвойте значение: Область.Параметры.НомерДокумента = Значение
  6. 6
    Сформируйте документ и проверьте, что значение вывелось
Контрольные точки

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

Значение вывелось в ячейке
Норма

Виден ожидаемый текст или число

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

Ячейка пустая — проверьте имя параметра и тип заполнения

В шаблоне подставились все значения
Норма

Фраза читается целиком без квадратных скобок

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

В тексте остались фрагменты [ИмяПараметра] — параметр не присвоен или имя не совпадает

Формат чисел и дат
Норма

Разделители разрядов, нужное число знаков после запятой

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

Сырой формат — задайте свойство Формат ячейки или Формат() в коде

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

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

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

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

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

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

Можно ли в одной ячейке-шаблоне использовать несколько параметров?

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

Почему параметр присвоен, а ячейка на печати пустая?

Проверьте три вещи: тип заполнения ячейки (должен быть «Параметр» или «Шаблон», а не «Текст»), точное совпадение имени параметра в макете и в коде, и порядок кода — присвоение должно выполняться до вызова ТабДок.Вывести(Область), а не после.

Что выбрать для даты и суммы — параметр или шаблон?

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

Можно ли заполнить ячейку типа «Текст» из кода?

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

Как вывести в шаблоне сам символ квадратной скобки?

Квадратные скобки в тексте шаблона интерпретируются как начало подстановки. Если литеральная скобка нужна в выводимом тексте, надёжнее сформировать строку полностью в коде и передать её через один параметр, а в макете оставить одиночную подстановку [ТекстСтроки].

Где лучше форматировать значения — в макете или в коде?

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

Итог

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

Тип заполнения ячейки задаётся в макете свойством «Заполнение»: Текст — статика, Параметр — одно значение из кода, Шаблон — строка с подстановками [ИмяПараметра]. Пустая ячейка или скобки в выводе почти всегда означают неверный тип заполнения или несовпадение имён параметров между макетом и кодом.