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