К статье
Практический материал

Отчеты и Аналитика · 10 мин

Как зафиксировать шапку таблицы в 1С

Как зафиксировать шапку таблицы в 1С: настройка фиксации строк и колонок в табличном документе, отчётах СКД и программно. Проверка результата и частые ошибки.

При работе с большими таблицами в 1С — отчётами, макетами печатных форм, табличными документами — шапка с названиями колонок уходит за пределы экрана при прокрутке. Пользователь теряет контекст: непонятно, какая цифра к какой колонке относится. Решение — зафиксировать шапку, чтобы она оставалась на месте при вертикальной и горизонтальной прокрутке.

В 1С для этого существует свойство табличного документа «Фиксация сверху» и «Фиксация слева», а также отдельные механизмы в отчётах на СКД и в динамических списках. Способ зависит от того, где именно нужна зафиксированная шапка: в печатной форме, в отчёте, сформированном пользователем, или в программно создаваемом табличном документе.

Есть два основных сценария: интерактивный — когда пользователь сам включает фиксацию в уже сформированном документе, и программный — когда разработчик задаёт фиксацию в коде или в настройках отчёта. Оба рассмотрим ниже с конкретными действиями и проверкой результата.

Где в 1С вообще нужна фиксация шапки

Фиксация шапки актуальна в трёх типичных местах. Первое — табличный документ, открытый пользователем: сформированный отчёт, макет печатной формы, универсальные отчёты. Второе — отчёты, построенные на системе компоновки данных (СКД), где фиксацию можно задать в настройках варианта отчёта. Третье — программно формируемые табличные документы, которые создаются в модуле объекта или обработки.

Важно различать табличный документ и табличное поле формы. Табличное поле (список документов, табличная часть) имеет собственную шапку, которая в управляемых формах обычно уже закреплена платформой — вмешательство не требуется. Проблема «уезжающей шапки» возникает именно с табличными документами и отчётами.

Как зафиксировать шапку в уже сформированном документе

Если отчёт или табличный документ уже открыт на экране, фиксацию можно включить без изменения кода и настроек. Порядок действий зависит от интерфейса — обычного или такси, но суть одна: через главное меню табличного документа.

В интерфейсе «Такси» откройте табличный документ, затем перейдите в главное меню (кнопка со стрелкой в левом верхнем углу окна или меню «Ещё» табличного документа) и найдите пункт «Таблица — Вид — Фиксировать таблицу». В обычном интерфейсе путь аналогичен: меню «Таблица — Вид — Фиксировать таблицу». После включения пункта появится диалог, где указывается количество фиксируемых строк сверху и колонок слева.

Порядок действий в готовом документе
  1. 1
    Сформируйте отчёт или откройте табличный документ
  2. 2
    Откройте меню «Таблица — Вид — Фиксировать таблицу»
  3. 3
    Укажите число строк сверху (обычно 1–3 — высота шапки) и колонок слева при необходимости
  4. 4
    Подтвердите выбор и прокрутите таблицу вниз — шапка должна остаться на месте

Число строк нужно указывать точно по высоте шапки. Если шапка занимает две строки (например, объединённые заголовки групп колонок и их подзаголовки), а вы зафиксируете одну — вторая строка шапки уедет при прокрутке. Если зафиксируете лишнюю строку — наверху «зависнет» первая строка данных.

Программная фиксация через свойства табличного документа

Когда табличный документ формируется программно, фиксацию задают двумя свойствами: ФиксацияСверху и ФиксацияСлева. Оба принимают целое число — количество строк или колонок, которые останутся неподвижными. Свойства устанавливаются после вывода областей в документ, но до его показа пользователю.

ТабДок = Новый ТабличныйДокумент;

// ... вывод областей макета ...

ТабДок.ФиксацияСверху = 2; // шапка из двух строк

ТабДок.ФиксацияСлева = 1; // первая колонка (например, номенклатура) закреплена

Удобный приём — не задавать число вручную, а использовать высоту готовой области шапки: ТабДок.ФиксацияСверху = ТабДок.ВысотаШапки не существует как отдельного свойства, поэтому высоту считают по макету: количество строк в областях, которые выводятся как шапка до начала данных. Если шапка собирается из нескольких областей макета, сложите их высоту в строках.

Фиксация шапки в отчётах на СКД

В отчётах, построенных на системе компоновки данных, фиксацию обычно задают в настройках варианта отчёта, а не в коде. Откройте настройки отчёта (кнопка «Настройки» или «Изменить вариант»), перейдите в расширенный режим настроек и найдите параметры вывода. Среди них есть параметр «Фиксировать шапку» (в ряде версий — «Фиксация шапки»), который включает закрепление заголовков колонок.

Для разработчика, настраивающего отчёт в конфигураторе, путь такой: открыть схему компоновки данных, перейти на закладку «Настройки», выбрать вариант и в параметрах вывода установить нужные значения фиксации. Также доступна фиксация группировок — заголовки групп остаются видимыми при прокрутке их содержимого.

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

Если отчёт уже сформирован и шапка не зафиксирована, пользователю быстрее включить фиксацию вручную через меню табличного документа, чем перенастраивать вариант отчёта. Но для постоянной работы лучше один раз настроить фиксацию в варианте — она сохранится и будет применяться при каждом формировании.
ПЗ
Практическое замечание

Фиксация колонок слева и шапки одновременно

