Как исправить ошибку «В настройку отчета внесены критичные изменения отчет не будет сформирован» во внешнем отчете 1С?

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

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

Причины возникновения ошибки

Выясним причину, почему внешний отчет перестает формироваться:

  1. Изменение сигнатур процедур в общих модулях. Сложные зарплатные отчеты (например, АнализНачисленийИУдержаний, расчетные ведомости) выводятся не только механизмами компоновки СКД, но и программно обрабатываются в модуле объекта через событие ПриКомпоновкеРезультата. В процессе обновления конфигурации типовые общие модули получают новые обязательные параметры. Если внешний отчет ссылается на старую версию вызова, попытка передачи неверного количества параметров перехватывается блоком обработки исключений и выдает сообщение об ошибке.
  2. Несоответствие сохраненных пользовательских настроек. После изменения структуры метаданных или схемы СКД сохраненные ранее пользовательские настройки варианта отчета содержат неактуальные идентификаторы полей и группировок.
  3. Проверка имени объекта метаданных. Программный код отчета может содержать обращение к объекту через ЭтотОбъект.Метаданные().Имя. Для внешнего отчета имя в метаданных отличается от типового имени внутри конфигурации, из-за чего логика формирования пропускает специализированные ветки алгоритма.

Шаг 1. Сброс настроек варианта отчета

Разберем быстрое решение проблемы с сохраненными пользовательскими настройками в режиме «1С:Предприятие»:

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

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

Шаг 2. Обновление модуля объекта внешнего отчета

Если сброс настроек не помог, проанализируем модуль объекта внешнего отчета в конфигураторе:

  1. Откроем конфигурацию и найдем исходный типовой отчет, на базе которого строился внешний.
  2. Скопируем актуальный текст модуля объекта из типового отчета в модуль объекта внешнего отчета.
  3. Проверим наличие макетов оформления и печатных форм (например, ПФ_MXL_0504402) в составе макетов внешнего отчета.

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

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


Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
    
    // Проверяем текущий вариант отчета
    Если СтрНайти(ЭтотОбъект.КомпоновщикНастроек.Настройки.ИмяВарианта, "0504402") > 0 Тогда
        СтандартнаяОбработка = Ложь;
        
        // Получаем макет непосредственно из внешнего отчета
        МакетОтчета = ЭтотОбъект.ПолучитьМакет("ПФ_MXL_0504402");
        
        // Вызываем специализированный алгоритм заполнения макета
        СформироватьВедомостьПоМакету(ДокументРезультат, ДанныеРасшифровки, МакетОтчета);
    КонецЕсли;

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

Обратим внимание на условие проверки варианта: если наименование пользовательского варианта было переименовано или сброшено, ветка формирования унифицированного макета может пропускаться. Важно убедиться, что обращение к макету идет через контекст ЭтотОбъект.ПолучитьМакет(), а не через прямое обращение к метаданным конфигурации.

Альтернативное решение: использование расширения конфигурации

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

  1. Создадим расширение с назначением Адаптация или Дополнение.
  2. Добавим типовой отчет в расширение.
  3. Переопределим требуемый макет или доработаем процедуру компоновки с помощью директив &Вместо или &После.

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

← На главную