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

Разработка и Конфигурация · 9 мин

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

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

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

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

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

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

Фиксация (закрепление) — это режим отображения табличного документа, при котором верхние строки и/или левые колонки остаются на экране при вертикальной и горизонтальной прокрутке. Закреплённая область визуально отделяется тонкой линией и не прокручивается вместе с основным содержимым.

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

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

Интерактивное закрепление шапки при просмотре

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

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

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

Программное закрепление шапки при формировании документа

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

Пример: шапка занимает первые две строки документа (заголовок отчёта и строка с именами колонок). После вывода всех областей добавьте присваивание значения 2. Аналогично работает свойство ФиксацияСлева для закрепления колонок — например, первой колонки с наименованием номенклатуры.

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

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

Закрепление шапки в отчётах на СКД

Отчёты на системе компоновки данных выводятся не в «чистый» табличный документ, а через результат компоновки, и свойство ФиксацияСверху у результата компоновки недоступно напрямую. В этом случае есть два рабочих подхода.

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

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

Фиксация шапки при печати: повторяющиеся строки

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

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

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

Сравнение подходов

Интерактивная фиксация

Подходит для разового просмотра готового документа. Не сохраняется при повторном формировании отчёта.

Свойство ФиксацияСверху

Подходит для отчётов и печатных форм, формируемых кодом. Требует изменения модуля и прав на доработку.

Повторять при печати

Решает задачу заголовков на бумаге, но не влияет на отображение на экране.

Проверка результата и типичные ошибки

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

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

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

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

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

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

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

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

Повторное формирование отчёта
Норма

Фиксация сохраняется при каждом формировании

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

Фиксация пропадает — установите её в конце кода формирования

Предварительный просмотр печати
Норма

Заголовки повторяются на каждой странице

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

Заголовок только на первой странице — настройте повторяющиеся строки

FAQ

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

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

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

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

Почему пункт «Зафиксировать таблицу» неактивен в меню?

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

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

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

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

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

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

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

Итог

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

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