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

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

Как закрепить шапку в отчете 1С

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

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

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

Что такое фиксация шапки и когда она нужна

Фиксация (закрепление) — это свойство табличного документа, при котором указанное количество строк сверху и/или колонок слева остается видимым при прокрутке остальной области. В 1С оно реализовано двумя параметрами: «ФиксацияСверху» (число закрепленных строк) и «ФиксацияСлева» (число закрепленных колонок).

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

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

Как закрепить шапку в уже сформированном отчете без программирования

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

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

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

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

Как задать фиксацию в макете табличного документа

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

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

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

Как закрепить шапку программно

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

1c
ТабДок = Новый ТабличныйДокумент;
// ... вывод областей отчета ...
ТабДок.ФиксацияСверху = 2; // закрепить две верхние строки
ТабДок.ФиксацияСлева = 1;  // закрепить первую колонку

Если количество строк шапки заранее неизвестно (например, заголовок формируется из нескольких секций), запомните номер последней строки шапки в переменной при выводе и используйте его: ТабДок.ФиксацияСверху = НомерСтрокиШапки;. Такой прием исключает ошибки при изменении структуры заголовка.

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

Особенности фиксации в отчетах на СКД

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

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

Альтернатива — выводить результат СКД в таблицу значений на форме, а не в табличный документ. У элемента формы «Таблица» шапка фиксируется платформой автоматически, и дополнительных настроек не требуется. Этот вариант подходит, когда не нужна печатная форма с точным макетом.

Сравнение вариантов

Интерактивная фиксация (меню «Вид»)

Быстро, без программирования, но действует только на текущий показ и не сохраняется

Фиксация в макете

Работает всегда при формировании, но требует изменения конфигурации и не подходит для вывода по секциям

Программная установка

Максимальная гибкость, можно вычислять число строк динамически; нужен доступ к коду отчета

Вывод СКД в таблицу формы

Шапка фиксируется платформой автоматически, но теряется точный макет печатной формы

Как проверить результат и что может пойти не так

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

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

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

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

Строки шапки остаются наверху, данные прокручиваются

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

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

Число закрепленных строк
Норма

Закреплены все строки заголовка, включая объединенные

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

Часть заголовка прокручивается — указано слишком малое число строк

Печатная форма
Норма

На печати документ выглядит корректно

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

Ожидание повторения шапки на каждой странице — для этого служит другой механизм (сквозные строки)

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

Часто задаваемые вопросы

Как сделать, чтобы шапка повторялась на каждой странице при печати?

Для печати используется не фиксация, а свойство табличного документа «ПовторятьПриПечатиСтроки» (в конфигураторе — «Сквозные строки» в параметрах страницы макета). Укажите диапазон строк шапки, и они будут выводиться на каждой печатной странице. Это независимый от экранной фиксации механизм, их можно использовать одновременно.

Почему интерактивная фиксация пропадает после переформирования отчета?

Настройка через меню «Вид» применяется к текущему экземпляру табличного документа. При повторном формировании создается новый документ, и настройки просмотра сбрасываются. Чтобы фиксация действовала постоянно, задайте её в макете или программно в коде формирования отчета.

Можно ли закрепить шапку в отчете на СКД без доработки конфигурации?

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

Сколько строк указывать в «ФиксацияСверху», если заголовок многоуровневый?

Указывайте общее число строк, которое занимает весь заголовок: строку периода, строки групп колонок и строку итоговых названий. Проще всего посчитать их в сформированном отчете по номерам строк слева от табличного документа, либо запомнить номер последней строки шапки в коде при выводе.

Влияет ли фиксация на производительность больших отчетов?

Заметного влияния на скорость формирования фиксация не оказывает — это свойство отображения, а не обработки данных. Однако в очень больших табличных документах (десятки тысяч строк) сама прокрутка может быть медленной независимо от фиксации; в таких случаях лучше ограничивать объем выводимых данных отборами.

Итог

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

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