Почему в макете 1С 7.7 реквизиты не вычисляются, а выводятся как текст со скобками?

Программист 1С v7.7 1C:Бухгалтерия Бухгалтерский учет IT и автоматизация бизнеса
← На главную

При разработке печатных форм и отчетов на платформе 1С:Предприятие 7.7 начинающие разработчики часто сталкиваются с ситуацией: при формировании таблицы вместо фактических значений переменных или реквизитов объектов на печать выводится исходный текст в скобках, например <Сч.Код> или [Сч.Код]. Выясним причину такого поведения и разберем, как правильно настраивать ячейки табличного документа.

Проанализируем типовую ситуацию на примере обхода плана счетов и вывода его структуры в макет:


Процедура Печать()
    Сч = СоздатьОбъект("Счет");
    // Указываем текущий план счетов
    Сч.ИспользоватьПланСчетов(ИспользоватьПланСчетов());
    
    Таб = СоздатьОбъект("Таблица");
    Таб.ИсходнаяТаблица("Таблица");
    Таб.ВывестиСекцию("Шапка");
    
    Сч.ВыбратьСчета();
    Пока Сч.ПолучитьСчет() = 1 Цикл
        Если Сч.ЭтоГруппа() = 1 Тогда
            Таб.ВывестиСекцию("Группа");
        Иначе
            Таб.ВывестиСекцию("Строка");
        КонецЕсли;
    КонецЦикла;
    
    Таб.ТолькоПросмотр(1);
    Таб.ПараметрыСтраницы(2,,,,,,,,,1,,);
    Таб.Показать("План счетов");
КонецПроцедуры

Причина ошибки: некорректный тип ячейки в макете

В табличном редакторе 1С 7.7 по умолчанию любая новая ячейка имеет тип «Текст». Если тип не изменен в свойствах ячейки, платформа воспринимает введенные символы буквально и не пытается выполнять вычисления встроенного языка. В отличие от веб-разметки или некоторых других сред, угловые скобки <> в 1С 7.7 не являются тегами для вставки выражений.

Для корректного вывода данных в платформе 1С 7.7 предусмотрено два основных механизма настройки ячеек: «Выражение» и «Шаблон». Разберем каждый из них подробно.

Вариант 1. Использование типа ячейки «Выражение»

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

  1. Откроем свойства нужной ячейки в макете таблицы (двойной клик или пункт меню «Свойства»).
  2. На вкладке «Текст» установим переключатель в положение «Выражение».
  3. В поле ввода укажем имя переменной или реквизит без каких-либо скобок: Сч.Код или СокрЛП(Сч.Наименование).

В момент выполнения метода Таб.ВывестиСекцию(...) платформа автоматически обратится к переменной Сч, определенной в контексте исполняемого модуля, и подставит актуальное значение свойства Код.

Вариант 2. Использование типа ячейки «Шаблон»

Тип «Шаблон» необходим в тех случаях, когда в одной ячейке требуется объединить статическую текстовую строку и динамически вычисляемые значения.

  1. В свойствах ячейки переключим тип на «Шаблон».
  2. Для динамических вставок используем квадратные скобки [...], а не угловые.

Рассмотрим пример правильного заполнения текста для типа «Шаблон»:

Счет: [Сч.Код] — [СокрЛП(Сч.Наименование)]

Если внутри шаблона требуется вывести сам символ квадратной скобки как обычный текст, его необходимо экранировать удвоением: [[ и ]].

Важные правила работы с таблицами в 1С 7.7

  1. Область видимости: вычисляемые выражения в ячейках секций имеют прямой доступ к локальным переменным процедуры, из которой вызывается Таб.ВывестиСекцию(), а также к переменным модуля и глобальным функциям конфигурации.
  2. Позиционирование объекта: перед выводом секции убедимся, что объект метаданных успешно позиционирован методом ПолучитьСчет() (или выбран методом Сч.Выбран() = 1), иначе реквизиты вернут пустое значение.
  3. Форматирование текста: для длинных наименований счетов рекомендуется включать флаг «Переносить по словам» в свойствах ячейки и задавать «Автовысоту» для строк секции в макете.
← На главную