При настройке автоматической рассылки отчетов на базе Системы Компоновки Данных (СКД) в конфигурациях, использующих Библиотеку Стандартных Подсистем (БСП), часто возникает неприятная ситуация: отчет, который в пользовательском режиме выглядит отлично, при получении по почте (в форматах Excel, HTML или MXL) теряет все визуальное оформление. Мы получаем «чистые» данные без рамок, фоновой заливки и выделения шрифтов. Давайте разберемся, почему это происходит и как вернуть отчету его нарядный вид.
Основная причина заключается в том, как именно сервер 1С обрабатывает Макет оформления с установленным значением «Основной» в условиях фонового задания. В большинстве типовых механизмов БСП формирование отчета происходит в фоновом режиме на стороне сервера. При программной генерации табличного документа значение оформления «Основной» системой часто интерпретируется как отсутствие каких-либо стилей вовсе.
В результате, вместо применения стандартной палитры цветов и настроек шрифтов, платформа игнорирует стилевые настройки. Это касается не только внешних отчетов, но и встроенных в конфигурацию объектов. Интересно, что иногда проблема может возникнуть даже после простого изменения формы отчета или работы с настройками компоновки, когда система «забывает» корректно применить макет.
Это самый быстрый и доступный способ, который помогает в большинстве случаев. Давайте пройдем по шагам:
Смена макета на «неосновной» заставляет платформу явно зафиксировать выбранный стиль в настройках КомпоновщикаНастроек. При выполнении фонового задания сервер 1С видит это указание и применяет соответствующие стили при генерации ТабличногоДокумента, что гарантирует сохранение всех цветов и рамок при конвертации в файлы.
Если специфика вашей задачи требует использования именно классического стиля (аналогичного «Основному») или вы не хотите менять настройки для пользователей, можно вмешаться в процесс формирования отчета программно. Для этого воспользуемся процедурой ПриКомпоновкеРезультата в модуле объекта внешнего отчета.
Рассмотрим, как принудительно задать параметры оформления перед началом компоновки:
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
// Отключаем стандартный вывод, чтобы управлять процессом самостоятельно
СтандартнаяОбработка = Ложь;
// Инициализируем настройки компоновки
Настройки = КомпоновщикНастроек.ПолучитьНастройки();
// Принудительно задаем параметр макета оформления
// Это гарантирует, что при фоновом формировании БСП применит нужные стили
Настройки.ПараметрыВывода.УстановитьЗначениеПараметра("МакетОформления", "Основной");
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
Макет = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки, ДанныеРасшифровки);
ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновки.Инициализировать(Макет, , ДанныеРасшифровки);
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
ПроцессорВывода.УстановитьДокумент(ДокументРезультат);
ПроцессорВывода.Вывести(ПроцессорКомпоновки);
КонецПроцедуры
При использовании этого метода мы явно обращаемся к ПараметрамВывода настроек СКД. Установка значения "МакетОформления" в явном виде через код гарантирует, что серверное фоновое задание БСП корректно «подхватит» необходимые стили. Теперь даже при сохранении отчета в Excel или HTML все элементы оформления будут сохранены.
Стоит отметить, что сами форматы файлов, такие как XLSX (Excel), DOCX (Word) и HTML, полноценно поддерживают перенос стилей из ТабличногоДокумента 1С. Проблема не в самих форматах, а исключительно в этапе генерации документа в оперативной памяти сервера. Как только ТабличныйДокумент скомпонован с явно указанными стилями, последующая запись файла произойдет корректно.
Если вы столкнулись с потерей оформления, в первую очередь проверьте, не слетел ли макет в настройках. Если ручная смена не помогает, программная настройка МакетОформления через ПриКомпоновкеРезультата является самым надежным инженерным методом, который поможет раз и навсегда забыть об этой проблеме.