Оглавление
Описание ошибки
Пример сообщения при ошибке: "{EF_10215746 ОбщийМодуль.УчетВзаиморасчетов.Модуль(2, 9)}: Процедура или функция с указанным именем уже определена (Подготовить таблицыЗачетаАвансовКассовыйМетод)".
Причина возникновения ошибки
В современных типовых конфигурациях появилось такое понятие как патчи (исправления), которые на самом деле представляют из себя уже знакомые нам расширения.
И получается, что разработчик, выпустив какое-то обновление к конфигурации, далее выпускает эти самые патчи, чтобы исправить обнаруженные в обновлении ошибки.
Патчи можно безболезненно устанавливать и удалять (это ведь на самом деле расширения) - причём это можно делать при работающих пользователях.
Установленный патч начинает работать у пользователя только после перезапуска открытой у него базы.
Но каждый патч предназначен лишь для определенной версии конфигурации, а значит после очередного обновления все устаревшие патчи должны быть удалены.
И вот если этого не сделать - возникает описанная выше ошибка.
Как устранить возникшую ошибку
Прежде всего обновите ваш обновлятор на последнюю доступную на сайте версию.
Начиная с версии обновлятора от 6 декабря 2019 года я предусмотрел выполнение необходимых процедур при выполнении обработчиков обновления. Эти процедуры удаляют из конфигурации устаревшие патчи (речь идёт о вызове функции 'ИсправленияИзменены' из общего модуля 'ОбновлениеКонфигурации').
Но что делать, если ошибка уже возникла?
Первый способ устранения ошибки
Откройте базу в режиме пользователя.
Если база не запускается в режиме пользователя - удалите проблемное расширение через конфигуратор.Зайдите в раздел "Администрирование" пункт "Обслуживание":
Далее раскройте подраздел "Обновление программы" и выберите пункт "Установленные исправления (патчи)":
В открывшемся окне удалите все установленные исправления:
После этого перезапустите 1с и убедитесь, что ошибка исчезла.
Используйте версию обновлятора после 6 декабря 2019 года, чтобы эта ошибка не возникла вновь (так как он автоматически удаляет устаревшие патчи при выполнении обработчиков обновления).
Второй способ устранения ошибки
Первый способ может быть трудоёмким, если у вас несколько десятков баз. Сейчас я покажу как можно выполнить удаление устаревших патчей при помощи обновлятора сразу во всех базах.
Внимание, если у вас базовая 1с, то этот способ не сработает. В этом случае вам нужно удалить проблемное расширение по имени (оно есть в описании ошибки, например EF_10215746) при помощи другого скрипта - вот он.Прежде всего обновляем обновлятор на последнюю версию (не ранее 6 декабря 2019 года).
Далее запускаем обновлятор и переходим на закладку "Скрипты":