При обновлении конфигурации 1С:Управление торговлей (в частности, при переходе с редакции 11.1 на 11.2) администраторы и разработчики нередко сталкиваются с ситуацией, когда регламентные или отложенные процедуры обновления завершаются с критической ошибкой. В отчете подсистемы «Результаты обновления программы» процедура помечается красным маркером, а в описании ошибки фигурирует обращение к несуществующей таблице базы данных или удаленному регистру.
Рассмотрим подробно причины возникновения такой коллизии и разберем по шагам, как локализовать и устранить проблему.
Проанализируем ситуацию: при переходе между мажорными версиями конфигурации (например, с ветки 11.1 на 11.2) структура метаданных претерпевает существенные изменения. Целый ряд регистров накопления и сведений упраздняется, а данные переносятся в новые сущности. Сбой обработчиков может происходить по следующим причинам:
ВариантыОтчетов, системные хранилища настроек ХранилищеВариантовОтчетов и ХранилищеПользовательскихНастроекОтчетов). Если в конфигурации остались нетиповые отчеты или старые варианты, где в тексте запроса СКД остались обращения к удаленным регистрам, алгоритм БСП завершается аварийно при попытке валидации схемы.Выясним причину сбоя с помощью системного журнала. Для этого перейдем в раздел НСИ и администрирование → Обслуживание → Журнал регистрации и установим отбор:
Обновление информационной базы.Ошибки.Если в тексте ошибки фигурирует обращение к удаленному регистру из схемы компоновки данных, выполним следующие действия:
F7.Далее перейдем в режим 1С:Предприятие и удалим битые настройки вариантов отчетов, которые могли сохраниться в информационной базе:
ВариантыОтчетов).После удаления конфликтных схем и настроек необходимо принудительно перезапустить незавершенные обработчики БСП. Разберем, как это сделать:
Если требуется выполнить отложенное обновление принудительно в текущем сеансе, можно воспользоваться вызовом программного метода БСП через внешнюю обработку:
// Принудительный запуск отложенных обработчиков обновления
ОбновлениеИнформационнойБазы.ВыполнитьОтложенноеОбновлениеСейчас();
В исключительных случаях, когда обработчик пытается обработать данные таблицы, которая была полностью удалена разработчиками конфигурации, и перенос этих данных более не требуется, можно вручную скорректировать состояние процедуры:
ОбработчикиОбновления (в некоторых версиях — ОбработчикиОбновленияИнформационнойБазы).Важно: При обновлении между редакциями (например, 11.1 → 11.2) строго соблюдайте порядок обновления, указанный в файле 1cv8upd.htm. Не выполняйте накат конфигураций через несколько версий подряд без промежуточного запуска базы в режиме предприятия для отработки регламентных процедур БСП.