При разработке печатных форм или отчетов в системе «1С:Предприятие» мы регулярно работаем с макетами табличных документов. Одной из базовых операций является настройка типа заполнения ячейки. Мы привыкли, что для любой ячейки можно выбрать один из трех режимов: Текст, Параметр или Шаблон.
Однако иногда возникает ситуация, способная поставить в тупик даже опытного разработчика: мы открываем палитру свойств, выделяем нужную ячейку, но привычного поля для выбора типа заполнения просто нет. Свойство словно исчезло из конфигуратора. Давайте разберем эту ситуацию, выясним причины такого поведения интерфейса и найдем способы решения проблемы.
Когда мы работаем в конфигураторе, палитра свойств (Properties Palette) является нашим основным инструментом. В версиях платформы 8.2 и 8.3 интерфейс был модернизирован для удобства, однако некоторые функции оптимизации могут сыграть с нами злую шутку.
Ситуация выглядит так: вы создаете макет, выделяете ячейку, нажимаете Alt + Enter (или открываете окно свойств через меню), но в списке свойств видите лишь сокращенный набор. Свойство, которое обычно называется Заполнение (или FillType в англоязычной терминологии), отсутствует. Следовательно, мы не можем указать системе, что в этой ячейке будет выводиться переменная (Параметр) или комбинированный текст (Шаблон).
Давайте рассмотрим причины этого явления. В 99% случаев это не системный сбой, а результат настроек отображения самого окна свойств.
Самая распространенная причина «пропажи» свойств — случайно нажатая кнопка фильтрации в заголовке окна свойств. Платформа 1С пытается помочь разработчику, скрывая редко используемые (по мнению разработчиков платформы) настройки, чтобы не загромождать интерфейс.
Давайте выполним следующие действия для восстановления полного списка:
Сразу после отключения фильтра список свойств в окне обновится, станет значительно длиннее, и мы увидим искомое свойство Заполнение, где сможем выбрать привычные варианты: Текст, Параметр или Шаблон.
Если манипуляции с «воронкой» не помогли, или она уже была отключена, давайте проверим второй вариант — режим сортировки свойств.
В той же командной панели окна свойств есть две кнопки, отвечающие за группировку:
Часто бывает так, что мы привыкли видеть свойство Заполнение в конкретном месте экрана (например, в верхней части). Если случайно переключить сортировку на алфавитную, свойство переместится на букву «З» (Заполнение) и окажется в середине или конце длинного списка. Визуально нам кажется, что оно пропало, хотя оно просто сменило позицию.
Давайте переключим режим сортировки обратно на «По категориям». В этом случае свойство Заполнение обычно находится в группе, связанной с данными или макетом, и его легче обнаружить.
Раз уж мы восстановили доступ к настройке, давайте освежим в памяти, как именно работают эти режимы и чем они отличаются с точки зрения платформы. Это поможет избежать ошибок при формировании печатных форм.
Свойство Заполнение (FillType) определяет, как платформа будет интерпретировать содержимое ячейки при выводе макета в табличный документ.
Это значение по умолчанию. Всё, что мы напишем в ячейке, будет выведено на печать «как есть». Этот режим используется для заголовков колонок, статических надписей (например, «Итого:», «Руководитель:») и фиксированного текста.
В этом режиме содержимое ячейки воспринимается системой как имя переменной. В макете такой текст отображается в угловых скобках, например <Контрагент>.
При программном заполнении макета мы обязаны передать значение в этот параметр. Рассмотрим пример кода, который заполняет такую ячейку:
// Получаем область макета
ОбластьМакета = Макет.ПолучитьОбласть("Строка");
// Заполняем параметр. Обратите внимание: имя свойства Параметры
// совпадает с именем, которое мы указали в ячейке макета (без скобок)
ОбластьМакета.Параметры.Контрагент = Выборка.КонтрагентНаименование;
// Выводим область в итоговый документ
ТабДок.Вывести(ОбластьМакета);
Это наиболее гибкий режим. Он позволяет комбинировать произвольный статический текст и параметры. Параметры в шаблоне выделяются квадратными скобками [...].
Пример использования в ячейке: Счет № [НомерДокумента] от [ДатаДокумента].
Платформа автоматически найдет подстроки в квадратных скобках и попытается заменить их на значения параметров с соответствующими именами.
ОбластьМакета = Макет.ПолучитьОбласть("Заголовок");
// Заполняем параметры шаблона
ОбластьМакета.Параметры.НомерДокумента = СсылкаНаДок.Номер;
ОбластьМакета.Параметры.ДатаДокумента = Формат(СсылкаНаДок.Дата, "ДЛФ=Д");
ТабДок.Вывести(ОбластьМакета);
Важно: Если вы используете режим «Шаблон», но забудете поставить квадратные скобки, текст не заменится. Если вы выберете режим «Текст», но напишете квадратные скобки, замена также не произойдет — скобки будут выведены как часть текста.
Бывают ситуации, когда нам нужно изменить тип заполнения ячейки не в конфигураторе, а динамически, прямо во время выполнения кода. Например, в зависимости от условия одна и та же ячейка должна быть то статическим текстом, то параметром.
Для этого мы можем обратиться к свойству ТипЗаполнения объекта ОбластьЯчеекТабличногоДокумента. Значение этого свойства задается через системное перечисление ТипЗаполненияОбластиТабличногоДокумента.
Рассмотрим пример, где мы программно меняем тип ячейки:
// Получаем область ячейки R1C1 (первая строка, первая колонка)
Область = ТабДок.Область("R1C1");
Если НуженПараметр Тогда
// Устанавливаем режим "Параметр"
Область.ТипЗаполнения = ТипЗаполненияОбластиТабличногоДокумента.Параметр;
// Задаем имя параметра (содержимое ячейки)
Область.Текст = "СуммаДокумента";
// Устанавливаем значение
Область.Параметры.СуммаДокумента = 1000;
Иначе
// Устанавливаем режим "Текст"
Область.ТипЗаполнения = ТипЗаполненияОбластиТабличногоДокумента.Текст;
Область.Текст = "Данные отсутствуют";
КонецЕсли;
Если вы не можете найти привычные настройки ячейки макета (Параметр, Шаблон), не стоит паниковать или переустанавливать платформу. Давайте действовать последовательно:
Этот простой нюанс интерфейса конфигуратора часто забывается, но, зная о нем, вы сэкономите время при разработке отчетов и печатных форм. Для практической реализации печатных механизмов можно использовать пример построения внешней печатной формы на БСП.