Как исправить ошибку «Слишком много фактических параметров» при обновлении 1С:УНФ?

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

При обновлении типовых конфигураций иногда возникают непредвиденные ситуации. Сегодня мы разберем по шагам довольно распространенную проблему, с которой сталкиваются пользователи программы 1С:Управление нашей фирмой (УНФ). Речь идет об ошибке, возникающей на этапе выполнения дополнительных процедур обновления данных.

Проанализируем ситуацию. После запуска обновления базы в пользовательском режиме процесс прерывается со следующим служебным сообщением: Процедура "ОбновлениеИнформационнойБазыУНФ.УдалитьНеИспользуемыеОчередиЗадачОбменаССайтом" обработки данных завершилась с ошибкой: Слишком много фактических параметров...

Выясним причину такого поведения системы. Ошибка «Слишком много фактических параметров» имеет сугубо программный характер. Она означает, что при вызове определенного метода в него передается больше аргументов, чем прописано в его определении. В данном случае разработчики фирмы «1С» изменили логику работы процедуры в подсистеме обмена с сайтом (часто эта проблема проявлялась в ветке релизов 1.6.24), но вызывающий механизм остался старым. Так как процедура УдалитьНеИспользуемыеОчередиЗадачОбменаССайтом запускается как фоновое задание через подсистему ДлительныеОперации, стандартные методы перезапуска не всегда приносят результат.

Давайте рассмотрим подробнее несколько способов решения этой задачи, начиная от самого надежного (программного) и заканчивая пользовательскими методами.

Способ 1: Программное исправление параметров процедуры (самый надежный метод)

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

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

Процедура УдалитьНеИспользуемыеОчередиЗадачОбменаССайтом() Экспорт
    // Исходный код процедуры
КонецПроцедуры

Нам необходимо добавить в скобки входящий параметр. Измените строку объявления процедуры следующим образом:


Процедура УдалитьНеИспользуемыеОчередиЗадачОбменаССайтом(Параметры) Экспорт
    // Код процедуры остается без изменений
КонецПроцедуры

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

Способ 2: Тестирование и исправление информационной базы (ТиИ)

Если вы не хотите вмешиваться в программный код 1С, рассмотрим альтернативный вариант. Некоторым администраторам баз данных помогает штатный механизм тестирования. Из-за некорректных ссылок в базе фоновые задания обмена могут зависать или передавать неверный контекст.

Разберем порядок действий:

  1. Обязательно сделайте бекап базы (выгрузку в .dt или копию средствами СУБД).
  2. Дождитесь, когда в системе не останется активных пользователей.
  3. Откройте Конфигуратор и перейдите в меню Администрирование — Тестирование и исправление...
  4. В настройках установите галочки на проверку логической и ссылочной целостности, а также реструктуризацию таблиц. Индексацию можно пропустить, если база большая.
  5. В блоке настроек действий при наличии ссылок на несуществующие объекты выберите «Очищать ссылки», а при частичной потере данных — «Создавать объекты».
  6. Запустите процесс кнопкой «Выполнить» и дождитесь окончания.

После завершения ТиИ зайдите в режим предприятия и проверьте список дополнительных процедур обработки данных. Процедура УдалитьНеИспользуемыеОчередиЗадачОбменаССайтом должна выполниться без ошибок.

Способ 3: Очистка кэша платформы и откат на резервную копию

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

Что нужно сделать:

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

Дополнительные рекомендации по обновлению

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

← На главную