При разработке в системе 1С:Предприятие 8 часто возникает ситуация, когда созданная ранее внешняя обработка должна превратиться во внешний отчет. Основная причина такого перехода — необходимость использования функционала Хранилища вариантов. В отличие от обработки, отчет позволяет пользователям сохранять свои настройки, создавать различные варианты компоновки данных и использовать стандартные механизмы формирования отчетов. В этой статье мы подробно разберем, как правильно выполнить это преобразование, не потеряв данные и логику кода.
Разберем ситуацию: многие новички пытаются просто сменить расширение файла с .epf на .erf через проводник Windows. Однако в 1С:Предприятие 8 файлы внешних объектов — это не просто переименованные контейнеры. При попытке открыть такой файл система выдаст ошибку или откроет пустой объект без модулей, форм и реквизитов. Это происходит потому, что внутренняя структура метаданных (заголовки и идентификаторы типов) жестко определяет, является ли объект обработкой или отчетом. Рассмотрим правильные способы конвертации.
Проанализируем наиболее надежный метод, который рекомендуют опытные разработчики. Он особенно полезен, если в вашей обработке есть табличные части. Прямое копирование через буфер обмена может нарушить внутренние связи между элементами формы и реквизитами табличных частей.
.epf. Обработка появится в дереве метаданных как новый отчет..erf.Этот метод позволяет системе 1С самостоятельно перестроить ссылки внутри объекта. После этого объект можно удалить из конфигурации, сохранив файл внешнего отчета на диске.
Рассмотрим случай, когда обработка простая и не содержит сложных связей. Мы можем создать файл отчета "с нуля" и перенести в него содержимое.
Важно: При таком подходе часто возникает проблема с основным реквизитом формы. Выясним причину: в обработке основной реквизит формы имеет тип ВнешняяОбработкаОбъект.Имя, а в отчете он должен быть ВнешнийОтчетОбъект.Имя.
Проанализируем ситуацию, описанную в сообщениях форума: после копирования формы основной реквизит (обычно это Объект или Отчет) может изменить свой тип на Строка или просто потерять связь с данными. Выполним следующие шаги для исправления:
ВнешнийОтчетОбъект.ИмяВашегоОтчета.При переносе кода необходимо учитывать, что в 1С для отчетов и обработок используются разные менеджеры. Если в вашем коде были вызовы других обработок или обращения к текущему объекту по типу, их нужно заменить. Посмотрим на пример:
// Было во внешней обработке:
ОбъектОбработки = ВнешниеОбработки.Создать(ПутьКФайлу);
// Стало во внешнем отчете:
ОбъектОтчета = ВнешниеОтчеты.Создать(ПутьКФайлу);
Также, если вы используете проверку типов, замените Тип("ВнешняяОбработкаОбъект.Имя") на Тип("ВнешнийОтчетОбъект.Имя"). Несоблюдение этого правила приведет к ошибкам в момент выполнения кода (Runtime errors).
Если ваш отчет будет использоваться в современной конфигурации (например, 1С:ERP, УТ 11, БП 3.0), которая использует Библиотеку стандартных подсистем (БСП), обратите внимание на функцию СведенияОВнешнейОбработке(). Разберем изменения:
Функция СведенияОВнешнейОбработке() Экспорт
ПараметрыРегистрации = ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке("2.2.2.1");
// Для обработки было:
// ПараметрыРегистрации.Вид = ДополнительныеОтчетыИОбработкиКлиентСервер.ВидДополнительнойОбработки();
// Для отчета должно быть:
ПараметрыРегистрации.Вид = ДополнительныеОтчетыИОбработкиКлиентСервер.ВидДополнительногоОтчета();
// ... остальной код
Возврат ПараметрыРегистрации;
КонецФункции
Без этого изменения система не позволит зарегистрировать файл в справочнике "Дополнительные отчеты и обработки" как отчет.
Выясним главную причину перехода к отчету. Чтобы пользователю стали доступны варианты отчета, необходимо добавить Основную схему компоновки данных (СКД). Даже если ваш отчет формируется полностью программно и выводит данные в табличный документ вручную, наличие схемы (пусть даже пустой) инициализирует стандартные механизмы 1С для работы с настройками.
Создайте новый макет с типом "Схема компоновки данных", назовите его ОсновнаяСхемаКомпоновкиДанных и укажите его в свойствах отчета на вкладке "Основные". После этого в режиме "1С:Предприятие" у объекта появится кнопка "Изменить вариант" и возможность сохранения пользовательских настроек.
Таким образом, мы рассмотрели полный цикл преобразования обработки в отчет: от манипуляций с файлами до тонкой настройки программного кода и интерфейса.