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