При разработке печатных форм и отчетов на платформе 1С:Предприятие 7.7 начинающие разработчики часто сталкиваются с ситуацией: при формировании таблицы вместо фактических значений переменных или реквизитов объектов на печать выводится исходный текст в скобках, например <Сч.Код> или [Сч.Код]. Выясним причину такого поведения и разберем, как правильно настраивать ячейки табличного документа.
Проанализируем типовую ситуацию на примере обхода плана счетов и вывода его структуры в макет:
Процедура Печать()
Сч = СоздатьОбъект("Счет");
// Указываем текущий план счетов
Сч.ИспользоватьПланСчетов(ИспользоватьПланСчетов());
Таб = СоздатьОбъект("Таблица");
Таб.ИсходнаяТаблица("Таблица");
Таб.ВывестиСекцию("Шапка");
Сч.ВыбратьСчета();
Пока Сч.ПолучитьСчет() = 1 Цикл
Если Сч.ЭтоГруппа() = 1 Тогда
Таб.ВывестиСекцию("Группа");
Иначе
Таб.ВывестиСекцию("Строка");
КонецЕсли;
КонецЦикла;
Таб.ТолькоПросмотр(1);
Таб.ПараметрыСтраницы(2,,,,,,,,,1,,);
Таб.Показать("План счетов");
КонецПроцедуры
В табличном редакторе 1С 7.7 по умолчанию любая новая ячейка имеет тип «Текст». Если тип не изменен в свойствах ячейки, платформа воспринимает введенные символы буквально и не пытается выполнять вычисления встроенного языка. В отличие от веб-разметки или некоторых других сред, угловые скобки <> в 1С 7.7 не являются тегами для вставки выражений.
Для корректного вывода данных в платформе 1С 7.7 предусмотрено два основных механизма настройки ячеек: «Выражение» и «Шаблон». Разберем каждый из них подробно.
Этот вариант подходит, если ячейка должна содержать исключительно результат вычисления одной функции, переменной или реквизита объекта.
Сч.Код или СокрЛП(Сч.Наименование).В момент выполнения метода Таб.ВывестиСекцию(...) платформа автоматически обратится к переменной Сч, определенной в контексте исполняемого модуля, и подставит актуальное значение свойства Код.
Тип «Шаблон» необходим в тех случаях, когда в одной ячейке требуется объединить статическую текстовую строку и динамически вычисляемые значения.
[...], а не угловые.Рассмотрим пример правильного заполнения текста для типа «Шаблон»:
Счет: [Сч.Код] — [СокрЛП(Сч.Наименование)]
Если внутри шаблона требуется вывести сам символ квадратной скобки как обычный текст, его необходимо экранировать удвоением: [[ и ]].
Таб.ВывестиСекцию(), а также к переменным модуля и глобальным функциям конфигурации.ПолучитьСчет() (или выбран методом Сч.Выбран() = 1), иначе реквизиты вернут пустое значение.