При обновлении конфигураций на базе 1С:Предприятие 8.3 специалисты часто сталкиваются с непредвиденными остановками процесса. Рассмотрим подробнее одну из таких ситуаций на примере 1С:Бухгалтерия 3.0. В момент запуска информационной базы после обновления может появиться критическая ошибка вида: Метод объекта не обнаружен (УстановкаКонстантыПриОбновленииИнформационнойБазы) с указанием конкретной константы, например ИспользоватьПеремещениеТоваров.
Проанализируем ситуацию: платформа пытается вызвать процедуру обработчика обновления, но физически не находит её в коде модулей. Разберем по шагам, выясним причину такого поведения базы данных и детально опишем алгоритм устранения этой ошибки.
Глубинная причина ошибки кроется в серьезной рассинхронизации между вашей текущей конфигурацией базы данных и оригинальной конфигурацией поставщика (от фирмы 1С). Зачастую это последствия того, что в прошлом кто-то обновил базу некорректно. Например, вместо штатного пункта «Обновить конфигурацию» (с использованием файла .cfu) применялась команда «Загрузить конфигурацию из файла» с выбором .cf. Из-за этого нарушаются внутренние идентификаторы объектов.
В результате объекты «слетают» с правильной поддержки, и при всех последующих обновлениях новые процедуры от разработчиков просто не добавляются в общие модули или модули менеджеров. Платформа 1С запускает обработчик обновления информационной базы, обращается к методу УстановкаКонстантыПриОбновленииИнформационнойБазы, не находит его и выдает ошибку. Для диагностики и быстрого поиска подобных расхождений в коде модулей можно использовать инструмент для анализа конфигураций на ошибки вызова экспортных процедур.
Перед тем как вносить серьезные изменения в конфигуратор, рассмотрим базовое действие — очистку кэша. Часто платформа 1С «не видит» новую процедуру, которая фактически уже была добавлена в конфигурацию при обновлении, из-за поврежденных временных файлов.
Для очистки кэша необходимо закрыть 1С и удалить папки с длинными буквенно-цифровыми названиями в профиле пользователя ОС Windows по путям Local и Roaming в директории 1C/1cv8. Иногда это простое действие решает проблему без дополнительных манипуляций.
Посмотрим на пример кода, который платформа ожидает увидеть в модуле менеджера константы. Если ошибка возникает на конкретной константе, можно попробовать добавить недостающий метод вручную (однако это часто приводит к появлению аналогичной ошибки на следующем объекте).
Код процедуры для добавления в модуль менеджера константы ИспользоватьПеремещениеТоваров:
Процедура УстановкаКонстантыПриОбновленииИнформационнойБазы() Экспорт
ИспользоватьПеремещениеТоваров = Константы.ИспользоватьНесколькоСкладов.Получить() И Константы.ИспользоватьДокументыПоступления.Получить();
Константы.ИспользоватьПеремещениеТоваров.Установить(ИспользоватьПеремещениеТоваров);
КонецПроцедуры
Но, как показывает практика, добавление одной процедуры приводит к ошибке Метод объекта не обнаружен (УстановкаЗначенияПриОбновленииИнформационнойБазы) уже для другой константы. Поэтому перейдем к правильному, системному решению проблемы.
Если кэш очищен, а ошибка сохраняется, нам необходимо восстановить конфигурацию поставщика. Разберем по шагам, как это правильно сделать с сохранением возможных доработок вашей информационной базы.
.cf) точно такого же релиза, на котором ваша база находится в данный момент.Данная процедура восстанавливает правильную «невидимую» связь объектов вашей базы данных с конфигурацией поставщика 1С. После этого последующие обновления будут корректно добавлять все новые процедуры и функции в модули.
Важный момент, который часто упускают: в современных конфигурациях, таких как 1С:Бухгалтерия 3.0, недостаточно просто дождаться зеленой галочки после обновления. Рассмотрим подробнее работу обработчиков.
Многие процедуры модификации данных (включая заполнение новых констант) выполняются в фоновом режиме. Необходимо зайти в пользовательском режиме в раздел Администрирование -> Обслуживание -> Результаты обновления программы и убедиться, что абсолютно все отложенные процедуры выполнились со статусом «Успешно».
Если хотя бы один обработчик предыдущего релиза «завис» или завершился с ошибкой, обновляться на следующий релиз нельзя. Незавершенные обработчики часто не успевают создать нужные записи, к которым обращается логика следующего обновления, что и вызывает сбои с методами вроде УстановкаКонстантыПриОбновленииИнформационнойБазы.
В завершение проанализируем еще одну возможность. В современных реалиях фирма 1С оперативно выпускает исправления (патчи) для выявленных ошибок релизов. Бывают ситуации, когда ошибка вызвана не вашими действиями, а недочетом самих разработчиков (например, они действительно забыли добавить экспортную процедуру в конкретный дистрибутив).
Перед началом сложного обновления или при возникновении неочевидных ошибок, проверьте наличие опубликованных патчей к текущему и целевому релизам. Установка патчей через раздел администрирования может автоматически внедрить недостающий код и позволить платформе успешно завершить итерацию обновления.