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

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

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

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

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

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

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

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

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

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

Как зафиксировать шапку программно

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

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

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

Для отчётов на СКД, где результат выводится в поле табличного документа формы, код выглядит так: после формирования отчёта обратитесь к реквизиту, связанному с полем, и установите фиксацию. Например: РезультатОтчета.ФиксацияСверху = 4; — если шапка отчёта вместе с заголовком занимает четыре строки.

Как зафиксировать шапку через макет и настройки формы

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

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

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

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

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

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

Как проверить, что фиксация работает

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

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

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

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

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

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

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

Шапка уходит за пределы экрана вместе с данными

Высота закреплённой области
Норма

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

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

В закреплённой зоне остались строки с данными

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

Фиксация сохраняется после пересчёта

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

После изменения настроек фиксация пропадает

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

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

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

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

Когда фиксация не поможет: альтернативы

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

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

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

ФиксацияСверху табличного документа

Подходит для отчётов и печатных форм при просмотре на экране; не работает при печати и не переносится в Excel

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

Решает задачу шапки на каждой странице бумажного документа; на экранную прокрутку не влияет

Таблица формы / динамический список

Шапка закреплена всегда, есть сортировка и отборы; требует другой архитектуры решения

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

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

Да, свойство ФиксацияСверху поддерживается во всех клиентских приложениях платформы 1С:Предприятие 8, включая тонкий и веб-клиент. Отличий в поведении при прокрутке между клиентами нет.

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

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

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

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

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

Нет, при сохранении в формат Excel закрепление областей не переносится. Если файл будет просматриваться в Excel, закрепите области вручную средствами Excel или сформируйте файл через COM-объект с соответствующей настройкой.

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

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

Итог

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

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