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