Почему при запуске копии базы 1С запускается обработчик обновления конфигурации?

База знаний Одина — Одинэсника Форумы ODIN — Форум по 1С Предприятию Почему при запуске копии базы 1С запускается обработчик обновления конфигурации?

Просмотр 1 ветки ответов
  • Автор
    Записи
    • #38720
      Фото аватараOdineski
      Участник

        почему при запуске копии базы запускается обработчик обновления релиза 1с? Что делать с зависшими обработчиками?

      • #38721
        bot_avaOdin — Одинэсник
        Участник

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

          ## Почему это происходит

          Наиболее частые причины:

          1. Копия сделана во время незавершенного обновления

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

          — новая конфигурация;
          — данные о зарегистрированных объектах;
          — очередь обработчиков;
          — их текущие статусы;
          — признак незавершенного обновления.

          При первом запуске копии 1С продолжает обработку.

          2. Обновление рабочей базы было прервано

          Это может произойти из-за:

          — закрытия Конфигуратора;
          — аварийного завершения процесса 1cv8.exe;
          — отключения электричества;
          — нехватки места на диске;
          — блокировки базы другим пользователем;
          — ошибки в обработчике;
          — тайм-аута или сбоя фонового задания.

          3. Копия была сделана после обновления конфигурации, но до окончания обработки данных

          В 1С обновление состоит не только из замены конфигурации. После обновления структуры могут запускаться длительные обработчики, которые переносят и преобразуют данные.

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

          4. Копия сделана средствами, которые сохранили служебное состояние базы

          Это относится к:

          — копированию файловой базы 1Cv8.1CD;
          — восстановлению резервной копии;
          — копии серверной базы средствами СУБД;
          — выгрузке и загрузке .dt.

          Восстановленная база может продолжить ранее начатое обновление.

          5. Копия запускается на другой версии платформы

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

          ## Что сначала проверить

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

          ### 1. Сделать резервную копию именно зависшей копии

          Для файловой базы нужно скопировать файл:

          Для клиент-серверной базы желательно сделать отдельную резервную копию средствами СУБД.

          Не следует сразу запускать «Тестирование и исправление», удалять записи из служебных регистров или менять статусы обработчиков. Сначала нужно сохранить исходное состояние.

          ### 2. Проверить, есть ли другие пользователи

          В клиент-серверном варианте проверьте активные соединения в консоли администрирования 1С. В файловом варианте проверьте, что файл базы не открыт другими процессами.

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

          ### 3. Посмотреть стандартный отчет о ходе обновления

          В зависимости от конфигурации это может быть:

          — «Результат обновления программы»;
          — «Монитор обновления программы»;
          — форма выполнения отложенных обработчиков;
          — сообщение при запуске информационной базы;
          — раздел администрирования, связанный с обновлением программы.

          В отчете нужно посмотреть:

          — имя обработчика;
          — количество объектов к обработке;
          — текущий прогресс;
          — текст последней ошибки;
          — сколько попыток выполнения уже было;
          — дату последнего запуска.

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

          ## Как отличить медленный обработчик от действительно зависшего

          Обработчик можно считать работающим, если:

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

          Признаки зависания:

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

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

          ## Что делать с зависшим обработчиком

          ### Вариант 1. Дать обработчику завершиться

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

          Для ускорения:

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

          В некоторых конфигурациях в форме результата обновления можно выбрать режим обработки:

          — «Работа пользователей»;
          — «Обработка данных».

          Режим «Обработка данных» обычно обрабатывает данные более интенсивно и может поддерживать несколько потоков. Но его следует применять на копии после проверки, что обработчики не имеют проблем с параллельным выполнением.

          ### Вариант 2. Найти ошибку в журнале регистрации

          Откройте журнал регистрации и отберите события за период запуска обновления. Ищите:

          Ошибка;
          Исключение;
          Обработчик обновления;
          Отложенное обновление;
          — имя обработчика;
          — текст «Объект не найден»;
          — ошибки записи объекта;
          — ошибки нарушения ограничений;
          — ошибки обращения к несуществующему реквизиту или регистру.

          Часто обработчик не является зависшим. Он повторяет попытку, потому что каждый раз встречает один некорректный объект.

          Типовые причины:

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

          После исправления причины обработчик обычно можно запустить повторно.

          ### Вариант 3. Проверить зарегистрированные объекты

          В конфигурациях, где используется стандартный механизм отложенного обновления, может применяться регистр сведений «Обработчики обновления» или аналогичный служебный объект.

          В нем обычно видны:

          — имя обработчика;
          — статус;
          — дата начала;
          — дата последней попытки;
          — количество обработанных объектов;
          — оставшееся количество;
          — сообщение об ошибке.

          Особенно внимательно проверьте обработчики со статусами:

          — «Выполняется»;
          — «Приостановлен»;
          — «Ошибка»;
          — «Ожидает обработки».

          Если обработчик имеет статус «Выполняется», но фактически процесс давно завершился аварийно, на копии иногда можно перевести его в состояние, допускающее повторную обработку. Конкретное название статуса зависит от конфигурации.

          Не меняйте статус без резервной копии. Простая смена статуса не исправляет данные и может только привести к повторному выполнению обработчика.

          ### Вариант 4. Исправить проблемные данные

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

          Например:

          — заполнить отсутствующий реквизит;
          — восстановить владельца;
          — снять ошибочную пометку удаления;
          — перепровести документ, если это допустимо;
          — удалить некорректную запись из копии;
          — исключить объект из обработки, если он не должен участвовать в обновлении.

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

          ### Вариант 5. Запустить базу в режиме отладки обновления

          Для анализа длительных отложенных обработчиков полезен запуск с параметром:

          В этом режиме длительные операции выполняются более прозрачно, что позволяет:

          — увидеть конкретный обработчик;
          — поймать ошибку в отладчике;
          — исследовать параметры;
          — понять, на каком объекте останавливается обработка;
          — анализировать запрос, выполняемый обработчиком.

          Для файловой базы запуск может выглядеть примерно так:

          Для серверной базы вместо /F указываются параметры /S, пользователь и пароль.

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

          ## Можно ли просто удалить зависший обработчик

          Обычно нет.

          Нельзя без анализа:

          — удалять записи из регистра «Обработчики обновления»;
          — очищать регистрацию изменений;
          — удалять служебные записи напрямую через SQL;
          — откатывать дату обновления вручную;
          — загружать старую конфигурацию поверх базы;
          — несколько раз подряд запускать «Тестирование и исправление»;
          — принудительно устанавливать статус «Завершен».

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

          Удаление регистрации допустимо только в обоснованных случаях, например если:

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

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

          ## Если обработчик запускается в копии каждый раз

          Порядок действий:

          1. Закройте все сеансы с копией.
          2. Сделайте копию файла 1Cv8.1CD или резервную копию серверной базы.
          3. Запустите копию монопольно.
          4. Откройте результат обновления программы.
          5. Определите конкретное имя обработчика.
          6. Посмотрите его прогресс и последнюю ошибку.
          7. Проверьте журнал регистрации по этому обработчику.
          8. Исправьте проблемные данные или код обработчика.
          9. Повторно запустите обработку.
          10. Убедитесь, что очередь обработчиков полностью завершена.
          11. Только после этого используйте копию для тестирования или дальнейшего обновления.

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

          ## Когда нужен разработчик

          Разработчик конфигурации нужен, если:

          — обработчик зацикливается;
          — выборка возвращает одни и те же строки;
          — обработчик не учитывает документы расширения;
          — возникает ошибка в типовом коде;
          — обработчики зависят друг от друга;
          — в многопоточном режиме один обработчик использует данные, которые еще не созданы другим;
          — проблема воспроизводится только на большом объеме данных;
          — обработчик постоянно возвращает статус «Выполняется», но количество объектов не меняется.

          В таких случаях анализируют код процедуры обновления, запросы, регистрацию объектов и порядок выполнения обработчиков. Иногда помогает изменение порядка обработчиков: сначала выполняется обработчик, создающий необходимые данные, затем обработчики, которые эти данные используют.

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

      Просмотр 1 ветки ответов
      • Для ответа в этой теме необходимо авторизоваться.
      База знаний 1С