В процессе обновления конфигураций на базе «Библиотеки стандартных подсистем» (в частности, 1С:Управление торговлей 11) после успешного применения изменений в конфигураторе запускается этап постобработки данных в режиме 1С:Предприятие. Нередко процедура аварийно прерывается, а в журнале регистрации фиксируется сообщение вида:
{(1)}: Метод объекта не обнаружен (ПеренестиАналитикиПеречисленияНалоговДанныеДляОбновления) Документы.ЗаявкаНаРасходованиеДенежныхСредств.ПеренестиАналитикиПеречисленияНалоговДанныеДляОбновления(Параметры[0])
Разберем причины возникновения подобной ситуации, методы отладки и способы успешного завершения обновления информационной базы.
Причины возникновения ошибки
Проанализируем техническую сторону проблемы:
Обращение к модулю менеджера: вызов вида Документы.ИмяДокумента.ИмяМетода() адресуется к модулю менеджера объекта, а не к модулю объекта. Если конфигурация была доработана и объединялась некорректно, модуль менеджера мог остаться от старого релиза либо процедура потеряла ключевое слово Экспорт.
«Хвосты» очереди обновления БСП: список обработчиков регистрируется в служебных таблицах базы. Если ранее база обновлялась с пропуском обязательных промежуточных релизов или процесс прерывался, в очереди мог остаться зарегистрированный вызов метода, который разработчики конфигурации уже удалили из программного кода в более свежих версиях.
Кэширование и повреждение метаданных: некорректно сработавший механизм динамического обновления или поврежденный кэш метаданных могут скрывать актуальные методы от платформы.
Способ 1. Создание процедуры-заглушки в модуле менеджера
Если метод действительно отсутствует в коде конфигурации (был удален разработчиками в новом релизе), но система пытается его выполнить из-за старой записи в очереди обновления, самым быстрым решением является создание временной пустой процедуры.
Рассмотрим порядок действий:
Открываем конфигуратор и находим объект метаданных, указанный в тексте ошибки (например, документ ЗаявкаНаРасходованиеДенежныхСредств).
Открываем Модуль менеджера этого документа.
В самый конец модуля добавляем экспортную процедуру-заглушку:
Процедура ПеренестиАналитикиПеречисленияНалоговДанныеДляОбновления(Параметры) Экспорт
// Заглушка для успешного завершения обновления информационной базы
КонецПроцедуры
Сохраняем конфигурацию базы данных (F7) и повторно запускаем режим 1С:Предприятие для продолжения обновления.
Способ 2. Корректировка очереди обработчиков обновления
Если мы не хотим вносить изменения в конфигурацию, снимем зависшую задачу непосредственно в служебных регистрах БСП. Разберем по шагам:
Запускаем базу в режиме 1С:Предприятие под пользователем с полными административными правами.
Через меню Функции для технического специалиста (или Все функции) открываем регистр сведений ОбработчикиОбновления (в некоторых версиях — ОбработчикиОбновленияОбщихДанных).
Находим запись, в которой фигурирует проблемный метод (например, Документы.ЗаявкаНаРасходованиеДенежныхСредств.ПеренестиАналитикиПеречисленияНалоговДанныеДляОбновления).
Меняем статус обработки на Выполнена либо полностью удаляем данную строку, если актуальность переноса данных утрачена.
Перезапускаем процедуру обновления через раздел НСИ и администрирование → Обслуживание → Результаты обновления программы.
Способ 3. Переход через создание узла РИБ и полное обновление
Если в базе накопились внутренние логические противоречия метаданных или доработок, эффективен метод создания отвязанного узла распределенной информационной базы:
Создаем новый узел планов обмена Полный.
Формируем начальный образ узла РИБ.
Запускаем полученную базу в автономном режиме и отвязываем её от главного узла с помощью команды:
ПланыОбмена.УстановитьГлавныйУзел(Неопределено);
Снимаем конфигурацию с поддержки и накатываем типовой файл конфигурации поставщика (.cf) нужного релиза через команду Конфигурация → Загрузить конфигурацию из файла (что полностью перезаписывает структуру метаданных и удаляет поврежденные куски кода).
Запускаем режим 1С:Предприятие и успешно завершаем обновление.
Особенности отладки процедур обновления
Если требуется точно выяснить, на каком этапе происходит сбой, настроим отладчик платформы:
В меню конфигуратора Отладка → Остановка по ошибке устанавливаем флаг Останавливаться по исключению (в блоке Попытка - Исключение), так как БСП скрывает падения внутри защищенных блоков.
В меню Отладка → Подключение → Автоподключение обязательно активируем флаг Фоновые задания, поскольку отложенные обработчики обновления данных часто выполняются в параллельных фоновых потоках.