При переходе на новые версии конфигураций, таких как 1С:Розница (особенно при переходе с версии 2.2 на 2.3) или 1С:Управление торговлей 11, специалисты часто сталкиваются с критической ошибкой, которая прерывает процесс обновления информационной базы. Текст ошибки обычно указывает на метод ПланыОбмена.УдалитьРегистрациюИзменений в общем модуле ОбновлениеИнформационнойБазыСлужебный. Давайте подробно разберем, почему возникает этот сбой, как его предотвратить и какими способами можно восстановить работоспособность базы.
Рассмотрим ситуацию: вы выполняете обновление конфигурации через Конфигуратор. После успешного обновления структуры метаданных вы запускаете систему в режиме «1С:Предприятие», начинается выполнение обработчиков обновления, и вдруг процесс останавливается с системным сообщением:
{ОбщийМодуль.ОбновлениеИнформационнойБазыСлужебный.Модуль(7031)}: Ошибка при вызове метода контекста (УдалитьРегистрациюИзменений): Недопустимое значение параметра (параметр номер '2')
Проанализируем причину на уровне кода. Данная ошибка возникает в механизмах БСП (Библиотеки стандартных подсистем). Метод УдалитьРегистрациюИзменений(Узел, Данные) используется для очистки таблиц регистрации изменений перед выполнением миграции данных. Параметр №2 в этом методе — это объект или тип метаданных, регистрацию которых нужно снять. Ошибка «Недопустимое значение» сигнализирует о том, что система пытается передать туда ссылку на объект, который в новой версии конфигурации был удален, переименован или исключен из состава конкретного плана обмена, но информация о нем все еще сохраняется в физических таблицах базы данных.
Как показывает практика и опыт участников профессиональных форумов, самым эффективным и «быстрым» способом решения является использование встроенного механизма Тестирования и исправления (ТиИ). Это помогает устранить несоответствие между фактическими данными в таблицах и метаданными конфигурации.
Рассмотрим по шагам, какие настройки необходимо выполнить в Конфигураторе:
После завершения ТиИ попробуйте снова запустить 1С:Предприятие. В большинстве случаев процедуры обновления успешно продолжатся с того же места.
Выясним причину, которая часто приводит к подобным сбоям. Ошибка «параметр номер 2» часто возникает у тех пользователей, которые обновляют конфигурацию «прыжками» — накатывают несколько обновлений в Конфигураторе подряд, не запуская режим «Предприятие» между ними.
Важно понимать: при обновлении 1С происходит два этапа:
Если вы пропустили запуск «Предприятия» на промежуточном релизе, программные обработчики не перенесли данные из старых реквизитов в новые. Когда вы накатываете следующий релиз, система может окончательно удалить старые реквизиты, и обработчик обновления из более позднего релиза просто не найдет данных для обработки, что и вызовет ошибку в ПланыОбмена.
Рекомендация: После каждого обновления в Конфигураторе обязательно запускайте 1С:Предприятие от имени администратора и дожидайтесь завершения всех процедур (проверить это можно в разделе Администрирование — Обслуживание — Результаты обновления программы).
Если ТиИ не помогло, проанализируем ситуацию глубже. Иногда проблема кроется в «битых» узлах планов обмена или некорректном кэше метаданных платформы.
Посмотрим на дополнительные действия, которые могут помочь:
%AppData%\1C\1Cv8\. Это исключит ситуацию, когда платформа пытается использовать старое описание метаданных для новых таблиц.Разберем пример того, что происходит «под капотом». В новых версиях БСП используется параллельное отложенное обновление. Система запускает фоновые задания для обработки данных. Если одно из заданий обращается к плану обмена, который был изменен, код может выглядеть так:
Выборка = ПланыОбмена.Выбрать();
Пока Выборка.Следующий() Цикл
// Если Выборка.Узел содержит ссылку на тип, который больше не входит
// в состав плана обмена в новой версии, метод ниже выдаст ошибку.
ПланыОбмена.УдалитьРегистрациюИзменений(Выборка.Ссылка);
КонецЦикла;
Если вы опытный программист, вы можете отловить эту ошибку в отладчике, включив «Остановку по ошибке». Посмотрите значение переменной Выборка.Ссылка (или аналогичной в вашем релизе). Если там указано «Объект не найден» или тип, не соответствующий текущему плану обмена, это подтверждает необходимость реструктуризации базы через ТиИ или ручного удаления этого узла через консоль запросов.
Подводя итог, отметим, что ошибка «Недопустимое значение параметра (параметр номер 2)» — это чаще всего следствие нарушения регламента обновления или накопленных ошибок в структуре таблиц. Использование Тестирования и исправления с обязательной Реструктуризацией является «золотым стандартом» решения данной проблемы.