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