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

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

Как закрепить область в макете 1С

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

Закрепление области в табличном документе 1С нужно, чтобы шапка отчёта или первые колонки оставались на экране при прокрутке. Это аналог «закрепить области» в Excel, только настройка выполняется либо интерактивно в конфигураторе (в редакторе макета), либо программно — через свойства объекта «ТабличныйДокумент».

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

Ниже разобраны оба способа — интерактивный и программный, комбинации фиксации строк и колонок, а также типичные ошибки, из-за которых закрепление «не срабатывает».

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

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

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

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

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

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

Порядок действий в конфигураторе
  1. 1
    Откройте макет табличного документа
  2. 2
    Поставьте курсор в ячейку ниже и правее закрепляемой области
  3. 3
    Выберите меню «Таблица → Вид → Зафиксировать таблицу»
  4. 4
    Сохраните макет и обновите конфигурацию
  5. 5
    Откройте печатную форму в режиме предприятия и проверьте прокрутку

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

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

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

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

Макет = ПолучитьМакет("МакетОтчета");

ОбластьШапка = Макет.ПолучитьОбласть("Шапка");

ТабДок.Вывести(ОбластьШапка);

// ... вывод остальных областей ...

// Закрепить первые 3 строки и 2 колонки

ТабДок.ФиксацияСверху = 3;

ТабДок.ФиксацияСлева = 2;

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

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

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

Фиксация строк и колонок одновременно

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

Сравнение вариантов фиксации

Только ФиксацияСверху

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

Только ФиксацияСлева

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

Оба свойства

Для больших реестров. Минус: на маленьких экранах закреплённая область съедает заметную часть видимого пространства.

Фиксация и печать: в чём разница

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

Программно это выглядит так:

// Повторять строки 1-3 на каждой странице при печати

ТабДок.ПовторятьПриПечатиСтроки = ТабДок.Область(1, , 3, );

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

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

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

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

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

Шапка остаётся сверху, данные прокручиваются под ней

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

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

Прокрутка вправо
Норма

Левые колонки неподвижны

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

Колонки уходят влево — ФиксацияСлева равна 0 или неверному значению

Граница фиксации
Норма

Видна утолщённая линия после закреплённой области

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

Линии нет — свойство не применилось

Предпросмотр печати
Норма

Шапка на каждой странице (если задан повтор при печати)

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

Шапка только на первой странице — настроена только экранная фиксация

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

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

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

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

Итог

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

Закрепление области в макете 1С делается через меню «Таблица → Вид → Зафиксировать таблицу» в конфигураторе или свойствами ФиксацияСверху и ФиксацияСлева программно. Значения задаются количеством строк и колонок от краёв документа. На печать фиксация не влияет — для повтора шапки на страницах используйте ПовторятьПриПечатиСтроки.

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

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

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

Почему фиксация, заданная в макете, не работает в отчёте?

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

Как закрепить только шапку, если заголовок отчёта закреплять не нужно?

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

Работает ли фиксация в табличном документе, сохранённом в Excel?

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

Как программно снять фиксацию?

Присвойте свойствам нулевые значения: ТабДок.ФиксацияСверху = 0 и ТабДок.ФиксацияСлева = 0. Это полностью отключает закрепление без перестроения документа.