Как исправить зацикливание обновления УТ 11 и ошибки регламентных заданий по функциональным опциям

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

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

Проблема 1. Зацикливание процедуры «Документы.ЗаказКлиента.ОбработатьДанныеДляПереходаНаНовуюВерсию»

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

Процедура "Документы.ЗаказКлиента.ОбработатьДанныеДляПереходаНаНовуюВерсию" обработки данных завершилась с ошибкой: {ОбщийМодуль.ОбновлениеИнформационнойБазыСлужебный.Модуль(4328)}: Произошло зацикливание процедуры обработки данных. Выполнение прервано. ВызватьИсключение ТекстИсключения;

При этом в Журнале регистрации фиксируется список документов (например, 181 документ), которые не удалось обработать, но детальная причина сбоя не расшифровывается.

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

Рассмотрим подробнее четыре эффективных метода решения этой проблемы.

Метод 1. Снятие проблемных документов с регистрации на служебных узлах обмена (Рекомендуемый способ)

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

  1. Откроем базу данных в режиме «1С:Предприятие» под пользователем с полными правами.
  2. Перейдем в меню «Функции для технического специалиста» (в старых версиях — «Все функции») и найдем стандартную обработку «Регистрация изменений для обмена». Если меню недоступно, воспользуемся внешней обработкой регистрации изменений.
  3. В открывшейся форме найдем служебный план обмена, который БСП создает специально для процедур обновления (обычно он называется ОбновлениеИнформационнойБазы или имеет схожее служебное наименование).
  4. Выберем узел обмена, соответствующий нашему незавершенному обработчику. В списке зарегистрированных объектов мы увидим именно те документы Заказ клиента, на которых спотыкается обновление.
  5. Выделим эти документы и полностью удалим их из регистрации на данном узле обмена. Перед этим рекомендуется выгрузить список этих документов или скопировать их номера из Журнала регистрации, чтобы вернуться к ним позже.
  6. После очистки регистрации перейдем к форме монитора обновлений. Для этого вставим в навигационную строку 1С ссылку: e1cib/app/Обработка.РезультатыОбновленияПрограммы.
  7. В открывшемся окне найдем наш проблемный обработчик обновлений, выделим его и нажмем кнопку «Сбросить счетчик ошибок» (или «Продолжить выполнение»). Система продолжит отложенное обновление, успешно пропустив данные документы.

Метод 2. Тестирование и исправление физической структуры базы данных

Часто причиной зацикливания является логическая или физическая целостность таблиц базы данных СУБД (например, сбой индекса таблицы заказов или наличие битых ссылок в реквизитах документов). Для предварительного выявления и исправления таких дефектов в объектах базы подойдёт обработка для поиска пустых реквизитов и битых ссылок.

Выполним тестирование и исправление (ТиИ) базы данных перед повторным запуском обновления:

  1. Запустим базу в режиме Конфигуратора. Предварительно обязательно сделаем резервную копию (архив) базы данных!
  2. Перейдем в меню Администрирование — Тестирование и исправление...
  3. Установим следующие флаги:
    • Реиндексация таблиц информационной базы (позволяет вылечить сбой индексов);
    • Проверка логической целостности информационной базы;
    • Проверка ссылочной целостности информационной базы.
  4. В правилах обработки незавершенных ссылок выберем вариант «Очищать ссылки» (или «Создавать объекты» с установкой признака «создавать новые элементы/документы» для выявления битых ссылок).
  5. Нажмем кнопку «Выполнить» и дождемся окончания процесса. После этого запустим базу в режиме «1С:Предприятие» и проверим работу обработчика обновлений.

Метод 3. Локализация ошибки через отладку и временный обход в коде

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

Проанализируем ситуацию с помощью отладчика:

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

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


Процедура ОбработатьДанныеДляПереходаНаНовуюВерсию(Параметры) Экспорт
    // Временный обход зацикливания для успешного завершения обновления базы
    Возврат; 
    
    // Далее идет оригинальный код обработчика, который временно не будет выполняться
    ...
КонецПроцедуры

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

Метод 4. Обход проблемы через выгрузку и загрузку XML

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

Разберем этот алгоритм:

  1. Создадим резервную копию рабочей информационной базы.
  2. С помощью типовой обработки «Выгрузка и загрузка данных XML» выгрузим проблемные 181 документ Заказ клиента во внешний файл. При выгрузке снимем флаг «Выгружать сгенерированные объекты» (чтобы не тянуть за собой всю историю связанных движений, если это не требуется).
  3. Удалим эти 181 документ из рабочей базы (желательно непосредственно через удаление объектов, чтобы очистить все ссылки).
  4. Запустим процедуру обновления. Она должна пройти без ошибок, так как проблемные данные в базе теперь отсутствуют.
  5. После успешного завершения обновления загрузим ранее сохраненные документы обратно из файла XML в рабочую базу с помощью той же обработки.
  6. Перепроведем загруженные документы, чтобы новые регистры заполнились актуальными движениями по правилам нового релиза.

Проблема 2. Ошибка «Регламентное задание недоступно по функциональным опциям или не поддерживает работу в текущем режиме работы программы»

Другая распространенная проблема после обновления конфигурации — появление в Журнале регистрации постоянных ошибок, связанных с регламентными заданиями. Чаще всего страдают задания Обновление данных о доступности товаров для внешних пользователей и Обновление индекса ППД.

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

Разберем способы решения для каждого случая.

Сценарий А. Ошибка задания «Обновление данных о доступности товаров для внешних пользователей»

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

Если вы не используете функционал самообслуживания внешних пользователей:

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

Если вы используете этот функционал или планируете его задействовать:

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

Сценарий Б. Ошибка задания «Обновление индекса ППД» (Полнотекстовый поиск данных)

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

Для исправления ситуации выполним следующие действия:

  1. Перейдем в НСИ и администрирование — Общие настройки — Полнотекстовый поиск данных.
  2. Если полнотекстовый поиск вам не нужен, снимите флаг Полнотекстовый поиск данных. Чтобы полностью убрать ошибки из журнала, перейдите в список регламентных заданий и отключите задания Обновление индекса ППД и Слияние индекса ППД.
  3. Если поиск вам необходим, включите флаг Полнотекстовый поиск данных. Нажмите кнопку «Очистить индекс», а затем выполните его первоначальное заполнение кнопкой «Обновить индекс». После этого регламентные задания будут выполняться в штатном режиме.

Рекомендации по платформе 1С:Предприятие и кэшу конфигурации

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

Настоятельно рекомендуется использовать версию платформы не ниже рекомендованной производителем для текущего релиза конфигурации (для актуальных версий УТ 11 это платформы линеек 8.3.18, 8.3.21 и выше).

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

← На главную