Процесс обновления типовых конфигураций 1С, таких как «Бухгалтерия предприятия», «Зарплата и управление персоналом» или «ERP», иногда сопровождается неприятными сюрпризами. Одной из наиболее распространенных проблем в последнее время стала ошибка инициализации модулей, имеющих странные префиксы вроде EF_00_00687314_12. В этой статье мы подробно разберем, почему возникает эта ошибка, что означают эти префиксы и как быстро вернуть систему в рабочее состояние.
Рассмотрим ситуацию: при запуске системы после обновления или непосредственно в процессе применения изменений в Конфигураторе мы видим сообщение об ошибке. Текст ошибки указывает на конкретный объект — ОбщийМодуль.ЭлектронныеДокументыЭДО.Модуль. Основная претензия системы звучит так: «Процедура или функция с указанным именем не определена». Далее следует список методов, которые система «потеряла»:
{EF_00_00687314_12 ОбщийМодуль.ЭлектронныеДокументыЭДО.Модуль(49,3)}: Процедура или функция с указанным именем не определена (ЗаблокироватьДанныеДокументаДляИзменения)
{EF_00_00687314_12 ОбщийМодуль.ЭлектронныеДокументыЭДО.Модуль(52,27)}: Процедура или функция с указанным именем не определена (ТекстЗапросаПараметровОбновленияСостоянияДокумента)
Выясним причину этой технической коллизии. Префикс EF_ (от английского «Error Fix») означает, что в вашей базе установлено расширение-исправление (патч). Эти патчи выпускаются разработчиками 1С для оперативного устранения багов в конкретных релизах, не дожидаясь выхода полноценного обновления конфигурации. Патч «заимствует» код из основной конфигурации и вносит в него правки.
Проблема заключается в том, что когда мы устанавливаем новый полноценный релиз основной программы, разработчики часто проводят рефакторинг кода: удаляют старые процедуры, переименовывают функции или переносят логику в другие модули. Патч, созданный для старой версии, продолжает искать в системе методы (например, ЗаблокироватьДанныеДокументаДляИзменения), которых в новом коде уже не существует. Возникает критическое противоречие, и модуль не может инициализироваться.
Проанализируем самый простой и надежный способ решения — ручное удаление конфликтующих патчей. Поскольку они реализованы как расширения, мы можем управлять ими из соответствующего меню.
EF_. Обратите внимание на назначение этих расширений — обычно это «Исправление».Рассмотрим более современный способ, который доступен в пользовательском режиме (если программа запускается хотя бы в аварийном режиме или ошибка возникла уже после входа). В типовых решениях 1С предусмотрен специальный интерфейс для работы с исправлениями.
Перейдем в раздел «Администрирование», далее выберем пункт «Обслуживание». В открывшемся окне найдем подраздел «Обновление программы» и нажмем на гиперссылку «Установленные исправления (патчи)».
В этом списке мы увидим все патчи, которые были загружены автоматически через интернет-поддержку. Проанализируем состояние списка: если мы видим патчи, привязанные к прошлым версиям программы, нажмем кнопку «Удалить неактуальные исправления». Система сама определит, какие из расширений EF_ больше не соответствуют текущей версии кода, и очистит базу от мусора.
Разберем ситуацию, когда расширение не удаляется или ошибка сохраняется даже после удаления. Часто это происходит из-за того, что в системе «зависли» фоновые задания или кэш сервера хранит старые описания модулей.
Перед проведением манипуляций с патчами крайне рекомендуется выполнить следующие действия:
1C:Enterprise 8.3 Server Agent. Это гарантированно очистит серверный кэш модулей.*.1cLck).Чтобы избежать подобных проблем в будущем, проанализируем правильный алгоритм обновления конфигурации, в которой используются патчи:
Во-первых, перед началом обновления (особенно если вы делаете это вручную через файл .cfu в Конфигураторе) рекомендуется зайти в список расширений и просто снять флаг активности у всех объектов с префиксом EF_. После успешного обновления и первого запуска системы «1С:Предприятие» выполнит автоматическую проверку и сама предложит удалить старые патчи.
Во-вторых, обратим внимание на настройки автоматической загрузки исправлений. Если у вас включена опция «Загружать и устанавливать исправления (патчи) автоматически», система будет стараться поддерживать актуальность этих микро-обновлений. Однако при переходе на крупные релизы (например, с 3.0.140 на 3.0.150) механизм автоматики иногда дает сбой, и ручное вмешательство, описанное выше, становится единственным выходом.
Конкретная ошибка, которую мы рассматривали, касалась общего модуля ЭлектронныеДокументыЭДО. Это происходит потому, что подсистема электронного документооборота является одной из самых динамично меняющихся. Законодательство в сфере ЭДО (форматы счетов-фактур, машиночитаемые доверенности — МЧД) меняется часто, и 1С выпускает десятки патчей в месяц именно для этого функционала.
Если после удаления патча EF_00_00687314_12 и успешного входа в программу вы обнаружили, что какие-то функции ЭДО работают некорректно, просто выполните «Поиск и установку исправлений» через раздел «Обслуживание». Система скачает новые патчи, которые уже адаптированы под ваш текущий релиз и не содержат обращений к несуществующим процедурам ЗаблокироватьДанныеДокументаДляИзменения или НовыеДополненияСостоянийЭДО.
Таким образом, мы выяснили, что ошибка не является признаком «поломки» базы данных. Это всего лишь конфликт временных исправлений с новой структурой кода, который легко решается очисткой списка расширений.