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

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

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

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

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

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

Где в 1С доступна фиксация и когда она нужна

Фиксация работает с объектом «Табличный документ» — это отчёты, выведенные в табличный документ, печатные формы, произвольные табличные документы на формах. Команда недоступна для динамических списков и табличных частей документов: там закрепление шапки встроено в сам элемент формы и настраивается иначе.

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

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

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

Это самый быстрый способ, доступный любому пользователю без прав разработчика. Откройте сформированный отчёт или табличный документ и поставьте курсор на строку, которая должна стать первой прокручиваемой — то есть на строку сразу под шапкой. Если шапка занимает строки 1–3, установите курсор в строку 4.

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

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

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

Как зафиксировать шапку программно через ФиксацияСверху

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

Типовой пример для печатной формы или отчёта, формируемого в табличный документ:

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

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

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

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

Если табличный документ выводится в элемент формы (поле табличного документа), свойство задаётся через реквизит формы: Результат.ФиксацияСверху = 3;, где Результат — реквизит формы типа «ТабличныйДокумент». Устанавливать фиксацию нужно при каждом формировании, потому что перезаполнение реквизита сбрасывает настройку.

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

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

Сложность в том, что высота шапки отчёта на СКД зависит от настроек: количества группировок, выведенных заголовков, параметров. Универсальный подход — вычислять строку окончания шапки программно, например по именованной области или по первой строке данных, и подставлять её в свойство. Жёсткое число подходит только для отчётов со стабильной структурой шапки.

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

Для отчётов с изменчивой шапкой надёжнее всего пометить последнюю строку заголовка в макете или искать в результате первую строку, где начинаются данные группировки. Это избавляет от пересчёта числа строк при каждом изменении структуры отчёта.
ПЗ
Практическое замечание

Как проверить результат и устранить проблемы

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

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

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

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

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

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

Шапка остаётся наверху, видна разделительная линия

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

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

Полнота шапки
Норма

Все строки заголовков закреплены

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

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

Печать документа
Норма

Документ печатается целиком, шапка повторяется при настройке сквозных строк

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

Ожидалось повторение шапки на каждой странице, но задана только экранная фиксация

Типичные ошибки и ограничения

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

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

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

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

Какой способ выбрать в вашей ситуации

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

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

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

Как выбрать действие

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

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

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

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

Почему команда «Зафиксировать табличный документ» неактивна?

Команда недоступна, если окно не содержит табличного документа (например, отчёт выведен в другом формате), документ открыт в режиме только для чтения без возможности изменения представления, или фиксация управляется программно. Проверьте, что перед вами именно табличный документ, и попробуйте установить курсор в область данных.

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

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

Сохранится ли фиксация после закрытия отчёта?

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

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

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

Можно ли зафиксировать и строки, и колонки одновременно?

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

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

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