В широких таблицах — например, оборотно-сальдовых ведомостях с аналитикой или план-фактных отчётах — проблема не только в вертикальной прокрутке, но и в горизонтальной: при движении вправо теряется первая колонка с наименованием строки. Для этого случая комбинируют фиксацию сверху и слева.

Программно это выглядит как одновременная установка ФиксацияСверху и ФиксацияСлева. Интерактивно — в том же диалоге «Фиксировать таблицу» указываются оба значения. Точка пересечения зафиксированных областей (левый верхний угол) остаётся полностью неподвижной.

Не увлекайтесь количеством зафиксированных областей: если закрепить слишком много строк и колонок, на экране останется мало места для самих данных, особенно на мониторах с небольшим разрешением. Практический ориентир — фиксировать только то, без чего теряется смысл данных: заголовки колонок и одну-две ключевые колонки идентификации строки.

Контрольные точки

Как проверить результат

Прокрутка вниз
Норма

Шапка остаётся на месте, данные движутся под ней

Тревожный признак

Шапка уходит вверх вместе с данными — фиксация не включена или число строк неверное

Прокрутка вправо
Норма

Первые колонки неподвижны

Тревожный признак

Левая колонка уезжает — не задана ФиксацияСлева

Граница фиксации
Норма

Под шапкой сразу начинаются данные

Тревожный признак

Зафиксирована лишняя строка данных или часть шапки прокручивается

Частые ошибки и ограничения

Самая распространённая ошибка — неверное число фиксируемых строк. Она возникает из-за того, что шапка визуально выглядит как одна строка, но фактически состоит из нескольких строк табличного документа (объединённые ячейки, многоуровневые заголовки). Проверяется просто: щёлкните по строкам шапки и посмотрите номера строк в адресной строке табличного документа.

Вторая типичная ситуация — фиксация «слетаает» после перепроведения или переформирования отчёта. Это нормально: интерактивная фиксация действует только на текущий экземпляр документа. Чтобы настройка сохранялась, её нужно задать в варианте отчёта или в коде формирования.

Типичные ошибки
01
Фиксация одной строки при многоуровневой шапке — нижние уровни заголовков уезжают при прокрутке
02
Ожидание, что фиксация сохранится после переформирования отчёта — интерактивная настройка действует только на текущий документ
03
Попытка применить ФиксацияСверху к табличному полю формы — свойство работает только с табличным документом
04
Путаница между фиксацией на экране и повторением шапки при печати — это разные механизмы

Отдельное ограничение касается веб-клиента и тонкого клиента: поведение фиксации там в целом совпадает с толстым клиентом, но при очень больших таблицах прокрутка с фиксированными областями может работать медленнее. Это ограничение платформы, а не ошибка настройки.

Что делать, если фиксация не работает

Если после установки свойств шапка всё равно прокручивается, проверьте несколько моментов. Первый — свойства установлены у того же объекта табличного документа, который выводится пользователю, а не у промежуточного. Второй — свойства заданы после формирования документа, а не до: некоторые операции вывода областей могут сбрасывать настройки вида.

Третий момент — отчёт выводится не в табличный документ, а в элемент формы другого типа или через альтернативный механизм вывода. В этом случае настройки фиксации табличного документа могут игнорироваться, и нужно смотреть свойства конкретного элемента формы.

Маршрут решения

Как выбрать способ

Нужно разово закрепить шапку в уже открытом отчётеИспользуйте меню «Таблица — Вид — Фиксировать таблицу»
Отчёт используется постоянно и должен открываться с закреплённой шапкойНастройте фиксацию в параметрах вывода варианта отчёта СКД
Табличный документ формируется из кодаУстановите свойства ФиксацияСверху и ФиксацияСлева после вывода областей
Шапка должна повторяться на каждой странице при печатиИспользуйте ПовторятьПриПечатиСтроки, а не фиксацию
Итог

Что важно запомнить

Шапка табличного документа фиксируется интерактивно через меню «Таблица — Вид — Фиксировать таблицу» или программно свойствами ФиксацияСверху и ФиксацияСлева. В отчётах СКД используйте параметры вывода варианта. Число строк должно точно совпадать с высотой шапки, а для печати применяется отдельный механизм повтора строк.

Частые вопросы

Сохраняется ли фиксация шапки после переформирования отчёта?

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

Как зафиксировать шапку в табличной части документа?

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

Почему зафиксированная шапка не повторяется при печати?

Фиксация сверху работает только на экране. Для печати используется свойство табличного документа ПовторятьПриПечатиСтроки, где указывается диапазон строк шапки, который будет выводиться на каждой странице.

Как узнать, сколько строк занимает шапка?

Щёлкните по последней строке шапки в табличном документе и посмотрите её номер в адресной строке или в левой области нумерации строк. Этот номер и есть значение для фиксации сверху.

Можно ли зафиксировать шапку в динамическом списке?

Динамический список выводится табличным полем формы, шапка которого в управляемом интерфейсе закреплена автоматически. Отдельной настройки фиксации для динамических списков не предусмотрено.

Работает ли фиксация в веб-клиенте 1С?

Да, свойства ФиксацияСверху и ФиксацияСлева поддерживаются в веб-клиенте. При очень больших таблицах прокрутка с фиксированными областями может быть медленнее — это особенность платформы, а не ошибка настройки.