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

· 9 мин

Содержание

Отчёт на 400 строк, шапка уехала за верхний край, и уже на третьем экране не понятно, какая колонка «Сумма», а какая «Остаток». Лечится закреплением области. В 1С оно есть у табличного документа: ячейки выше и левее выбранной остаются на месте, остальное прокручивается.

Быстрый рецепт: выделите ячейку сразу под шапкой и справа от закрепляемых колонок, затем включите закрепление в меню «Таблица» редактора табличного документа. Ниже — подробности для макета, готового отчёта, веб-клиента и кода.

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

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

Правило выбора ячейки одно, и на нём чаще всего ошибаются:

  • закрепляется всё, что находится выше выделенной ячейки;
  • закрепляется всё, что находится левее выделенной ячейки;
  • сама ячейка и всё правее и ниже остаются в прокручиваемой части.

Примеры:

Что нужноКакую ячейку выделить
Только верхняя строкаA2
Первые три строки (шапка в две строки плюс подзаголовок)A4
Только первую колонкуB1
Шапку из двух строк и первые две колонкиC3

Если выделить ячейку A1, закреплять нечего: выше и левее ничего нет.

Закрепление не зависит от объединённых ячеек и скрытых строк, но заметно усложняется, если шапка очень высокая. Когда зафиксированная часть занимает больше половины экрана, остаётся мало места на данные. Держите шапку в 1–3 строки.

Что проверить перед закреплением

Закрепление проще включить с первого раза, если подготовить таблицу заранее.

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

Закрепление области в макете и пользовательском табличном документе

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

Пошагово в редакторе таблицы

  1. Откройте табличный документ в режиме редактирования: макет в Конфигураторе или сохранённый файл в клиенте.
  2. Выделите ячейку по правилу из таблицы выше.
  3. В меню «Таблица» найдите пункт, который закрепляет область (он находится рядом с командами, управляющими отображением сетки и заголовков).
  4. Прокрутите документ вниз и вправо и убедитесь, что шапка и колонки остаются на месте.
  5. Сохраните макет. Без сохранения при следующем открытии закрепление пропадёт.

Закрепление в готовом отчёте

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

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

Закрепление в сохранённом макете меняет конфигурацию. Менять макеты типовой конфигурации на поддержке нельзя без снятия с поддержки; безопаснее сделать копию макета в расширении или собственную обработку.

Отдельный случай: списки, журналы и табличные части

Здесь стоит развести два понятия, потому что запрос «закрепить область» часто относят и к ним.

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

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

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

Работа с макетами в Конфигураторе

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

Нюансы:

  • Закрепление макета действует только в редакторе и не переносится в печатную форму. Когда пользователь печатает документ, лист получает собственную нумерацию и разбивку на страницы; фиксации на бумаге нет.
  • Если макет используется для вывода на экран (например, отчёт в форме), положение закрепления вступит в силу в поле табличного документа. Проверяйте на живой форме, а не только в Конфигураторе.
  • При копировании макета закрепление копируется вместе с ним.

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

Особенности тонкого клиента и веб-клиента

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

В веб-клиенте поведение то же, но есть оговорки:

  • Закрепление зависит от браузера и размера окна. На узком экране или при масштабе страницы 150% и выше фиксированная область может занимать почти всю высоту.
  • При очень больших таблицах (десятки тысяч строк) прокрутка с закреплением работает медленнее, чем в тонком клиенте.
  • Пункты меню редактирования табличного документа в веб-клиенте могут быть урезаны. Если нужный пункт не находится, откройте документ в тонком клиенте.
КлиентЗакрепление макетаЗакрепление отчёта кодом
Тонкий клиентРаботаетРаботает
Веб-клиентРаботает, зависит от браузераРаботает
КонфигураторРаботает в редактореНе применимо

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

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

Пример: закрепить две верхние строки и первую колонку после вывода данных.

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

// ... вывод шапки и данных в ТабДок ...

ТабДок.ФиксацияСверху = 2; // две верхние строки
ТабДок.ФиксацияСлева  = 1; // одна левая колонка

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

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

Шапка = Макет.ПолучитьОбласть("Шапка");
ТабДок.Вывести(Шапка);
СтрокЗафиксировать = ТабДок.ВысотаТаблицы;

// ... вывод строк данных ...

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

Чтобы снять закрепление, запишите ноль:

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

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

Типовые задачи и как их решать закреплением

Три ситуации из практики, где фиксация экономит время.

Оборотно-сальдовая ведомость на сотни строк

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

Сверка двух таблиц рядом

Сопоставляете выгрузку из банка с данными учёта. В обеих нужна неподвижная колонка с номером или датой, чтобы по строкам было видно, что к чему. Закрепите первую колонку, прокручивайте суммы вправо, и строка всегда подписана.

Широкая таблица с помесячной раскладкой

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

ЗадачаВерхние строкиЛевые колонки
Ведомость с двухуровневой шапкой21 (счёт или наименование)
Сверка двух выгрузок11 (номер или дата)
Помесячная раскладка11
Длинный реестр без широких колонок10

Если колонок мало и они помещаются на экран, левое закрепление только мешает: оно съедает ширину. Фиксируйте колонки только когда таблица реально не помещается по горизонтали.

Закрепление шапки в отчёте, который формируется кодом

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

Порядок такой:

  1. Выведите шапку и запомните, сколько строк она заняла.
  2. Выведите данные и итоги.
  3. Запишите запомненное число в ФиксацияСверху результата.
  4. Если нужна неподвижная колонка с наименованием, задайте ФиксацияСлева.

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

Ориентир по объёму: шапка до трёх строк и до двух закреплённых колонок оставляют на экране 80-90% полезной площади на мониторе 1080p. Если шапка выше, подумайте о том, чтобы убрать вторичные строки или перенести их в заголовок отчёта над таблицей.

Если закрепление не работает

Несколько ситуаций, когда пользователи жалуются, что «ничего не фиксируется».

  • ❌ Выделена ячейка A1. Закреплять нечего. Выделите ячейку ниже шапки и правее нужных колонок.
  • ❌ Закрепили, но не сохранили макет. При следующем открытии оно исчезло. В Конфигураторе сохраните макет и саму конфигурацию.
  • ❌ Отчёт перестроили. Закрепление в результате отчёта не переживает повторное формирование. Для постоянной фиксации нужен код или собственный макет.
  • ❌ Закрепили слишком много. Если зафиксированная часть больше видимого окна, прокручиваемая часть исчезает. Уменьшите область или увеличьте окно.
  • ❌ Режим «только просмотр» у документа. Меню редактирования недоступно, закрепление не включить; откройте копию для правки.
Диагностика: выберите симптом

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

Можно ли закрепить только столбец без строк?
Да. Выделите ячейку в первой строке, справа от нужных колонок (например, B1), и включите закрепление: зафиксируются только колонки слева.
Сохраняется ли закрепление при выгрузке в Excel?
Не рассчитывайте на это. Параметры отображения табличного документа и листа Excel не совпадают. После выгрузки закрепите область в Excel стандартными средствами.
Закрепится ли шапка при печати на нескольких листах?
Нет, это разные механизмы. Закрепление работает только на экране, а повторение строк на каждой странице печати задаётся отдельно, через настройки печатной формы.
Что делать, если закрепление не переносится в расширение конфигурации?
Закрепление хранится внутри макета. Скопируйте макет целиком вместе с настройками либо задайте фиксацию кодом после вывода таблицы.
Как снять закрепление быстро?
Выделите любую ячейку и вызовите в меню «Таблица» ту же команду закрепления: она применяется заново и снимает текущую фиксацию. В коде запишите ноль в оба свойства.