Разработка и Конфигурация · 10 мин
Как зафиксировать шапку в макете 1С
Как зафиксировать шапку таблицы в макете 1С: свойство ФиксацияСверху, программная настройка, типичные ошибки и проверка результата при прокрутке.
Зафиксированная шапка в макете 1С нужна, чтобы при прокрутке длинного табличного документа заголовки колонок оставались на экране. Это особенно актуально для отчётов, печатных форм и актов сверки, где строки уходят на несколько страниц, а пользователь должен видеть, какая колонка что означает. Платформа 1С:Предприятие поддерживает такую фиксацию штатными средствами — без внешних компонент и доработок ядра.
Фиксация работает на уровне табличного документа: у объекта есть свойства, определяющие, сколько строк сверху и сколько колонок слева остаются неподвижными при прокрутке. Настроить их можно как в конфигураторе при редактировании макета, так и программно — из кода на встроенном языке. Оба подхода дают одинаковый результат, различается только момент применения настройки.
Важно понимать ограничение: фиксация действует только при интерактивном просмотре табличного документа на экране. При печати шапка «отлепляется», и если нужно повторять заголовки на каждой странице бумажного документа, используется другой механизм — сквозные строки и колонки. Эти два сценария часто путают, поэтому ниже они разобраны отдельно.
Что такое фиксация шапки и когда она нужна
Фиксация — это режим отображения табличного документа, при котором указанное количество верхних строк и левых колонок остаётся на месте, пока пользователь прокручивает остальное содержимое. Механизм аналогичен закреплению областей в Excel, но настраивается разработчиком, а не конечным пользователем.
Типичные ситуации, где фиксация оправдана: длинные отчёты с многоуровневой шапкой, реестры документов, прайс-листы с десятками колонок, табличные документы, выводимые на форму для просмотра перед печатью. Если строк в документе меньше одного экрана, фиксация не нужна — она ничего не меняет визуально.
Отдельный случай — многострочная шапка. Например, первая строка содержит название отчёта, вторая — период, третья и четвёртая — заголовки колонок. В свойство фиксации записывается номер последней строки закрепляемой области, то есть все строки от первой до указанной будут закреплены целиком, выборочно зафиксировать только третью строку нельзя.
Как зафиксировать шапку в конфигураторе через свойства макета
Самый простой способ — задать фиксацию непосредственно в макете, чтобы она применялась всегда при выводе этого макета. Откройте нужный макет (общий макет или макет объекта) типа «Табличный документ» в конфигураторе.
Далее откройте палитру свойств табличного документа: правый клик по области макета → «Свойства», либо меню «Таблица» → «Свойства». В списке найдите свойства «Фиксация сверху» и «Фиксация слева». В поле «Фиксация сверху» укажите номер последней строки шапки — например, если шапка занимает три строки, введите 3. Сохраните конфигурацию.
- 1Откройте макет типа «Табличный документ»
- 2Откройте палитру свойств табличного документа
- 3Найдите свойство «Фиксация сверху»
- 4Укажите номер последней строки шапки
- 5При необходимости задайте «Фиксация слева» для колонок
- 6Сохраните конфигурацию и проверьте в режиме предприятия
После этого любой табличный документ, сформированный по этому макету с сохранением свойств, будет открываться с закреплённой шапкой. Учтите нюанс: если документ выводится программно через новый объект «ТабличныйДокумент», а макет используется только как источник областей, свойства фиксации из макета в результирующий документ не переносятся автоматически — их нужно задать в коде.
Программная установка фиксации из кода
Когда табличный документ формируется динамически, удобнее задавать фиксацию в коде после заполнения документа. Синтаксис простой: присвойте свойству число — номер последней закрепляемой строки.
ТабДок = Новый ТабличныйДокумент;
// ... вывод областей макета ...
ТабДок.ФиксацияСверху = 4; // закрепить первые 4 строки
ТабДок.ФиксацияСлева = 2; // закрепить первые 2 колонкиЗначение 0 снимает фиксацию. Если шапка выводится из макета и её высота известна заранее, число можно зашить константой. Если высота шапки переменная — например, количество строк заголовка зависит от настроек отчёта — вычислите её в момент формирования: запомните номер строки перед началом вывода данных и используйте его для фиксации.
Для отчётов на СКД фиксация результата обычно уже предусмотрена типовым механизмом вывода: платформа сама закрепляет шапку таблицы результата. Если этого не происходит, проверьте, не выводится ли результат в табличный документ вручную через процессор вывода — тогда фиксацию нужно добавить кодом после завершения вывода.
Фиксация шапки при печати: сквозные строки
Частая задача, которую ошибочно пытаются решить фиксацией, — повторение заголовков таблицы на каждой печатной странице. Для этого в табличном документе есть отдельное свойство «ПовторятьПриПечатиСтроки» (в палитре свойств — «Сквозные строки»), где указывается диапазон строк, повторяемых на каждом листе.
Задать его можно в конфигураторе через свойства табличного документа или программно. Например, если шапка занимает строки с 5 по 7, указывается диапазон «5:7». Аналогично работают сквозные колонки для широких документов, разбиваемых по горизонтали.
Сравнение вариантов
Закрепляет шапку на экране при прокрутке. Не влияет на печать и экспорт в файл.
Повторяют шапку на каждой странице при печати. Не влияют на прокрутку на экране.
Решает другую задачу — сворачивание областей, шапку не закрепляет.
Практический подход: если документ и просматривают на экране, и печатают, настраивайте оба механизма одновременно. Это не конфликтует — свойства независимы друг от друга.
Как проверить результат и типичные ошибки
Проверка выполняется в режиме 1С:Предприятие. Сформируйте документ или отчёт с достаточным количеством строк, чтобы появилась полоса прокрутки, и прокрутите содержимое вниз. Закреплённые строки должны остаться наверху, а между шапкой и прокручиваемой областью обычно отображается визуальный разделитель.
Как проверить результат
Шапка остаётся на месте, данные прокручиваются под ней
Шапка уходит вверх вместе с данными — фиксация не применилась
Заголовки повторяются на каждой странице (если заданы сквозные строки)
Заголовки только на первой странице — сквозные строки не настроены
Документ открывается и читается
Ожидалась закреплённая шапка в Excel-файле — фиксация 1С в файл не экспортируется
Ещё одна тонкость: если шапка содержит объединённые ячейки, выходящие за границу фиксируемой области (объединение пересекает границу между закреплённой и прокручиваемой частью), отображение может работать некорректно. Проектируйте макет так, чтобы объединения не пересекали линию фиксации.
Ограничения и альтернативные подходы
Фиксация табличного документа не экспортируется в файлы. Если документ сохраняется в Excel и пользователь ждёт закреплённую шапку там, потребуется либо закрепить области вручную в Excel, либо формировать файл программно с установкой соответствующих настроек через COM-объект или формат OpenXML — это уже за пределами штатного табличного документа.
Если данные выводятся не табличным документом, а динамическим списком или таблицей значений на форме, фиксация шапки не нужна вовсе: заголовки колонок этих элементов закреплены по умолчанию. Там актуальна другая настройка — фиксация левых колонок таблицы формы через свойство «ФиксацияСлева» у элемента формы.
Как выбрать действие
Что важно запомнить
Шапка на экране закрепляется свойством ФиксацияСверху (номер последней строки шапки), на печати — сквозными строками. Свойство задаётся в макете или программно, но не переносится в новый программно созданный документ и не экспортируется в файлы. Проверяйте результат прокруткой в режиме предприятия.
Частые вопросы
Можно ли зафиксировать не с первой строки, а произвольную область?
Нет. Фиксация всегда начинается от первой строки документа до указанного номера. Если над шапкой есть «шапка документа» (название, период), она тоже попадёт в закреплённую область. Выход — пересмотреть структуру макета или смириться с закреплением всего верхнего блока.
Почему фиксация, заданная в макете, не сработала в отчёте?
Наиболее вероятная причина — результат формируется в новый объект ТабличныйДокумент, куда области макета выводятся методом Вывести. Свойства фиксации при этом не копируются. Добавьте в код после формирования строку вида ТабДок.ФиксацияСверху = N.
Как зафиксировать и шапку, и первые колонки одновременно?
Задайте оба свойства: ФиксацияСверху для строк и ФиксацияСлева для колонок. Они работают независимо и комбинируются — закреплённая область в левом верхнем углу останется неподвижной при прокрутке в любом направлении.
Работает ли фиксация в веб-клиенте и тонком клиенте?
Да, фиксация табличного документа поддерживается во всех клиентских приложениях платформы. Отличия возможны только в мелочах отрисовки разделителя закреплённой области, на функциональность это не влияет.
Как убрать фиксацию, если она мешает?
Присвойте свойству значение 0: ТабДок.ФиксацияСверху = 0. Если фиксация задана в макете, очистите соответствующее поле в палитре свойств табличного документа и сохраните конфигурацию.
Влияет ли фиксация на производительность больших документов?
Заметного влияния нет — это настройка отображения, а не пересчёт данных. Производительность больших табличных документов зависит от объёма выводимых ячеек, а не от закрепления строк.