Как исправить ошибку «Процедура или функция уже определена» при обновлении ЗУП 3.1.18.151 на 3.1.18.189?

Программист 1С v8.3 (Управляемые формы) 1С:Зарплата и Управление Персоналом
← На главную

При переходе на новые релизы программных продуктов 1С:Предприятие технические специалисты часто сталкиваются с коллизиями, вызванными установленными ранее исправлениями (патчами). Одной из наиболее заметных проблем при обновлении 1С:Зарплата и Управление Персоналом (ЗУП) с версии 3.1.18.151 на 3.1.18.189 стала ошибка инициализации модуля EF_1954. В данной статье мы подробно разберем, почему возникает эта ошибка, как ее устранить для различных версий программы и как избежать повторения ситуации.

Анализ причины возникновения ошибки

Рассмотрим природу возникшего конфликта. При запуске программы после обновления системы выдает сообщение о том, что процедуры или функции, такие как ПрочитатьВложенныйНесжатыйАрхив, ПрочитатьАрхивВнутр, ПрочитатьВФайл и ПрочитатьВБуферДвоичныхДанных, уже определены в общем модуле РаботаВМоделиСервиса. Выясним причину этой ситуации.

Разработчики фирмы 1С выпускают патчи (расширения с префиксом EF_) для оперативного исправления критических багов между официальными релизами. В нашем случае патч EF_1954 содержал исправления для работы с архивами в модели сервиса. Однако при выпуске полноценного релиза 3.1.18.189 эти исправления были включены непосредственно в основной код конфигурации. Поскольку патч остался в системе, платформа видит дублирование имен функций в одном и том же контексте, что приводит к критической ошибке компиляции модуля.

Решение проблемы для версий ПРОФ и КОРП

Если вы используете версии ПРОФ или КОРП, процедура удаления конфликтующего расширения наиболее проста, так как у нас есть доступ к управлению расширениями через Конфигуратор. Разберем этот процесс по шагам:

  1. Запустите информационную базу в режиме «Конфигуратор».
  2. Перейдите в меню «Конфигурация» — «Расширения конфигурации».
  3. В открывшемся списке найдите расширение с наименованием, содержащим EF_1954.
  4. Выделите его и нажмите кнопку «Удалить» (или клавишу Del на клавиатуре).
  5. Подтвердите удаление и закройте Конфигуратор.
  6. Запустите программу в режиме «1С:Предприятие» для завершения процедур обновления.

Проанализируем ситуацию, если патчей в системе много. Как отмечают специалисты на форумах, иногда в базе может быть установлено более тридцати исправлений. В этом случае перед масштабным обновлением рекомендуется превентивно удалять все установленные патчи, так как функционал многих из них может быть уже реализован в новом релизе.

Удаление патча в Базовой версии ЗУП

Для пользователей Базовой версии стандартный путь через Конфигуратор недоступен, так как пункт меню «Расширения конфигурации» там отсутствует. В этом случае нам поможет запуск программы с использованием параметров командной строки. Рассмотрим, как это сделать:

Создадим ярлык для запуска или воспользуемся командной строкой (cmd). Нам необходимо выполнить команду удаления конкретного расширения:

"C:\Program Files\1cv8\common\1cestart.exe" /DeleteCfg -Extension EF_1954

Или, если вы работаете через окно запуска, добавьте в поле «Дополнительные параметры запуска» следующую строку:

/DeleteCfg -Extension EF_1954

После выполнения этой команды система принудительно удалит расширение, и конфликт имен будет исчерпан. После успешного входа в программу не забудьте удалить этот параметр из настроек запуска ярлыка.

Как предотвратить повторную загрузку «косячного» патча

Проблема может вернуться, если в базе настроена автоматическая загрузка и установка исправлений. Рассмотрим, как отключить этот механизм, чтобы патч EF_1954 не установился снова до того, как разработчики 1С официально отзовут его с серверов обновлений:

  1. Зайдите в раздел «Администрирование» (или «Обслуживание»).
  2. Найдите пункт «Интернет-поддержка и сервисы».
  3. Перейдите в подраздел «Обновление программы».
  4. Снимите галочку с параметра «Устанавливать исправления (патчи) автоматически».

Также полезно будет проверить регламентные задания. Проанализируем список в разделе «Обслуживание» — «Регламентные операции». Задание «Загрузка и установка исправлений» следует временно отключить до момента, пока ситуация с релизом полностью не стабилизируется.

Дополнительные проблемы: Пропадание данных медосмотров в КОРП

Обновление на релиз 3.1.18.189 может принести еще один сюрприз для пользователей версии КОРП — исчезновение данных о направлениях и заключениях на медосмотры. Выясним, с чем это связано.

В этой ветке релизов произошла серьезная реорганизация подсистемы «Охрана труда». Посмотрим на возможные пути решения этой проблемы:

  1. Проверка функциональных опций: Перейдите в Настройка — Охрана труда. Убедитесь, что флаг Использовать медицинские осмотры установлен. Иногда при обновлении настройки сбрасываются в состояние «по умолчанию».
  2. Завершение отложенного обновления: Данные медосмотров мигрируют в новые структуры данных. Проверьте статус выполнения процедур в Администрирование — Обслуживание — Результаты обновления программы. Если есть невыполненные пересчеты с ошибками, их нужно запустить повторно.
  3. Требования к платформе: Проанализируем используемую платформу. Для корректной работы механизмов расширений в версии 3.1.18 рекомендуется использовать платформу не ниже 8.3.18.1334. Работа на более старых версиях (например, 8.3.18.1208) может провоцировать некорректную обработку данных при обновлении.

Подводя итог, отметим, что большинство проблем при обновлении на 189-й релиз ЗУП решаются именно через очистку списка патчей. Мы рекомендуем всегда делать резервную копию базы перед любыми манипуляциями с расширениями и обновлением конфигурации.

← На главную