Фиксация строк и колонок в табличном документе 1С 8.3
Содержание
Отчёт на 400 строк, шапка уехала за верхний край, и уже на третьем экране не понятно, какая колонка «Сумма», а какая «Остаток». Лечится закреплением области. В 1С оно есть у табличного документа: ячейки выше и левее выбранной остаются на месте, остальное прокручивается.
Быстрый рецепт: выделите ячейку сразу под шапкой и справа от закрепляемых колонок, затем включите закрепление в меню «Таблица» редактора табличного документа. Ниже — подробности для макета, готового отчёта, веб-клиента и кода.
Как работает закрепление области
Закрепление в 1С задаётся двумя числами у табличного документа: сколько строк зафиксировано сверху и сколько колонок слева. Они хранятся вместе с документом: сохранили макет с закреплением, и при каждом открытии оно будет на месте.
Правило выбора ячейки одно, и на нём чаще всего ошибаются:
- закрепляется всё, что находится выше выделенной ячейки;
- закрепляется всё, что находится левее выделенной ячейки;
- сама ячейка и всё правее и ниже остаются в прокручиваемой части.
Примеры:
| Что нужно | Какую ячейку выделить |
|---|---|
| Только верхняя строка | A2 |
| Первые три строки (шапка в две строки плюс подзаголовок) | A4 |
| Только первую колонку | B1 |
| Шапку из двух строк и первые две колонки | C3 |
Если выделить ячейку A1, закреплять нечего: выше и левее ничего нет.
Закрепление не зависит от объединённых ячеек и скрытых строк, но заметно усложняется, если шапка очень высокая. Когда зафиксированная часть занимает больше половины экрана, остаётся мало места на данные. Держите шапку в 1–3 строки.
Что проверить перед закреплением
Закрепление проще включить с первого раза, если подготовить таблицу заранее.
- Уберите пустые строки над шапкой: каждая такая строка тоже попадёт в зафиксированную часть и съест место.
- Проверьте, что шапка действительно занимает нужные строки целиком, без «хвоста» от объединённых ячеек, уходящего ниже.
- Решите, нужна ли неподвижная колонка. Для коротких таблиц она не нужна, а для широких почти всегда полезна.
- Определите ячейку по таблице выше и только потом заходите в меню, чтобы не включать и не снимать закрепление по несколько раз.
Закрепление области в макете и пользовательском табличном документе
Табличные документы встречаются в нескольких местах: макеты печатных форм, табличные документы, которые пользователь сохраняет из отчёта, и обработки, выводящие данные в таблицу. Во всех случаях логика одинакова.
Пошагово в редакторе таблицы
- Откройте табличный документ в режиме редактирования: макет в Конфигураторе или сохранённый файл в клиенте.
- Выделите ячейку по правилу из таблицы выше.
- В меню «Таблица» найдите пункт, который закрепляет область (он находится рядом с командами, управляющими отображением сетки и заголовков).
- Прокрутите документ вниз и вправо и убедитесь, что шапка и колонки остаются на месте.
- Сохраните макет. Без сохранения при следующем открытии закрепление пропадёт.
Закрепление в готовом отчёте
Отчёт на основе системы компоновки данных формирует результат в поле табличного документа, и шапка по умолчанию не закреплена. Пользователь может зафиксировать её вручную, но после перестроения отчёта (кнопка «Сформировать») закрепление слетает: это обычное поведение, потому что результат создаётся заново.
Если отчёт нужен каждый день, разработчик задаёт фиксацию кодом после вывода результата. Пример в разделе про программное управление ниже.
Закрепление в сохранённом макете меняет конфигурацию. Менять макеты типовой конфигурации на поддержке нельзя без снятия с поддержки; безопаснее сделать копию макета в расширении или собственную обработку.
Отдельный случай: списки, журналы и табличные части
Здесь стоит развести два понятия, потому что запрос «закрепить область» часто относят и к ним.
Динамические списки и журналы документов (список контрагентов, журнал операций). В них шапка колонок остаётся видимой при прокрутке сама, закреплять её не нужно. А вот колонки слева закрепить пользователем нельзя: набор и порядок колонок настраиваются через меню формы, которое открывается кнопкой «Ещё» в командной панели списка (пункт, меняющий состав колонок).
Табличные части документов (товары в реализации, услуги в поступлении). Шапка колонок тоже всегда видна. При большом числе колонок помогает уменьшить набор видимых: скрыть второстепенные через настройку формы, а не пытаться что-то закреплять.
Если нужно именно «зафиксировать» колонку в списке для работы глазами, самый короткий путь — выгрузить список в табличный документ (команда «Вывести список » в командной панели) и закрепить область уже там, как в предыдущем разделе.
Работа с макетами в Конфигураторе
В Конфигураторе макет печатной формы или отчёта открывается в редакторе табличного документа. Закрепление здесь удобно для длинных макетов, где вы заполняете много строк и теряете из виду подписи колонок.
Нюансы:
- Закрепление макета действует только в редакторе и не переносится в печатную форму. Когда пользователь печатает документ, лист получает собственную нумерацию и разбивку на страницы; фиксации на бумаге нет.
- Если макет используется для вывода на экран (например, отчёт в форме), положение закрепления вступит в силу в поле табличного документа. Проверяйте на живой форме, а не только в Конфигураторе.
- При копировании макета закрепление копируется вместе с ним.
Чтобы повторно использовать закрепление, не нужно выделять область снова: достаточно скопировать готовый макет.
Особенности тонкого клиента и веб-клиента
В тонком клиенте табличный документ с закреплением работает так, как описано выше: фиксированная верхняя часть и левые колонки остаются при прокрутке.
В веб-клиенте поведение то же, но есть оговорки:
- Закрепление зависит от браузера и размера окна. На узком экране или при масштабе страницы 150% и выше фиксированная область может занимать почти всю высоту.
- При очень больших таблицах (десятки тысяч строк) прокрутка с закреплением работает медленнее, чем в тонком клиенте.
- Пункты меню редактирования табличного документа в веб-клиенте могут быть урезаны. Если нужный пункт не находится, откройте документ в тонком клиенте.
| Клиент | Закрепление макета | Закрепление отчёта кодом |
|---|---|---|
| Тонкий клиент | Работает | Работает |
| Веб-клиент | Работает, зависит от браузера | Работает |
| Конфигуратор | Работает в редакторе | Не применимо |
Программное закрепление области
У табличного документа два свойства: ФиксацияСверху и ФиксацияСлева. В них записывается число строк и колонок, которые нужно закрепить.
Пример: закрепить две верхние строки и первую колонку после вывода данных.
ТабДок = Новый ТабличныйДокумент;
// ... вывод шапки и данных в ТабДок ...
ТабДок.ФиксацияСверху = 2; // две верхние строки
ТабДок.ФиксацияСлева = 1; // одна левая колонка
Сначала вывод, потом фиксация: так проще убедиться, что нужное количество строк уже существует в документе.
Если шапка выводится из макета с несколькими областями, посчитайте высоту выведенной шапки и подставьте её число в ФиксацияСверху:
Шапка = Макет.ПолучитьОбласть("Шапка");
ТабДок.Вывести(Шапка);
СтрокЗафиксировать = ТабДок.ВысотаТаблицы;
// ... вывод строк данных ...
ТабДок.ФиксацияСверху = СтрокЗафиксировать;
Чтобы снять закрепление, запишите ноль:
ТабДок.ФиксацияСверху = 0;
ТабДок.ФиксацияСлева = 0;
Если в ФиксацияСверху записать число больше числа строк в документе, закрепление либо не сработает, либо займёт весь экран. Сверяйтесь с реальным числом выведенных строк.
Типовые задачи и как их решать закреплением
Три ситуации из практики, где фиксация экономит время.
Оборотно-сальдовая ведомость на сотни строк
Шапка у ведомости двухуровневая: сверху названия групп («Сальдо на начало», «Обороты», «Сальдо на конец»), ниже «Дебет» и «Кредит». Закрепить нужно обе строки, иначе при прокрутке видно только «Дебет» без пояснения, о каком периоде речь. Выделяйте ячейку под второй строкой шапки и справа от колонки со счётом или названием.
Сверка двух таблиц рядом
Сопоставляете выгрузку из банка с данными учёта. В обеих нужна неподвижная колонка с номером или датой, чтобы по строкам было видно, что к чему. Закрепите первую колонку, прокручивайте суммы вправо, и строка всегда подписана.
Широкая таблица с помесячной раскладкой
В отчёте двенадцать месяцев по горизонтали плюс итоги. Закрепите левую колонку с названием показателя и верхнюю строку с названиями месяцев. Тогда на любом участке прокрутки понятно, где вы находитесь.
| Задача | Верхние строки | Левые колонки |
|---|---|---|
| Ведомость с двухуровневой шапкой | 2 | 1 (счёт или наименование) |
| Сверка двух выгрузок | 1 | 1 (номер или дата) |
| Помесячная раскладка | 1 | 1 |
| Длинный реестр без широких колонок | 1 | 0 |
Если колонок мало и они помещаются на экран, левое закрепление только мешает: оно съедает ширину. Фиксируйте колонки только когда таблица реально не помещается по горизонтали.
Закрепление шапки в отчёте, который формируется кодом
Для регулярных отчётов удобнее не просить каждого пользователя фиксировать шапку вручную. Разработчик добавляет две строки в процедуру формирования, после вывода всех данных.
Порядок такой:
- Выведите шапку и запомните, сколько строк она заняла.
- Выведите данные и итоги.
- Запишите запомненное число в
ФиксацияСверхурезультата. - Если нужна неподвижная колонка с наименованием, задайте
ФиксацияСлева.
Для отчёта на СКД результат лежит в поле табличного документа формы; фиксацию задают после того, как компоновщик вывел данные, иначе число строк ещё неизвестно. Проверьте результат на отчёте с малым и большим количеством строк: при пустом отборе шапка одна, при полном не должна сдвигаться.
Ориентир по объёму: шапка до трёх строк и до двух закреплённых колонок оставляют на экране 80-90% полезной площади на мониторе 1080p. Если шапка выше, подумайте о том, чтобы убрать вторичные строки или перенести их в заголовок отчёта над таблицей.
Если закрепление не работает
Несколько ситуаций, когда пользователи жалуются, что «ничего не фиксируется».
- ❌ Выделена ячейка A1. Закреплять нечего. Выделите ячейку ниже шапки и правее нужных колонок.
- ❌ Закрепили, но не сохранили макет. При следующем открытии оно исчезло. В Конфигураторе сохраните макет и саму конфигурацию.
- ❌ Отчёт перестроили. Закрепление в результате отчёта не переживает повторное формирование. Для постоянной фиксации нужен код или собственный макет.
- ❌ Закрепили слишком много. Если зафиксированная часть больше видимого окна, прокручиваемая часть исчезает. Уменьшите область или увеличьте окно.
- ❌ Режим «только просмотр» у документа. Меню редактирования недоступно, закрепление не включить; откройте копию для правки.