Что делать, если в 1С не выполнены дополнительные процедуры обработки данных при обновлении

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

При обновлении типовых конфигураций (например, 1С:Бухгалтерия 3.0, ЗУП 3.1 или ERP) пользователи часто сталкиваются с ситуацией, когда после успешного обновления метаданных в конфигураторе программа отказывается запускаться в пользовательском режиме. Появляется сообщение: «Не выполнены дополнительные процедуры обработки данных. Доп. процедуры обработки данных на предыдущую версию не завершены. Рекомендуется выполнить восстановление из резервной копии и дождаться их выполнения». Рассмотрим подробно, почему возникает эта ситуация и как её исправить без потери данных.

Почему возникает эта ошибка и в чем ее суть

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

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

Способ 1. Проверка и запуск через пользовательский интерфейс

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

  1. Перейдем в раздел АдминистрированиеОбслуживание.
  2. Раскроем подраздел Результаты обновления программы и выберем одноименную гиперссылку.
  3. В открывшемся окне мы увидим список процедур. Если написано «Выполняются дополнительные процедуры...», значит, процесс идет, но медленно.

Разберем настройки приоритета в этом окне. Мы можем выбрать один из двух вариантов:

Способ 2. Принудительный запуск регламентного задания

Часто в клиент-серверных версиях (SQL) выполнение процедур стоит на месте, так как блокировка регламентных заданий включена в консоли администрирования сервера 1С. Выясним, как запустить процесс «пинком»:

  1. Перейдем в АдминистрированиеОбслуживаниеРегламентные и фоновые задания (иногда требуется обойти блокировку заданий в копии базы).
  2. Найдем в списке задание с наименованием Отложенное обновление ИБ (для удобства поиска можно использовать альтернативную консоль заданий).
  3. Нажмем кнопку Выполнить сейчас. Если задание не запускается, проверим, не установлена ли галочка «Блокировка регламентных заданий» в свойствах информационной базы в консоли сервера 1С.

Способ 3. Использование программного кода для принудительного запуска

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

Нам необходимо выполнить следующий код от имени администратора:


// Принудительный запуск отложенных обработчиков обновления
ОбновлениеИнформационнойБазыСлужебный.ВыполнитьОтложенноеОбновлениеСейчас();

Этот метод инициирует последовательное выполнение всех незавершенных процедур в текущем сеансе. Обратите внимание: выполнение может занять длительное время (от нескольких минут до нескольких часов), в зависимости от объема данных и количества пропущенных релизов.

Способ 4. Изменение режима выполнения процедур (для «зависших» задач)

Бывают ситуации, когда процедура обновления падает в ошибку (например, из-за «битых» ссылок в базе) и при повторном запуске снова останавливается — для решения этой проблемы есть обработка удаления битых ссылок в 1С без монопольного режима. Рассмотрим, как проанализировать такие случаи через форму Результаты обновления:

  1. Найдем процедуру, помеченную значком ошибки.
  2. Попробуем сменить режим выполнения. В некоторых случаях помогает переключение из режима «Отложенно» в режим «Оперативно». Это заставит систему выполнить процедуру не в фоновом задании, а в основном потоке.
  3. Если процедура висит слишком долго (например, «Заполнение банковского счета в регистре»), проанализируем Журнал регистрации. Возможно, там зафиксирована ошибка блокировки или недостаточность прав пользователя, под которым запущено фоновое задание.

Способ 5. Работа с регистрами сведений (для продвинутых пользователей)

Проанализируем ситуацию через «внутренности» системы. За состояние обновления отвечают несколько технических регистров (для их автоматического исправления и очистки есть обработка диагностики регистров и удаления битых ссылок). Вы можете найти их через меню «Функции для технического специалиста»:

Важно: Ручное редактирование этих данных крайне не рекомендуется, так как это может привести к нарушению логической целостности базы. Используйте этот метод только для диагностики (посмотреть, на каком ID объекта «споткнулась» программа).

Решение проблемы «Итератор для значения не определен»

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

  1. Очистите кэш сервера и локальный кэш пользователя.
  2. Установите последние патчи (исправления) через АдминистрированиеОбслуживаниеОбновление программыУстановленные исправления (патчи).
  3. Если патчей нет, единственным выходом может стать временное комментирование проверки в общем модуле (например, в процедуре ПередНачаломРаботыСистемы2 модуля ОбновлениеИнформационнойБазыКлиент), чтобы просто зайти в базу и выгрузить нужные данные, но помните, что это временная мера, и полноценная работа в такой базе невозможна до завершения процедур.

Рекомендации по профилактике

Чтобы не сталкиваться с подобными сообщениями в будущем, возьмем за правило:

Следуя этим инструкциям, мы сможем корректно завершить обновление базы, сохранив целостность данных и избежав необходимости восстанавливаться из копии и терять наработанные документы.

← На главную