Как включить внешний отчет в типовую рассылку отчетов и убрать группировки строк при выгрузке в Excel?

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

При автоматизации регулярной отправки прайс-листов и аналитических сводок в конфигурациях на базе БСП (включая 1С:Управление торговлей 11) часто возникает необходимость использовать внешний отчет с произвольным кодом формирования и отправлять его через типовой механизм Рассылка отчетов. Дополнительно разработчики сталкиваются с проблемой, когда сформированный документ при выгрузке в файл Excel сохраняет боковую панель уровней группировок, даже если на форме они скрыты. Рассмотрим по шагам, как решить обе эти задачи.

Подключение внешнего отчета без СКД к типовой рассылке отчетов

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

  1. Регистрация отчета в базе: В модуле объекта внешнего отчета обязательно определим экспортную функцию СведенияОВнешнейОбработке(), указав вид ДополнительныйОтчет. Зарегистрируем отчет в информационной базе через меню Администрирование → Печатные формы, отчеты и обработки → Дополнительные отчеты и обработки.
  2. Создание базовой схемы компоновки: Подсистема вариантов отчетов БСП ожидает наличие схемы компоновки данных. Создадим минимальную (пустую) схему СКД в объекте отчета, чтобы зарегистрировать стандартный вариант отчета для подсистемы рассылки.
  3. Переопределение вывода в ПриКомпоновкеРезультата: Чтобы отключить стандартное исполнение схемы и вывести отчет собственным алгоритмом (через макет или выборку), переопределим обработчик в модуле объекта:

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

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

Удаление уровней группировок строк при экспорте в Excel

Разберем, почему визуальное скрытие группировок в 1С не решает проблему при экспорте. Свойство ОтображатьГруппировки или соответствующий пункт меню Таблица управляют лишь отображением элементов интерфейса (плюсов и минусов) на экране в окне 1С. При сохранении в формат .xlsx или .xls платформа переносит физическую структуру строк макета, и Microsoft Excel автоматически строит панель структуры группировки слева.

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

  1. Программная разгруппировка всего документа: В конце процедуры формирования перед возвратом результата снимем группировку со всех строк табличного документа:
    
    // Снимаем структуру группировок со всей области документа
    ДокументРезультат.Область().Разгруппировать();
    
  2. Вывод строк без указания уровня: Если документ формируется построчно из макета с помощью метода ТабличныйДокумент.Вывести(), не передаем параметр уровня группировки либо оставляем его равным нулю:
    
    // Вывод области без создания иерархических уровней
    ДокументРезультат.Вывести(ОбластьСтрока);
    
  3. Настройка структуры в схеме СКД: Если отчет все же строится на базе компоновки данных, но дает лишнюю вложенность (например, Иерархия номенклатуры → Характеристика), изменим структуру отчета. Расположим поля в одной группировке детальных записей либо в настройках выбранного поля изменим тип группировки на Без иерархии, чтобы платформа не делила строки на подуровни.

Использование обработчика ПриКомпоновкеРезультата в сочетании с методом Разгруппировать() гарантирует, что внешний отчет будет корректно отправляться планировщиком задач, а получатели увидят чистый файл Excel без навязчивой боковой панели структуры.

← На главную