Как зафиксировать шапку таблицы в отчете на СКД?

Программист 1С v8.3 (Управляемые формы) 1С:Зарплата и Управление Персоналом IT и автоматизация бизнеса
← На главную

При разработке отчетов на системе компоновки данных (СКД) часто возникает необходимость закрепить заголовок таблицы, чтобы при прокрутке больших массивов данных шапка колонок оставалась на экране. Однако стандартный параметр Фиксация сверху = Авто нередко не срабатывает, либо фиксация пропадает после изменения настроек. Разберем по шагам, почему так происходит, как правильно настроить фиксацию интерактивно, как закрепить строки программно и с какими ограничениями платформы можно столкнуться.

Выясним причину: почему не работает автоматическая фиксация шапки

Проанализируем ситуацию, при которой СКД отключает автоматическое закрепление строк:

  1. Неоднородная структура отчета. Автоматический режим фиксации корректно рассчитывает координаты только для простых отчетов, где в корне структуры расположен единственный элемент (одна таблица или одна иерархическая группировка). Если в структуре отчета последовательно выводится отдельная группировка, а затем таблица, платформа не может однозначно определить границы общей шапки и отключает фиксацию.
  2. Уровень применения настроек. Если параметры фиксации заданы на уровне всего отчета (в корне вкладки Настройки), а сама таблица находится на подуровне, автоматическая настройка может не распространяться на вложенную структуру.
  3. Кэширование настроек в пользовательском режиме (БСП). В типовых конфигурациях при изменении схемы компоновки данных в конфигураторе пользовательский сеанс часто загружает сохраненный вариант отчета из хранилища настроек. В этом сохраненном варианте остаются старые параметры отображения, из-за чего фиксация не проявляется до полного сброса настроек.

Интерактивная настройка фиксации шапки без программирования

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

  1. Перейдем на вкладку Настройки схемы компоновки данных.
  2. В окне Структура выделим саму Таблицу (а не корневой элемент Отчет).
  3. На панели Другие настройки для выделенной таблицы найдем параметр Фиксация сверху и установим значение Авто или Заголовок.
  4. Если перед таблицей выводятся вспомогательные данные, объединим структуру: перенесем эти поля в заголовок отчета либо внутрь строк самой таблицы, избегая создания нескольких независимых группировок верхнего уровня.
  5. В режиме 1С:Предприятие откроем отчет и выполним сброс параметров через меню Еще → Стандартные настройки, чтобы применились обновленные параметры схемы.

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

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

Посмотрим на пример кода:


Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
	
	// Стандартная обработка формирования отчета
	// После вывода результата задаем количество фиксируемых строк
	ДокументРезультат.ФиксацияСверху = 8;
	
КонецПроцедуры

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

Ограничения платформы: фиксация диапазона строк

Рассмотрим частый вопрос: можно ли зафиксировать только строки шапки (например, с 5-й по 8-ю), чтобы при прокрутке строки с 1-й по 4-ю (где находятся заголовок отчета, параметры и отборы) скрывались?

В платформе 1С:Предприятие свойство ФиксацияСверху всегда работает строго от первой строки табличного документа. Закрепить произвольный интервал строк в середине документа, прокручивая строки выше него, технически невозможно из-за архитектуры объекта ТабличныйДокумент.

Как сэкономить экранное пространство на небольших мониторах

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

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