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