Многие администраторы и пользователи при обновлении программных продуктов на платформе «1С:Предприятие 8» (например, «1С:Зарплата и управление персоналом» или «1С:Бухгалтерия») в последнее время стали замечать в официальных инструкциях (файл 1cv8upd.htm) новый пункт. Этот пункт настоятельно рекомендует зайти в меню работы с расширениями конфигурации и удалить все объекты, чьи имена начинаются с префикса «EF_».
В этой статье мы подробно разберем, для чего предназначен этот шаг, почему система не всегда выполняет очистку автоматически, к каким критическим последствиям может привести игнорирование данного требования и какими способами можно быстро удалить ненужные патчи.
Префикс «EF_» в названии расширений расшифровывается как Error Fix (исправление ошибки). Такие расширения в экосистеме 1С принято называть патчами (или исправлениями).
Разработчики фирмы «1С» выпускают патчи для оперативного устранения критических программных ошибок, обнаруженных пользователями в текущих релизах конфигураций. Вместо того чтобы выпускать внеплановый полноценный релиз программы (подготовка и тестирование которого требуют значительного времени), фирма «1С» публикует небольшой патч. Этот патч автоматически или вручную загружается в информационную базу как временное расширение конфигурации и исправляет конкретную ошибку «на лету».
Каждое исправление EF_ жестко привязано к конкретному релизу программы. В последующих официальных релизах конфигурации эти ошибки исправляются уже на уровне основного программного кода. Из этого следует важнейшее правило: после обновления конфигурации до нового релиза ранее установленные патчи становятся неактуальными, так как их код уже интегрирован в основную конфигурацию.
Выясним причину, по которой пользователи сталкиваются с необходимостью ручной очистки. Всё дело в выбранном способе обновления конфигурации:
БиблиотекиСтандартныхПодсистем (БСП). Программные обработчики БСП самостоятельно анализируют список установленных патчей, определяют, какие из них больше не применимы к новому релизу, и корректно удаляют их перед началом обновления или на этапе первого запуска.Поддержка — Обновить конфигурацию и выбирает файл обновления .cfu (или полный дистрибутив .cf) — автоматические механизмы БСП не запускаются вовремя. Платформа просто обновляет основную конфигурацию и приступает к реструктуризации базы данных, «не зная» о том, что активные расширения EF_ теперь содержат устаревший и конфликтующий код.Если проигнорировать пункт инструкции и оставить старые расширения EF_ активными после ручного обновления, при первом же запуске программы в режиме «1С:Предприятие» вы гарантированно столкнетесь со следующими проблемами:
&Вместо или &ИзменениеИКонтроль, однако структура и параметры этих методов в новой конфигурации уже изменились.Поэтому удаление неактуальных патчей строго обязательно проводить до того, как вы запустите базу в пользовательском режиме для выполнения реструктуризации и обработок обновления. В случае возникновения ошибок из-за активных расширений пригодится разбор сбоев при обновлении конфигураций на базе БСП.
Рассмотрим стандартный сценарий удаления патчей, который и рекомендуется во встроенной инструкции к обновлению. Выполним следующие шаги:
.cfu) в Конфигураторе и сохранили конфигурацию базы данных (клавиша F7), не торопитесь запускать пользовательский режим.Конфигурация — Расширения конфигурации.EF_.Ctrl или Shift). Поэтому вам придется выделить каждое расширение EF_ по отдельности и нажать кнопку «Удалить» (или клавишу Delete).F5) для завершения обновления.Если вы уже обновили конфигурацию, но база данных все еще запускается (или вы хотите очистить базу перед запуском процесса обновления), гораздо удобнее удалить патчи групповым способом через пользовательский интерфейс. Проанализируем этот путь:
Администрирование — Обслуживание.Обновление программы и перейдите по гиперссылке Установленные исправления (патчи).Ctrl + A или выделяя строки левой кнопкой мыши с зажатой клавишей Ctrl).Для администраторов больших сетей или специалистов, которые автоматизируют процесс обновления множества баз с помощью скриптов (батников), существует возможность пакетной очистки конфигурации от расширений через параметры запуска Конфигуратора. При регулярном обслуживании ручные скрипты часто заменяют на инструмент для автоматического обновления нескольких баз по заданному расписанию.
Рассмотрим пример использования параметров командной строки:
Если вам требуется удалить абсолютно все расширения из базы данных (обратите внимание, что этот способ сотрет и ваши собственные доработки, если они оформлены как расширения, поэтому используйте его с осторожностью):
"C:\Program Files\1cv8\8.3.XX.XXXX\bin\1cv8.exe" DESIGNER /F "ПутьКБазе" /N "Администратор" /P "Пароль" /DeleteCfg -AllExtensions /UpdateDBCfg
Если же необходимо удалить конкретное зависшее расширение по его уникальному имени, используйте следующую конструкцию:
"C:\Program Files\1cv8\8.3.XX.XXXX\bin\1cv8.exe" DESIGNER /F "ПутьКБазе" /N "Администратор" /P "Пароль" /DeleteCfg -Extension "Имя_Расширения_EF" /UpdateDBCfg
Применение таких параметров позволяет полностью автоматизировать рутинный процесс подготовки баз к обновлению без необходимости визуального контроля со стороны администратора. Для построения командных сценариев подойдёт скрипт PowerShell для автоматизации обновления конфигурации 1С.
Подводя итоги, отметим несколько важных правил работы с обновлениями и патчами:
EF_ — это временная мера. Никогда не оставляйте их в базе после перехода на новый релиз.Установленные исправления (патчи)), чтобы сэкономить время на ручном удалении строк в Конфигураторе.