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

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

1С СКД: как сформировать отчет при открытии

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

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

Способ зависит от того, как устроен отчет: внешний или встроенный в конфигурацию, управляемые или обычные формы, типовой вариант настроек или программная компоновка. Ниже разобраны все основные сценарии — от простого флага в пользовательском режиме до программного формирования через объект отчета. Отдельно рассмотрены ситуации, когда автоматическое формирование лучше отключить: тяжелые запросы, обязательные параметры без значений по умолчанию, отчеты, открываемые для настройки, а не для просмотра.

Как работает автоматическое формирование отчета на СКД

Форма отчета на управляемых формах строится на основе объекта «ОтчетОбъект», у которого есть стандартное свойство варианта настроек — «СформироватьПриОткрытии». Когда форма создается, платформа проверяет этот флаг: если он установлен, сразу после открытия запускается компоновка результата с текущими настройками варианта. Пользователь видит уже готовый табличный документ без нажатия каких-либо кнопок.

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

Автоматическое формирование выполняется с теми настройками, которые сохранены в варианте: отборы, параметры, период. Если параметр обязательный и значение по умолчанию не задано, отчет при открытии либо сформируется пустым, либо покажет ошибку — в зависимости от настроек проверки заполнения параметров.

Включение флага «Сформировать при открытии» в пользовательском режиме

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

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

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

Порядок действий в режиме 1С:Предприятие
  1. 1
    Откройте нужный отчет и выберите требуемый вариант настроек.
  2. 2
    Перейдите: Ещё → Изменить вариант (или Настройки → Прочие настройки).
  3. 3
    Найдите и установите флажок «Формировать при открытии».
  4. 4
    Завершите редактирование и сохраните вариант.
  5. 5
    Закройте отчет и откройте снова — результат должен появиться автоматически.

Настройка в конфигураторе для встроенного отчета

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

Для варианта по умолчанию флаг «Сформировать при открытии» задается в настройках варианта в конфигураторе: откройте схему компоновки, перейдите на закладку «Настройки», выберите нужный вариант в списке вариантов (кнопка выбора варианта над деревом настроек) и в свойствах установите соответствующий признак. В ряде версий платформы это делается через палитру свойств варианта настроек.

Альтернатива без изменения конфигурации — программная установка свойства в модуле объекта отчета или в расширении. В обработчике «ПриКомпоновкеРезультата» или при определении настроек можно управлять поведением формирования, однако сам флаг автоформирования относится к клиентской логике формы, поэтому чаще его переопределяют в модуле формы отчета.

Программное формирование при открытии через модуль формы

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

Типовой прием для формы отчета на БСП — установка свойства через структуру настроек формы. Для произвольной формы отчета компоновка выполняется методом объекта отчета. Ниже пример для внешнего отчета с собственной формой:

&НаСервере

Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)

// Установка флага автоформирования для варианта

Отчет.КомпоновщикНастроек.Настройки.ДополнительныеСвойства.Вставить(

"СформироватьПриОткрытии", Истина);

КонецПроцедуры

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

&НаСервере

Процедура СформироватьОтчетНаСервере()

ОбъектОтчета = РеквизитФормыВЗначение("Отчет");

Результат.Очистить();

ОбъектОтчета.СкомпоноватьРезультат(Результат);

КонецПроцедуры

bsl
&НаКлиенте
Процедура ПриОткрытии(Отказ)
    // Отложенное формирование после открытия формы
    ПодключитьОбработчикОжидания("Подключаемый_Сформировать", 0.1, Истина);
КонецПроцедуры

Формирование при открытии через параметры формы и командный интерфейс

Отчет часто открывается не из панели разделов, а из других объектов: документа, справочника, обработки. В этом случае автоформирование управляется параметрами, передаваемыми при открытии формы. Стандартная форма отчета на БСП поддерживает параметр «СформироватьПриОткрытии» — его можно передать при программном открытии:

&НаКлиенте

Процедура ОткрытьОтчет(Команда)

ПараметрыФормы = Новый Структура;

ПараметрыФормы.Вставить("СформироватьПриОткрытии", Истина);

ПараметрыФормы.Вставить("Отбор", Новый Структура("Организация", ТекущаяОрганизация));

ОткрытьФорму("Отчет.ПродажиПоМенеджерам.Форма", ПараметрыФормы);

КонецПроцедуры

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

Дополнительно через параметры передают ключ варианта («КлючВарианта»), отборы и период. Комбинация «КлючВарианта + СформироватьПриОткрытии + Отбор» полностью определяет, что увидит пользователь после открытия, и не требует от него никаких действий.

Маршрут решения

Как выбрать способ

