При обновлении типовой конфигурации «1С:Бухгалтерия предприятия 3.0» через несколько релизов (особенно за большой период времени) многие администраторы и программисты накатывают файлы обновлений (.cfu) последовательно исключительно в режиме «Конфигуратор». Однако при первом запуске программы в режиме «1С:Предприятие» процесс реструктуризации и конвертации данных может аварийно завершиться ошибкой вида:
{ОбщийМодуль.УправлениеДоступомБП.Модуль(683)}: Метод объекта не обнаружен (РолиРедактированияДанных)
Разберем подробнее, почему возникает данный сбой в механизмах Библиотеки стандартных подсистем (БСП) и какими путями можно восстановить работоспособность информационной базы.
Причина возникновения сбоя
Выясним причину такого поведения платформы и конфигурации:
При обновлении только структуры метаданных в конфигураторе регистр сведений ВерсииПодсистем в базе данных сохраняет номер начального релиза (например, 3.0.42).
При первом запуске пользовательского сеанса БСП считывает текущую версию данных и запускает непрерывную цепочку отложенных и обязательных процедур обновления данных за все пропущенные релизы по очереди.
Процедуры обновления, написанные разработчиками для старых релизов, обращаются к методам общих модулей, которые в финальном релизе конфигурации (например, 3.0.46) уже были удалены, переименованы или перенесены в другие модули подсистемы зарплаты и кадров.
Так как программный код модулей уже соответствует финальному релизу, обращение к методу УчетЗарплаты.РолиРедактированияДанных() вызывает исключение «Метод объекта не обнаружен».
Способ 1. Быстрое устранение через функцию-заглушку (без отката базы)
Если обновление уже выполнено, а времени на повторную пошаговую установку релизов нет, применим быстрое решение с созданием временной заглушки в коде:
Откроем информационную базу в режиме Конфигуратор.
В меню Конфигурация перейдем в Поддержка → Настройка поддержки и включим возможность изменения конфигурации с сохранением поддержки (если база была на полной поддержке).
Найдем общий модуль УчетЗарплаты и добавим в его конец экспортную функцию-заглушку:
Функция РолиРедактированияДанных() Экспорт
Возврат Новый Массив;
КонецФункции
Сохраним конфигурацию и применим изменения структуры базы данных (клавиша F7).
Запустим режим 1С:Предприятие. Процедура обновления данных успешно пройдет проблемный участок и дойдет до 100%.
После завершения всех процедур обновления вернем конфигурацию на полную типовую поддержку. Для этого в режиме конфигуратора выполним операцию Конфигурация → Поддержка → Обновить конфигурацию (или сравнение/объединение с исходным типовым файлом поставки .cf актуального релиза) и снимем признак редактирования, вернув замок.
Способ 2. Восстановление копии и пошаговое обновление с запуском предприятия
Рассмотрим правильный регламент перехода через так называемые «узловые» релизы:
Восстановим информационную базу из архивной копии, сделанной до начала обновления.
Применим пакет обновления до первого промежуточного узлового релиза.
Обязательно запустим режим «1С:Предприятие» и дождемся завершения всех регламентных процедур обработки данных (сообщение «Обновление программы успешно завершено»).
Закроем пользовательский режим, откроем Конфигуратор и установим следующий релиз.
Повторим запуск пользовательского режима для каждого промежуточного шага вплоть до целевого релиза.
Способ 3. Диагностика обработчиков обновления и очистка кэша
Проанализируем дополнительные действия, если процесс обновления зависает или выдает сопутствующие системные ошибки:
Очистка временных файлов платформы. Удалим кэш конфигурации и пользователя в системных каталогах %LOCALAPPDATA%\1C\1Cv8 и %APPDATA%\1C\1Cv8 либо перерегистрируем базу в списке запуска 1С.
Контроль через Журнал регистрации. Запустим базу из командной строки с параметром /C ЗапуститьОбновлениеИнформационнойБазы. В случае ошибки откроем Журнал регистрации и найдем событие обновления БСП, чтобы узнать точное имя упавшего обработчика.
Тестирование и исправление. В меню Администрирование → Тестирование и исправление... выполним пункты:
Реструктуризация таблиц информационной базы;
Проверка логической целостности;
Проверка ссылочной целостности.
Выгрузка и загрузка через DT. Выполним выгрузку информационной базы в файл .dt и загрузим его в новую чистую базу для исключения повреждений внутренних таблиц.