При работе с Системой Компоновки Данных (СКД) (поможет консоль для разработки и отладки отчетов СКД) часто возникает ситуация, когда в шапке сформированного отчета появляются лишние колонки, соответствующие полям-ресурсам. Это происходит из-за автоматического поведения СКД, которое пытается разместить ресурсы в отдельных колонках. Давайте разберемся, как можно управлять этим поведением и убрать ненужные заголовки из шапки отчета.
Проанализируем несколько способов решения этой задачи, от самых простых до более сложных, требующих программного вмешательства.
Это самый частый и простой способ, который в большинстве случаев решает проблему. Причина появления лишних колонок ресурсов часто кроется в некорректно настроенной или автоматически созданной структуре отчета.
Рассмотрим по шагам, что нужно сделать:
Важный момент: часто проблема возникает, когда ресурс ошибочно добавляют в группировку колонок, а не в выбранные поля. Убедитесь, что структура отчета логична и соответствует желаемому результату.
Если требуется более тонкая настройка внешнего вида шапки, стандартные средства могут не подойти. В этом случае на помощь приходят макеты. Этот метод позволяет полностью переопределить стандартный заголовок и отобразить в нем только то, что нужно.
Этот способ дает максимальную гибкость, но требует больше ручной работы. Зато он позволяет решать даже нестандартные визуальные задачи, например, реализовать склейку нескольких картинок в одну ячейку заголовка.
Иногда задача решается изменением одной глобальной настройки отчета, которая влияет на то, как ресурсы отображаются в таблице.
Расположение ресурсов.После этого изменения ресурсы перестанут формировать отдельные колонки и будут выводиться в одной общей колонке под своими наименованиями. Это не всегда подходит по дизайну, но как быстрый способ убрать ресурсы из шапки – отлично работает.
Если ни один из вышеперечисленных способов не подходит или требуется динамическое управление отображением, можно вмешаться в уже сформированный табличный документ и удалить ненужные строки или колонки программно. Похожий подход используется и тогда, когда необходимо программно изменить заголовок группировки, если стандартные средства СКД этого не позволяют.
Этот метод требует написания кода, но дает гарантированный результат. Рассмотрим пример кода, который удаляет третью строку из готового отчета:
// Фрагмент кода после формирования отчета
ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновки.Инициализировать(МакетКомпоновки);
ТабличныйДокумент = Элементы.Результат; // Поле табличного документа на форме
ТабличныйДокумент.Очистить();
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
ПроцессорВывода.УстановитьДокумент(ТабличныйДокумент);
ПроцессорВывода.Вывести(ПроцессорКомпоновки);
// Теперь, когда отчет в ТабличныйДокумент выведен, можно его изменить
// Предположим, что ненужный заголовок находится в 3-й строке
// Получаем область этой строки и удаляем ее со сдвигом остальных ячеек вверх
ОбластьДляУдаления = ТабличныйДокумент.Область("R3");
ТабличныйДокумент.УдалитьОбласть(ОбластьДляУдаления, ТипСмещенияТабличногоДокумента.ПоВертикали);
Важно: номера строк и колонок в каждом отчете индивидуальны. Перед использованием этого метода необходимо проанализировать структуру сформированного табличного документа, чтобы точно определить координаты удаляемой области.
В целом, СКД является мощным механизмом, который позволяет решать и более сложные задачи, например, использовать две разных схемы в одном отчете СКД. А для расширения стандартных возможностей можно применять готовые инструменты, такие как Пользовательская СКД, которая упрощает построение отчетов на стороне клиента.