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