Как решить ошибку при обновлении 1С:ЗУП 3.1.18.46 на '1С:БЭД: обновление подписываемых видов электронных документов'?

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

При обновлении конфигурации 1С:Зарплата и управление персоналом (ЗУП) до версии 3.1.18.46 многие пользователи сталкиваются с затруднениями, особенно на этапах обработки данных, связанных с 1С:БЭД (Библиотека электронных документов). Типовая ошибка проявляется как зависание процесса на шагах "1С:БЭД: обновление подписываемых видов электронных документов" и "1С:БЭД: обновление состояний подписания электронных документов", часто сопровождаясь сообщением "Значение не является значением объектного типа (ПолноеИмя)".

Эта проблема может вызвать значительные трудности, особенно когда необходимо срочно обновить конфигурацию для сдачи отчетности, например, СЗВ-М или СЗВ-ТД. В этой статье мы подробно рассмотрим несколько проверенных способов решения данной проблемы, опираясь на опыт сообщества 1С.

Основные причины возникновения ошибки

Прежде чем перейти к решениям, давайте кратко проанализируем, почему может возникать эта ошибка:

  1. Ошибки в коде обработчиков обновления: Иногда сами обработчики обновления содержат ошибки, например, пропущенный оператор Возврат или некорректная обработка данных, что приводит к зависанию или сбою.
  2. Конфликты с расширениями: Установленные ранее расширения конфигурации могут конфликтовать с новыми обработчиками обновления, блокируя их выполнение.
  3. Проблемы с многопоточным выполнением: Некоторые обработчики могут некорректно работать в многопоточном режиме, что приводит к взаимоблокировкам или неверному завершению.
  4. Недостаток системных ресурсов: На клиент-серверных базах недостаток оперативной памяти или низкая производительность сервера могут усугублять проблему, приводя к таймаутам и зависаниям.
  5. Отсутствие необходимых промежуточных обновлений: Если обновление не проводилось давно, могут потребоваться специальные промежуточные версии или патчи, чтобы корректно применить все изменения.

Решение 1: Применение патчей и корректировка флагов в регистре сведений

Этот метод является одним из наиболее часто применяемых и эффективных, поскольку он направлен на исправление корневых причин проблемы, выявленных разработчиками и сообществом 1С.

Шаг 1: Подготовка и обновление конфигурации

  1. Создайте резервную копию базы данных: Это критически важный шаг перед любыми изменениями.
  2. Обновите конфигурацию до версии 3.1.18.46: Запустите обновление в режиме Конфигуратора.
  3. Удалите старые расширения: Если у вас есть ранее установленные расширения (например, EF_1698, EF_1830 или другие), которые могут конфликтовать с новой версией, рекомендуется их удалить перед первым запуском обновленной базы. Часто именно старые расширения могут вызывать ошибки после обновления. Для этого в Конфигураторе откройте Конфигурация - Расширения конфигурации, выберите ненужные расширения и удалите их.
  4. Установите новые патчи (исправления):

    Необходимо установить два ключевых патча, которые устраняют известные ошибки в обработчиках обновления 1С:БЭД:

    • EF_00_00367659: Этот патч исправляет ошибку, связанную с пропущенным оператором Возврат в модуле регистра сведений СостояниеПодписанияЭД, что приводило к некорректной логике выполнения обработчика.
    • EF_00_00369391: Этот патч направлен на решение проблемы незавершения обработчика обновления "Обновление состояний подписания электронных документов".

    Для установки патчей:

    1. Загрузите файлы патчей с сайта поддержки 1С.
    2. Распакуйте архивы патчей.
    3. В режиме Конфигуратора откройте Конфигурация - Расширения конфигурации.
    4. Нажмите кнопку Добавить и выберите пункт Загрузить расширение из файла. Укажите файл расширения из распакованного патча. Повторите для второго патча.
    5. Убедитесь, что оба расширения активны (установлен флажок Активно).

Шаг 2: Корректировка регистра сведений "ОбработчикиОбновления"

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

  1. Запустите 1С:Предприятие в режиме пользователя.
  2. Откройте "Функции для технического специалиста":

    Если у вас не отображаются "Все функции" или "Функции для технического специалиста", выполните следующие действия:

    • Нажмите на значок Сервис и Настройки (две полоски и стрелка вниз) в правом верхнем углу.
    • Выберите Настройка - Параметры.
    • Установите флажок Режим технического специалиста.
    • После этого снова откройте Сервис и Настройки и выберите Функции для технического специалиста.
  3. Найдите регистр сведений "ОбработчикиОбновления":

    В открывшемся окне "Функции для технического специалиста" найдите раздел Регистры сведений и в нем выберите ОбработчикиОбновления.

  4. Снимите флаг "Многопоточный":

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

    Некоторые пользователи также сообщали о необходимости снять флажок Обработка порции завершена для этого же обработчика, если он установлен. Мы рекомендуем проверить и его состояние.

Шаг 3: Запуск отложенного обновления