Нужно просто включить автоформирование для себя или всех пользователей типовой конфигурацииУстановите флаг «Формировать при открытии» в настройках варианта в режиме 1С:Предприятие
Отчет открывается программно из документа или обработкиПередавайте параметр СформироватьПриОткрытии при вызове ОткрытьФорму
Поведение должно зависеть от условий (роль пользователя, заполненность параметров)Управляйте формированием в модуле формы отчета через ПриСозданииНаСервере
Конфигурация на поддержке и менять её нельзяИспользуйте расширение конфигурации или пользовательскую настройку варианта

Когда автоматическое формирование лучше отключить

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

Вторая проблемная ситуация — обязательные параметры без значений по умолчанию. Если вариант требует указать контрагента или склад, а значение не задано, при открытии пользователь получит либо пустой результат, либо сообщение об ошибке проверки заполнения. Решение: задать для параметров осмысленные значения по умолчанию (текущая дата, организация пользователя) или отключить автоформирование.

Также учитывайте нагрузку на сервер: если отчет включен в стартовую страницу или открывается автоматически при входе пользователя, массовое одновременное формирование в начале рабочего дня может создать пиковую нагрузку на СУБД. Для таких сценариев лучше использовать фоновое формирование с выводом результата по готовности.

Проверка результата и типичные ошибки

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

Частая ошибка — установка флага в одном варианте, а открытие другого. Платформа запоминает последний использованный вариант или открывает основной; если ключи вариантов перепутаны, настройка «не срабатывает». Вторая типичная ошибка — пользовательские настройки поверх варианта: если пользователь ранее сохранил свои настройки, они могут переопределять поведение. Сброс настроек к стандартным через «Ещё» → «Установить стандартные настройки» решает проблему.

Третья группа ошибок связана с программным сценарием: вызов компоновки на клиенте вместо сервера, формирование до инициализации компоновщика настроек, обращение к реквизиту «Результат» до его создания на форме. Проверяйте контекст выполнения (&НаСервере) и порядок обработчиков: ПриСозданииНаСервере выполняется раньше ПриОткрытии на клиенте.

Типичные ошибки
01
Флаг установлен в одном варианте, а открывается другой — автоформирование не срабатывает. Проверьте ключ открываемого варианта.
02
Пользовательские настройки переопределяют вариант — сбросьте настройки к стандартным и проверьте снова.
03
Обязательный параметр без значения по умолчанию — при открытии пустой результат или ошибка. Задайте значения по умолчанию.
04
Вызов СкомпоноватьРезультат в клиентском контексте — ошибка выполнения. Компоновка выполняется только на сервере.
05
Автоформирование тяжелого отчета без отбора по периоду — зависание формы при каждом открытии.
Контрольные точки

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

Открытие отчета из списка
Норма

Результат появляется автоматически с отборами варианта

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

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

Значения параметров
Норма

Период и отборы соответствуют сохраненному варианту

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

Параметры пустые или подставлены не те значения

Время открытия
Норма

Форма открывается и формируется за приемлемое время

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

Форма подвисает, пользователь вынужден ждать

Повторное открытие
Норма

Поведение стабильно при каждом запуске

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

Работает только один раз или после сброса настроек

FAQ: частые вопросы

Отчет формируется при открытии, но с неправильным периодом. Что делать?

Период берется из сохраненного варианта настроек. Откройте настройки варианта, установите нужный период (или стандартный период «Этот месяц») и сохраните вариант. Если период задается параметром, задайте значение по умолчанию в схеме компоновки на закладке «Параметры».

Флаг «Формировать при открытии» установлен, но отчет открывается пустым. Почему?

Наиболее вероятные причины: открывается другой вариант отчета, действуют сохраненные ранее пользовательские настройки, либо обязательный параметр не заполнен. Сбросьте настройки через «Ещё» → «Установить стандартные настройки» и проверьте ключ варианта.

Можно ли сформировать отчет при открытии в фоне, чтобы форма не зависала?

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

Как открыть отчет программно и сразу сформировать с нужным отбором?

Передайте в ОткрытьФорму структуру параметров с ключами «СформироватьПриОткрытии» (Истина) и «Отбор» (структура с полями отбора). Стандартная форма отчета применит отбор и выполнит компоновку автоматически.

Работает ли автоформирование в обычных формах (толстый клиент)?

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

Как отключить автоформирование только для одного пользователя?

Вариант отчета может сохраняться персонально. Пусть пользователь откроет настройки варианта, снимет флаг «Формировать при открытии» и сохранит вариант как личный (без признака доступности всем). Тогда общий вариант останется с автоформированием, а у этого пользователя отчет будет открываться пустым.

Итог

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

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