К статье
Практический материал

Отчеты и Аналитика · 7 мин

Как открыть форму отчета в 1С

Как открыть форму отчета в 1С: через интерфейс, командой ОткрытьФорму, программно с параметрами. Разбор ошибок, примеры кода и ответы на вопросы.

Форма отчета в 1С — это окно, в котором пользователь задаёт период, отборы и другие настройки перед формированием результата. Открыть её можно двумя принципиально разными способами: через стандартный интерфейс программы (если отчет включён в подсистемы) или программно — из встроенного языка 1С. Второй вариант нужен разработчикам, когда отчет должен запускаться из другого документа, обработки или по расписанию.

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

Как пользователю открыть отчет через интерфейс

В типовых конфигурациях (1С:Бухгалтерия, 1С:Управление торговлей, 1С:ERP) отчеты собраны в отдельных разделах. Обычно это пункт главного меню «Отчеты» либо вкладка конкретного раздела — например, «Продажи → Отчеты по продажам». Достаточно щелкнуть по названию отчета, и его форма откроется с настройками по умолчанию.

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

После открытия формы задайте период и отборы, затем нажмите «Сформировать». Если кнопка неактивна, проверьте обязательные поля — чаще всего не заполнен период или организация.

Как открыть форму отчета программно: команда ОткрытьФорму

Основной инструмент разработчика — глобальный метод ОткрытьФорму(). Для отчета указывается путь вида Отчет.ИмяОтчета.Форма. Если у отчета несколько форм, добавляется имя конкретной формы; если не указать — откроется основная форма, назначенная в конфигураторе.

bsl
&НаКлиенте
Процедура ОткрытьОтчет(Команда)
	ОткрытьФорму("Отчет.ПродажиПоМенеджерам.Форма");
КонецПроцедуры

Метод открывает форму асинхронно и не блокирует выполнение кода. Если нужно дождаться закрытия формы и получить результат, используйте ОткрытьФормуМодально() — но учтите, что в тонком и веб-клиенте модальные вызовы ограничены и требуют включённого режима модальности, поэтому в современных конфигурациях предпочтителен вариант с описанием оповещения.

Передача параметров и отборов при открытии

Часто требуется открыть отчет уже настроенным: с заданным периодом, отбором по контрагенту или складу. Для этого вторым аргументом в ОткрытьФорму() передаётся структура параметров. Для отчетов на СКД (система компоновки данных) настройки передаются через параметр формы Отбор и стандартные ключи вроде СформироватьПриОткрытии.

bsl
&НаКлиенте
Процедура ОткрытьСОтбором(Команда)
	ПараметрыФормы = Новый Структура;
	ПараметрыФормы.Вставить("Отбор", Новый Структура("Контрагент", КонтрагентСсылка));
	ПараметрыФормы.Вставить("СформироватьПриОткрытии", Истина);
	ОткрытьФорму("Отчет.Взаиморасчеты.Форма", ПараметрыФормы);
КонецПроцедуры

Ключ СформироватьПриОткрытии со значением Истина заставляет отчет сразу построить результат, минуя ручное нажатие «Сформировать». Это удобно для кнопок быстрого анализа, но опасно для тяжелых отчетов: если отбор не ограничивает данные, формирование по всей базе может занять минуты и нагрузить сервер.

Открытие внешнего отчета

Внешние отчеты (файлы .erf и .epf) открываются иначе: сначала файл подключается к сеансу, затем вызывается его форма. В управляемом приложении используется механизм ВнешниеОтчеты либо подключение через Дополнительные отчеты и обработки в типовых конфигурациях.

bsl
&НаСервере
Функция ПодключитьОтчет(АдресХранилища)
	ИмяОтчета = ВнешниеОтчеты.Подключить(АдресХранилища);
	Возврат ИмяОтчета;
КонецФункции

&НаКлиенте
Процедура ОткрытьВнешний()
	ИмяОтчета = ПодключитьОтчет(Адрес);
	ОткрытьФорму("ВнешнийОтчет." + ИмяОтчета + ".Форма");
КонецПроцедуры

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

Типичные ошибки и их устранение

Самая частая проблема — ошибка «Объект не найден» при вызове ОткрытьФорму(). Причины: опечатка в имени отчета, отчет удалён или переименован при обновлении, либо у пользователя нет права «Просмотр» на объект. Проверьте точное имя в конфигураторе и права роли.

Вторая группа ошибок связана с параметрами: форма открывается, но отбор не применяется. Обычно это значит, что имя поля в структуре отбора не совпадает с именем поля в схеме компоновки данных, либо переданный тип значения не соответствует типу поля (например, строка вместо ссылки).

Типичные ошибки
01
Опечатка в пути Отчет.Имя.Форма — приводит к ошибке «Объект не найден» при открытии
02
Передача отбора с именем поля, отсутствующим в СКД, — отбор молча игнорируется
03
Вызов ОткрытьФорму на сервере — метод доступен только на клиенте, код падает с ошибкой
04
Открытие внешнего отчета без подключения — платформа не находит объект ВнешнийОтчет

Проверка результата

Контрольные точки

Как проверить результат

Форма открылась
Норма

Окно отчета отображается, доступны настройки и кнопка «Сформировать»

Тревожный признак

Ошибка «Объект не найден» или пустое окно без элементов

Применился отбор
Норма

В шапке настроек видно переданное значение отбора

Тревожный признак

Отбор пуст — проверить имена полей в СКД

Формирование
Норма

Табличный документ заполнен данными за ожидаемый период

Тревожный признак

Пустой результат — проверить период и наличие данных

FAQ

Как открыть форму отчета, если её нет в меню?

Используйте команду «Все функции» (включается в параметрах запуска или через настройки интерфейса), затем раздел «Отчеты». Если отчета нет и там — вероятно, у вашей роли нет прав, обратитесь к администратору.

Чем ОткрытьФорму отличается от ПолучитьФорму?

ПолучитьФорму возвращает объект формы без её отображения — это нужно, чтобы программно заполнить реквизиты перед показом. ОткрытьФорму сразу показывает форму пользователю и является основным способом в управляемом приложении.

Можно ли открыть отчет сразу с результатом, минуя настройки?

Да: передайте параметр СформироватьПриОткрытии = Истина вместе со структурой отбора. Отчет построится автоматически при открытии формы.

Почему переданный отбор не применяется к отчету?

Чаще всего имя поля в структуре отбора не совпадает с именем поля в схеме компоновки данных, или тип значения не соответствует типу поля. Сверьте имена в настройках СКД отчета в конфигураторе.

Как открыть внешний отчет (.erf) без подключения к базе?

Через меню «Файл → Открыть» в толстом клиенте. В тонком и веб-клиенте внешний отчет нужно сначала подключить программно или зарегистрировать в справочнике дополнительных отчетов и обработок.

Итог

Что важно запомнить

Пользователь открывает отчет через меню, разработчик — командой ОткрытьФорму с путем Отчет.Имя.Форма. Параметры и отборы передаются структурой; внешние отчеты требуют предварительного подключения. Большинство ошибок связано с опечатками в именах и правами доступа.