Почему при рассылке отчетов на СКД через БСП теряется оформление и как это исправить?

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

При настройке автоматической рассылки отчетов на базе Системы Компоновки Данных (СКД) в конфигурациях, использующих Библиотеку Стандартных Подсистем (БСП), часто возникает неприятная ситуация: отчет, который в пользовательском режиме выглядит отлично, при получении по почте (в форматах Excel, HTML или MXL) теряет все визуальное оформление. Мы получаем «чистые» данные без рамок, фоновой заливки и выделения шрифтов. Давайте разберемся, почему это происходит и как вернуть отчету его нарядный вид.

Разбор причин возникновения проблемы

Основная причина заключается в том, как именно сервер 1С обрабатывает Макет оформления с установленным значением «Основной» в условиях фонового задания. В большинстве типовых механизмов БСП формирование отчета происходит в фоновом режиме на стороне сервера. При программной генерации табличного документа значение оформления «Основной» системой часто интерпретируется как отсутствие каких-либо стилей вовсе.

В результате, вместо применения стандартной палитры цветов и настроек шрифтов, платформа игнорирует стилевые настройки. Это касается не только внешних отчетов, но и встроенных в конфигурацию объектов. Интересно, что иногда проблема может возникнуть даже после простого изменения формы отчета или работы с настройками компоновки, когда система «забывает» корректно применить макет.

Решение 1: Изменение макета оформления в настройках отчета

Это самый быстрый и доступный способ, который помогает в большинстве случаев. Давайте пройдем по шагам:

  1. Откройте отчет в режиме «1С:Предприятие» или в конфигураторе.
  2. Перейдите к настройкам варианта отчета.
  3. Найдите поле «Макет оформления». Если там выбрано значение «Основной», попробуйте изменить его на любое другое, например, «Арктика», «Море» или «Зеленый».
  4. Сохраните вариант отчета и выполните повторную рассылку.

Смена макета на «неосновной» заставляет платформу явно зафиксировать выбранный стиль в настройках КомпоновщикаНастроек. При выполнении фонового задания сервер 1С видит это указание и применяет соответствующие стили при генерации ТабличногоДокумента, что гарантирует сохранение всех цветов и рамок при конвертации в файлы.

Решение 2: Программное управление оформлением в модуле объекта

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

Рассмотрим, как принудительно задать параметры оформления перед началом компоновки:


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

    // Инициализируем настройки компоновки
    Настройки = КомпоновщикНастроек.ПолучитьНастройки();

    // Принудительно задаем параметр макета оформления
    // Это гарантирует, что при фоновом формировании БСП применит нужные стили
    Настройки.ПараметрыВывода.УстановитьЗначениеПараметра("МакетОформления", "Основной");

    КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
    Макет = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки, ДанныеРасшифровки);

    ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
    ПроцессорКомпоновки.Инициализировать(Макет, , ДанныеРасшифровки);

    ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
    ПроцессорВывода.УстановитьДокумент(ДокументРезультат);
    ПроцессорВывода.Вывести(ПроцессорКомпоновки);
КонецПроцедуры

При использовании этого метода мы явно обращаемся к ПараметрамВывода настроек СКД. Установка значения "МакетОформления" в явном виде через код гарантирует, что серверное фоновое задание БСП корректно «подхватит» необходимые стили. Теперь даже при сохранении отчета в Excel или HTML все элементы оформления будут сохранены.

Рекомендации по форматам вывода

Стоит отметить, что сами форматы файлов, такие как XLSX (Excel), DOCX (Word) и HTML, полноценно поддерживают перенос стилей из ТабличногоДокумента 1С. Проблема не в самих форматах, а исключительно в этапе генерации документа в оперативной памяти сервера. Как только ТабличныйДокумент скомпонован с явно указанными стилями, последующая запись файла произойдет корректно.

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

← На главную