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

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

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

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

Шаг 1. Настройка вспомогательных форм в метаданных

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

Выясним, какие значения должны быть установлены в свойствах отчета:

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

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

Шаг 2. Настройка пользовательских полей в СКД

Проанализируем настройки внутри самой Схемы компоновки данных (СКД). Ошибка может возникать, если система не видит элементов, которые можно редактировать. Перейдем в конструктор СКД на закладку «Настройки».

Выполним следующие действия для каждого параметра или группировки, которые вы хотите вынести в пользовательские настройки:

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

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

Шаг 3. Требования к коду при использовании собственной формы отчета

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

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


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

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

Также проверьте наличие обработчиков для сохранения настроек, если вы переопределяете стандартное поведение:


&НаСервере
Процедура ПриСохраненииПользовательскихНастроекНаСервере(Настройки)
    ВариантыОтчетов.ПриСохраненииПользовательскихНастроекНаСервере(ЭтотОбъект, Настройки);
КонецПроцедуры

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

Шаг 4. Очистка кэша настроек пользователя

Иногда бывает так: вы внесли все исправления, указали формы, настроили СКД, но ошибка повторяется. Выясним причину: 1С сохраняет настройки вариантов отчетов в системных хранилищах. Если вы запускали отчет, когда он еще был «сырым», система могла запомнить некорректную структуру параметров.

Попробуйте выполнить следующие действия:

  1. Зайдите в раздел «Администрирование» — «Обслуживание».
  2. Перейдите по ссылке «Управление настройками пользователей».
  3. Выберите себя в списке пользователей и найдите настройки для вашего внешнего отчета.
  4. Удалите все сохраненные настройки для этого отчета.
  5. Если это не помогает, попробуйте изменить Имя (не заголовок, а именно внутреннее имя объекта) в свойствах отчета. Это заставит систему считать отчет абсолютно новым.

Шаг 5. Радикальный метод (если ничего не помогло)

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

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


&НаКлиенте
Процедура МояКомандаНастройки(Команда)
    ПараметрыОткрытия = Новый Структура;
    ПараметрыОткрытия.Вставить("ДанныеКомпоновки", Отчет.КомпоновщикНастроек);
    ОткрытьФорму("ВнешнийОтчет.МойОтчет.Форма.ФормаНастроек", ПараметрыОткрытия, ЭтаФорма);
КонецПроцедуры

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

Подведем итог: в 90% случаев ошибка лечится простым указанием ВспомогательнаяФормаНастроекОтчета в свойствах метаданных и включением хотя бы одного параметра в «Пользовательские настройки» СКД с обычным режимом редактирования. Совместное использование этих методов гарантирует корректную работу внешнего отчета в любой современной конфигурации.

← На главную