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