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