Как исправить ошибку «Не передан служебный параметр "настройки отчета"» в 1С?

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

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

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

Выясним причину: почему возникает ошибка?

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

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

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

Согласно стандартам разработки 1С:БСП, частичная подмена стандартных форм отчетов без правильной настройки связей не поддерживается. Давайте рассмотрим, какими способами можно исправить это поведение.

Способ 1. Использование вспомогательной формы настроек БСП (Рекомендуемый)

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

Разберем по шагам, как настроить свойства отчета:

  1. Откроем ваш внешний отчет в конфигураторе 1С.
  2. Перейдем в палитру свойств отчета (для этого нажмем правой кнопкой мыши по корню отчета и выберем пункт «Свойства»).
  3. Найдем раздел «Представление» и обратим внимание на свойства форм отчета.
  4. В поле «Вспомогательная форма настроек» (в некоторых версиях БСП оно может называться «Основная форма настроек») нажмем на кнопку выбора (три точки) и выберем общую форму конфигурации ВспомогательнаяФормаНастроекОтчета.
  5. Теперь нам необходимо корректно настроить состав пользовательских настроек в схеме компоновки данных (СКД), чтобы параметры корректно отображались во вспомогательной форме БСП.
  6. Откроем схему компоновки данных нашего отчета и перейдем на вкладку «Настройки».
  7. Для каждого параметра, отбора или группировки, которые пользователь должен иметь возможность настраивать самостоятельно, нажмем на кнопку «Свойства элемента пользовательских настроек» (иконка с изображением шестеренки в нижней части окна настроек СКД).
  8. В открывшемся диалоговом окне обязательно установим флаг «Включать в пользовательские настройки», а в поле «Режим редактирования» выберем значение «Обычный».

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

Способ 2. Полный отказ от собственных форм отчета

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

Проанализируем ситуацию: если созданная вами форма отчета не несет сложной и уникальной интерактивной логики, которую невозможно реализовать стандартными средствами СКД, самым надежным решением будет отказ от нее:

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

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

Способ 3. Создание собственной формы настроек

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

  1. В структуре внешнего отчета в ветке «Формы» нажмем кнопку «Добавить» и создадим новую форму. Назовем её, например, ФормаНастроек.
  2. Разместим на этой форме элементы управления, которые будут напрямую связаны с параметрами компоновщика настроек компоновки данных вашего отчета.
  3. Откроем общие свойства отчета в конфигураторе и в поле «Основная форма настроек» выберем только что созданную форму.

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

Способ 4. Программный вызов формы настроек с передачей параметров

Иногда перед разработчиком стоит задача программного вызова стандартной формы настроек БСП из кастомного кода (например, при реализации сложных интерактивных обработчиков событий или при написании специализированных АПИ-функций). Напрямую вызвать общую форму настроек методом ОткрытьФорму("ОбщаяФорма.ФормаНастроекОтчета") нельзя — это гарантированно приведет к аварийному завершению работы.

Чтобы решить эту задачу программно, мы должны предварительно сформировать структуру параметров и передать её при открытии формы. Посмотрим на пример кода, который решает эту проблему:


// Пример программного вызова стандартной формы настроек БСП из кастомной формы
Процедура ОткрытьНастройкиОтчетаПрограммно()
    
    ПараметрыОткрытия = Новый Структура;
    
    // Нам необходимо передать обязательный служебный параметр "НастройкиОтчета"
    // В качестве значения передаем компоновщик настроек нашего отчета
    ПараметрыОткрытия.Вставить("НастройкиОтчета", Отчет.КомпоновщикНастроек);
    
    // При необходимости можно передать дополнительные параметры БСП
    ПараметрыОткрытия.Вставить("КлючВарианта", Отчет.КлючВарианта);
    
    // Открываем общую форму настроек БСП с подготовленными параметрами
    ОткрытьФорму("ОбщаяФорма.ФормаНастроекОтчета", ПараметрыОткрытия, ЭтаФорма);
    
КонецПроцедуры

В данном примере мы упаковываем компоновщик настроек в структуру параметров под ключом НастройкиОтчета. Стандартная общая форма БСП, получив этот параметр, успешно инициализирует интерфейс и позволит пользователю комфортно работать с настройками отчета без возникновения системных сбоев.

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

← На главную