После всех подготовительных действий запустите процесс отложенного обновления:

  1. Запустите 1С:Предприятие в режиме отладки: Мы рекомендуем использовать параметр запуска /C ЗапуститьОтложенноеОбновлениеСейчас. Для этого в Конфигураторе откройте Сервис - Параметры - Запуск 1С Предприятия, добавьте этот параметр в соответствующее поле и запустите базу в режиме отладки (F5).
  2. Разблокируйте регламентные задания (при необходимости): Если вы ранее блокировали выполнение регламентных заданий в приложении "Администрирование серверов 1С Предприятия", убедитесь, что они разблокированы.
  3. Дождитесь завершения обработки: Процесс отложенного обновления должен пройти без ошибок. Вы можете контролировать его выполнение через Функции для технического специалиста -> Регламентные задания или Операции -> Результаты обновления программы.

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

Решение 2: Обновление через файловую версию базы

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

Шаг 1: Выгрузка базы в файловый режим

  1. Создайте резервную копию базы данных: Всегда начинаем с этого шага.
  2. Выгрузите информационную базу: В Конфигураторе откройте Администрирование - Выгрузить информационную базу. Сохраните базу в файл формата .dt.

Шаг 2: Создание новой файловой базы и загрузка данных

  1. Создайте новую пустую информационную базу: При создании укажите тип базы "Файловая информационная база".
  2. Загрузите данные: В Конфигураторе новой файловой базы откройте Администрирование - Загрузить информационную базу и укажите сохраненный ранее файл .dt.

Шаг 3: Обновление файловой базы

  1. Запустите обновление: Обновите конфигурацию новой файловой базы до версии 3.1.18.46 через Конфигуратор.
  2. Примените патчи (опционально, но рекомендуется): Если у вас есть патчи EF_00_00367659 и EF_00_00369391, установите их и в файловую базу.
  3. Запустите 1С:Предприятие: После обновления конфигурации запустите базу в пользовательском режиме для выполнения отложенных обработчиков. В файловой базе они обычно выполняются быстрее и без проблем, связанных с клиент-серверным взаимодействием или регламентными заданиями. Если обновление остановится на каком-то шаге, попробуйте еще раз нажать кнопку "Запустить" в окне отложенного обновления.

Шаг 4: Загрузка обновленной базы обратно на сервер

  1. Выгрузите обновленную файловую базу: После успешного обновления и выполнения всех отложенных обработчиков, снова выгрузите базу в файл .dt.
  2. Загрузите на сервер: Загрузите этот файл .dt в вашу клиент-серверную базу.

Этот метод позволяет обойти проблемы с фоновыми заданиями и особенностями клиент-серверного режима, поскольку в файловой базе все операции выполняются локально.

Решение 3: Ручная корректировка статуса и запуск обработчика

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

Шаг 1: Определение проблемного обработчика

  1. Откройте "Функции для технического специалиста" и "ОбработчикиОбновления", как описано в Шаге 2 Решения 1.
  2. Определите зависший обработчик: Это может быть РегистрыСведений.ПодписываемыеВидыЭД.ОбработатьДанныеДляПереходаНаНовуюВерсию или РегистрыСведений.СостояниеПодписанияЭД.ОбработатьДанныеДляПереходаНаНовуюВерсию.

Шаг 2: Ручное изменение статуса

  1. Установите флаг "Обработка завершена": Откройте запись проблемного обработчика и установите флаг Обработка завершена (или Выполнено, в зависимости от версии).
  2. Снимите флаг "Многопоточный" и "Обработка порции завершена": Как уже упоминалось, для проблемных обработчиков с 1С:БЭД это может помочь.

Шаг 3: Принудительный вызов процедуры (при необходимости)

Если вы уверены, что обработчик должен был выполниться, но завис, и его статус был установлен вручную, вы можете попробовать вызвать его процедуру через универсальную обработку.

  1. Используйте универсальную обработку: Откройте любую обработку, позволяющую выполнять произвольный код (например, "Выполнение произвольного кода" из Инструментов разработчика или аналогичную).
  2. Вызовите процедуру: Выполните код, который вызывает процедуру обработчика, например:
    
    РегистрыСведений.СостояниеПодписанияЭД.ОбработатьДанныеДляПереходаНаНовуюВерсию(Новый Структура("ОбработкаЗавершена", Ложь));
    // Параметр может быть пустым или содержать дополнительные данные в зависимости от процедуры
    

    Внимание: Этот шаг требует глубокого понимания логики обработчиков и может привести к непредсказуемым последствиям при неправильном использовании. Мы рекомендуем его только опытным специалистам и исключительно на резервной копии базы.

Решение 4: Отключение старых расширений

Иногда ошибка может быть вызвана конфликтом со старыми, неактуальными или несовместимыми расширениями.

  1. Проверьте список расширений: В Конфигураторе откройте Конфигурация - Расширения конфигурации.
  2. Отключите или удалите расширения: Если вы видите расширения, которые больше не нужны или вызывают ошибки (например, EF_1698), попробуйте их временно отключить (снять флажок Активно) или удалить.
  3. Повторите обновление: После отключения расширений попробуйте снова запустить процесс обновления.

Дополнительные рекомендации и советы

Мы рассмотрели наиболее эффективные и проверенные методы решения проблемы при обновлении 1С:ЗУП 3.1.18.46. Помните, что каждый случай может быть уникальным, и возможно потребуется комбинация этих подходов. Всегда делайте резервные копии перед внесением любых изменений в базу данных!

← На главную