Надпись в 1С: текст в печатной форме и на форме документа
Содержание
Надпись в 1С добавляют в двух разных местах: в макете печатной формы (это табличный документ в конфигураторе) и на управляемой форме объекта — через элемент «Декорация». Путь зависит от того, где текст должен появиться: на бумаге при печати или на экране рядом с реквизитами.
Разберём оба варианта: как вписать статический текст в ячейку макета, как вывести значение из кода, как показать надпись на форме и управлять её видимостью, шрифтом и положением. Примеры кода — на встроенном языке 1С, пути — для платформы 8.3 с интерфейсом «Такси».
Макет печатной формы и форму типовой конфигурации правильнее менять через расширение конфигурации (доступно с платформы 8.3.6). Так вы не снимаете основную конфигурацию с поддержки и спокойно обновляетесь дальше.
Где в 1С размещают текстовые надписи
Текст в интерфейсе и в печати живёт в трёх хранилищах, и каждое настраивается отдельно:
- 📄 Макет печатной формы — табличный документ. Надпись печатается на листе. Самый частый случай: штамп, шапка, подпись, примечание в счёте или акте.
- 🖥️ Управляемая форма — элемент «Декорация» вида «Надпись». Текст виден на экране, при печати формы попадает в её табличный документ.
- 🗂️ Реквизит объекта — не надпись в чистом виде, а поле данных. Если текст должен сохраняться в базе (например, комментарий), это уже реквизит, а не оформительская подпись.
Статическая надпись — та, что не меняется: заголовок колонки, слово «Итого», фраза «Товар отпустил». Динамическая — подставляет значение: номер документа, сумму, ФИО. Механизм для них разный, и его стоит выбрать заранее.
Что выбрать под задачу:
| Где нужна надпись | Инструмент | Как добавить |
|---|---|---|
| Текст на печатном листе | Ячейка макета, заполнение Текст | В конфигураторе, в табличном документе макета |
| Значение из документа в печати | Ячейка макета, заполнение Параметр | То же + заполнение из кода |
| Фраза со значением вперемешку | Ячейка макета, заполнение Шаблон | Текст и [Параметр] в одной ячейке |
| Пояснение на экране формы | Декорация вида «Надпись» | На закладке «Элементы» редактора формы |
| Крупный штамп поверх печати | Графический объект-надпись | Панель рисунков табличного документа |
Статическая надпись в макете печатной формы
Макет открывается в конфигураторе двойным щелчком по строке макета в дереве объекта (ветка Макеты). Перед глазами — табличный документ, разлинованный на ячейки.
Чтобы добавить постоянный текст:
- Выделите ячейку, куда ляжет надпись.
- Наберите текст прямо в ячейке.
- Откройте палитру свойств ячейки (
Alt+Enterили контекстное меню → Свойства). - В свойстве Заполнение оставьте значение
Текст.
Значение Текст означает, что в ячейке именно строка, а не имя параметра. Это и есть статическая надпись — она попадёт в печать как есть.
Если надпись длиннее одной ячейки, объедините несколько: выделите диапазон и в меню Таблица → Объединить (или через контекстное меню ячеек). Объединённая область ведёт себя как одна ячейка.
Перед правкой типового макета сделайте копию исходного или работайте в расширении — иначе при обновлении конфигурации ваши надписи затрёт.
Чтобы надпись действительно вывелась на печать, область макета с ней нужно вывести в результирующий табличный документ. В коде модуля печати это выглядит так:
Макет = Документы.РасходнаяНакладная.ПолучитьМакет("Печать");
ОбластьШапка = Макет.ПолучитьОбласть("Шапка");
ТабДок = Новый ТабличныйДокумент;
ТабДок.Вывести(ОбластьШапка);
Имя области («Шапка») задаётся в макете: выделяете диапазон строк, в его свойствах пишете Имя. Метод ПолучитьОбласть берёт именно этот именованный кусок.
С отчётом логика та же: результат отчёта выводится в табличный документ, и надпись печатается из области макета. Если отчёт построен на системе компоновки данных, общий заголовок проще задать не в макете, а в настройках — раздел Другие настройки → Заголовок. Произвольные подписи внутри отчёта выводятся через собственный макет группировки, назначенный в схеме компоновки.
Динамическая надпись: подстановка значения через параметр
Когда в надписи должно появиться значение из документа — номер, дата, сумма, — используют не текст, а параметр.
В ячейке макета:
- Напишите имя параметра латиницей или кириллицей, например
НомерДокумента. - В свойстве Заполнение выберите
Параметр.
Теперь ячейка хранит не текст, а имя переменной. Заполняется она из кода перед выводом области:
ОбластьШапка = Макет.ПолучитьОбласть("Шапка");
ОбластьШапка.Параметры.НомерДокумента = Номер;
ОбластьШапка.Параметры.ДатаДокумента = Дата;
ТабДок.Вывести(ОбластьШапка);
Есть и третий вариант заполнения — Шаблон. Он смешивает постоянный текст и параметры в квадратных скобках прямо в ячейке:
Накладная № [НомерДокумента] от [ДатаДокумента]
Шаблон удобен для надписей, где фраза и значение идут вперемешку: «Накладная № …», «Итого к оплате: …». Параметры внутри скобок заполняются так же, через ОбластьМакета.Параметры.
Надпись на управляемой форме через декорацию
На форме документа, справочника или обработки надпись — это элемент типа Декорация с видом Надпись.
Чтобы добавить её в конфигураторе:
- Откройте форму, перейдите на закладку Элементы редактора формы.
- Нажмите Добавить и выберите тип Декорация.
- В свойствах элемента укажите вид
Надписьи впишите текст в свойство Заголовок.
Заголовок декорации может быть не только простой строкой, но и форматированной строкой — тогда разные куски текста получают свой цвет и начертание. Собрать её можно и из кода:
Элементы.Примечание.Заголовок = Новый ФорматированнаяСтрока(
"Внимание: ",
Новый ФорматированнаяСтрока("документ не проведён",
Новый Шрифт(, , Истина), WebЦвета.Красный));
Первый аргумент печатается обычным шрифтом, второй — жирным красным. Так в одной надписи уживаются спокойный текст и акцент.
Декорацию удобно класть в группу: так надпись не «съедет» при изменении размеров формы. Группа с горизонтальной или вертикальной разбивкой держит элементы в порядке. Если надпись должна занимать всю ширину формы, включите у декорации свойство Растягивать по горизонтали.
Декорация не хранит данные. Если текст должен сохраняться в базе и редактироваться пользователем — это реквизит с полем ввода, а не надпись.
Управление видимостью и текстом надписи из кода
И декорацию на форме, и параметр в макете можно менять программно — показывать надпись по условию или подставлять текст на лету.
Видимость декорации переключают через коллекцию Элементы:
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Элементы.ПредупреждениеОбОтгрузке.Видимость = (Объект.Статус = "Отгружен");
КонецПроцедуры
Здесь ПредупреждениеОбОтгрузке — имя декорации в свойствах элемента. Надпись появится, только если статус документа «Отгружен».
Текст надписи меняется присваиванием заголовка:
Элементы.ПредупреждениеОбОтгрузке.Заголовок =
"Отгружено " + Формат(Объект.Дата, "ДФ=dd.MM.yyyy");
Обратите внимание: число или дату перед склейкой со строкой прогоняют через Формат(), иначе 1С выдаст служебное представление. Для даты подойдёт шаблон "ДФ=dd.MM.yyyy", для числа — "ЧГ=0" (без разделителей групп).
В макете печатной формы показать или скрыть надпись по условию проще всего, выводя или не выводя её область:
Если ЭтоКопия Тогда
ТабДок.Вывести(Макет.ПолучитьОбласть("Копия"));
КонецЕсли;
Так область с крупной надписью «КОПИЯ» выводится только тогда, когда она нужна.
Шрифт, цвет и выравнивание
Внешний вид надписи настраивается и мышью в палитре свойств, и из кода.
В макете за оформление отвечают свойства ячейки или области: Шрифт, Цвет текста, Цвет фона, Горизонтальное положение, Вертикальное положение. В конфигураторе их задают в палитре свойств. Из кода — через объект области:
Область = ОбластьШапка.Область("R1C1");
Область.Шрифт = Новый Шрифт("Arial", 12, Истина); // имя, размер, жирный
Область.ЦветТекста = Новый Цвет(0, 0, 0);
Область.ГоризонтальноеПоложение = ГоризонтальноеПоложение.Центр;
Конструктор Новый Шрифт(ИмяШрифта, Размер, Жирный, Наклонный) принимает имя гарнитуры, размер в пунктах и флаги начертания. Третий параметр Истина делает текст жирным, четвёртый — наклонным.
Для выравнивания используют перечисления ГоризонтальноеПоложение (Лево, Центр, Право, ПоШирине) и ВертикальноеПоложение (Верх, Центр, Низ). Центровка заголовка по объединённой области даёт аккуратный штамп.
На форме у декорации те же по смыслу свойства: Шрифт, Цвет текста, Горизонтальное положение. Их тоже можно переопределить в коде через Элементы.ИмяДекорации.Шрифт. Если нужен единый стиль, лучше взять готовый стилевой элемент из свойства шрифта, а не прописывать гарнитуру вручную, — тогда надпись подстроится под оформление платформы.
Для крупной акцентной надписи («ОБРАЗЕЦ», «КОПИЯ») поверх печати удобнее не ячейка, а отдельный графический объект-надпись: он не зависит от сетки и ложится слоем над таблицей.
Позиция и координаты надписи
В макете печатной формы есть два способа разместить текст.
Через сетку ячеек — основной. Положение надписи задаётся геометрией таблицы: шириной столбцов, высотой строк и объединением ячеек. Чтобы сдвинуть надпись, меняют размеры соседних ячеек или добавляют пустые. Ширину столбца и высоту строки задают в их свойствах в пунктах.
Через графический объект — когда надпись должна лежать поверх таблицы в произвольном месте (водяной знак, штамп наискосок). Такой объект добавляют через панель рисунков табличного документа: выбираете инструмент надписи и растягиваете рамку по листу. В свойствах объекта доступны поля положения — левая и верхняя границы, ширина и высота в точках, а также угол поворота текста. Это и есть точные координаты: меняя их, двигают надпись с точностью до пункта.
На управляемой форме абсолютных координат нет — там работает потоковая раскладка. Положение декорации определяется порядком элементов и свойствами групп: горизонтальная группа ставит элементы в ряд, вертикальная — в столбец. Чтобы прижать надпись к краю или растянуть, настраивают свойства Растягивать по горизонтали/вертикали и положение внутри группы, а не пиксельные отступы.
Типичные ошибки
Короткий разбор того, почему надпись не появляется или выглядит не так:
ПолучитьОбласть() совпадает с именем диапазона в макете, и что есть вызов Вывести().Текст. Переключите на Параметр (или Шаблон со скобками) и заполните его через ОбластьМакета.Параметры.Формат(Значение, "ДФ=dd.MM.yyyy") для даты или Формат(Число, "ЧГ=0") для числа.