Обработчики обновления 1с где находится

Обновлено: 06.07.2024

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

Таких обработчиков бывает 2 вида: основные и отложенные.

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

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

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

Что делать?

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

Отключаем контроль за обработчиками

. нужно или отключить этот контроль (нежелательный вариант).

Выполняем обработчики в ручном режиме

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

Для этого запустите базу в режиме пользователя.

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

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

В этом меню раскройте раздел "Обработки":


И в нём найдите и откройте подпункт "Результаты обновления программы":


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

И если не все обработчики были выполнены - это будет отражено в этом окне.

Тогда их можно будет открыть по ссылке и запустить на повторное выполнение (через контекстное меню правой кнопкой или через кнопку "Запустить"):

Внимание! Специальная оговорка для серверных баз (раскройте)

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

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

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

Рассмотрим процесс ручного запуска необходимого нам регламентного задания.

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

В открывшемся диалоге раскройте раздел "Обработки". Найдите и откройте там следующий пункт:

Выделите в списке задание "Отложенное обновление ИБ" и запустите его вручную, нажав на кнопку "Выполнить сейчас":

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

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

  • либо есть проблемы в базе на уровне данных (например, неверное заполнение справочников или документов)
  • либо разработчики обновления допустили ошибку в коде проблемного обработчика

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

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

Задействуем специальный механизм при обновлении очень старых серверных баз

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

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

И в этом случае требовалось:

  • или обновлять базу в файловом режиме (что не всегда возможно) - там этой проблемы нет
  • или применять обновления по одному и после каждого из них запускать базу в режиме пользователя и дожидаться выполнения всех отложенных обработчиков

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


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

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

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

Итак, вот как будет действовать обновлятор в этом особом режиме:

  1. Сначала он выполнит все обработчики обновления стандартным способом.
  2. Далее он проверит - остались ли в базе невыполненные отложенные обработчики обновления.
  3. Если такие обработчики остались, то он:
    1. Полностью снимет блокировку сеансов.
    2. Разблокирует запуск регламентных заданий в кластере.
    3. И будет в цикле ожидать пока регламентное задание "Отложенное обновление ИБ" само по расписанию выполнит все отложенные обработчики (то есть переведёт их в состояние "выполнено" или "ошибка"). По умолчанию регламентное задание "Отложенное обновление ИБ" запускается каждую минуту для выполнения очередного обработчика. Вы можете изменить настройки его запуска через расписание регламентного задания. Это может быть полезно для того, чтобы ускорить процесс выполнения отложенных обработчиков, если их много.
    4. После этого обновлятор вернёт блокировку сеансов базы и блокировку регламентных заданий, если они были установлены до этого.

    При таком варианте выполнения обработчиков обновления - отчёт в этой части будет подробным, даже если вы не включили режим отладки.

    Учтите, что отложенные обработчики могут выполняться и 5 минут и 2 часа. И это нормально и зависит от обновления и размера вашей базы. Ещё раз обратите внимание на возможность ускорения выполнения отложенных обработчиков путём изменения расписания запуска регламентного задания "Отложенное обновление ИБ". По умолчанию оно запускается один раз в минуту, выполняет один обработчик и делает паузу ещё на минуту. И если у вас 60 отложенных обработчиков, то этот процесс будет длиться уже 2 часа, хотя его можно прогнать за 20 минут, если настроить запуск регламентного задания, скажем, каждые 10 секунд без паузы.

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

    В противном случае вам нужно будет самому зайти в диспетчер задач и завершить процесс с именем Connector1Cx86.exe или Connector1Cx64.exe. И далее самому проконтролировать в каком состоянии блокировки осталась база и её регламентные задания.

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

    С уважением, Владимир Милькин (преподаватель школы 1С программистов и разработчик обновлятора).

    Как помочь сайту: расскажите (кнопки поделиться ниже) о нём своим друзьям и коллегам. Сделайте это один раз и вы внесете существенный вклад в развитие сайта. На сайте нет рекламы, но чем больше людей им пользуются, тем больше сил у меня для его поддержки.

    Иногда хотелось бы конфигурацию базы данных обновить, но пропустить обработку обновления.


    Причин этому много, основная - ошибки в процессе обновления.

    При этом получить доступ к полному интерфейсу программы невозможно - можно только открыть внешнюю обработку или посмотреть журнал регистрации.
    (Фирма 1С анонсировала ключ запуска приложения ОтключитьЛогикуПриНачалеРаботыСистемы.
    цитирую:

    При этом блокируется открытие всех форм на рабочем столе. Для отладки.

    но у меня это не сработало)

    Поэтому пойдем другим путем. Открываем внешнюю обработку ОтменитьОбновлениеИнформационнойБазы.epf


    и редактируем РегистрСведений.ВерсииПодсистем

    Здесь нужно сделать две вещи:

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


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


    Затем возвращаем все значения регистра в исходное состояние и перезапускаем программу.

    Обработка обновления запустится заново.
    И если вы исправили все ошибки - пройдет успешно.

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

    : Не указана процедура заполнения данных отложенного обработчика обновления "Документы.ТранспортнаяНакладная.ПеренестиДанныеИзРеквизитовВНовыйДокумент".

    хотя 100% был уверен, что у меня и документов таких нет.
    А на нет, как говорится, суда нет.


    Открываем вторую обработку НовыеСведенияОбОбновлении.epf находим

    фильтр поля найти работает и по подстроке


    Нажимаем кнопку - открыть форму удаления обработчика.

    и удаляем сбоящую процедуру.



    После этого запускаем обновление ИБ.

    Не забываем про ключ командной строки ЗапуститьОбновлениеИнформационнойБазы

    Код обработки открыт.

    Проверена на конфигурации Управление торговлей, редакция 11.2 (11.2.2.106)


    P.S. Появился вопрос про относительно старые конфигурации.
    У них при ошибке в обработке обновления нет кнопки "Открыть внешнюю обработку", только "Завершить работу" и "Перезапустить", более того - окно открыто модально.
    Для владельцев базовых версий почти патовая ситуация, т.к. перезапуск приведет к этому же окну.

    Лайфхак невеликий - но выход есть.
    Нажимаете F1, или по ссылке открываете технологический журнал, там будет активна кнопка - "Справка".

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

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

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

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

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

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

    Обновлятор умеет запускать выполнение этих обработчиков в автоматическом режиме для всех типовых баз, используя стандартные механизмы библиотеки стандартных подсистем от 1С (БСП).

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

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

    Во всех этих случаях следует чётко следовать инструкции для того, чтобы всё-таки выполнить все обработчики, прежде чем продолжить обновление.

    Как отключить их выполнение обновлятором

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

    1. В ыделите базу в списке обновлятора и нажмите кнопку "Свойства базы":


    2. Перейдите на закладку "Обновление", раздел "Обработчики" и поставьте галку "Не выполнять обработчики обновления":


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

    С уважением, Владимир Милькин (преподаватель школы 1С программистов и разработчик обновлятора).

    Как помочь сайту: расскажите (кнопки поделиться ниже) о нём своим друзьям и коллегам. Сделайте это один раз и вы внесете существенный вклад в развитие сайта. На сайте нет рекламы, но чем больше людей им пользуются, тем больше сил у меня для его поддержки.

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

    Теперь о том, как вручную выполнить "зависшие" обработки

    1. Открыть ИБ в режиме предприятия
    2. Перейтив в подсистему Администирование
    3. Выбрать ссылку поддержка и обслуживание
    4. Открыть регламентные и фоновые задания
    5. Найти задание "Отложенное обновление ИБ"
    6. Выполнить его столько раз, сколько у Вас повисших процедур

    Надеюсь, сэкономлю кому-нибудь немного времени.

    Специальные предложения

    Electronic Software Distribution

    Интеграция 1С с системой Меркурий

    Алкогольная декларация

    Готовые переносы данных

    54-ФЗ

    Управление проектом на Инфостарте

    Траектория обучения 1С-разработчика

    перепечатали стандартную статью. ))

    - А если этих заданий там нету тогда что!?

    (2) webresurs, Значит проблема, скорее всего, не в заданиях.

    У меня после перехода с УТ 11.1 на УТ 11.2 в клиент-серверном режиме в фоне крутилось больше сотни обработок, и невозможно было обновляться дальше без ожидания их завершения, потому что в следующих релизах эти обработки просто удаляются из модулей! А ты ловишь кучу ошибок "Процедура не найдена. Завершить работу" и приходится откатываться назад. При чем то, что эти обработки в фоне крутятся, можно узнать лишь добравшись через кучу пунктов меню в почти секретное окно результатов обновления, и никак не рассчитать когда это все завершится - через несколько минут или суток. Сидите ждите, и ничего, что вам еще нужно с пяток релизов поставить и работать - куча никому не понятных операций важнее.

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

    Кто вообще это придумал - удалять процедуры и функции в следующем релизе? Кому он мешает? При чем без них база просто не запускается! Хотел бы я знать этого "героя", чтобы сказать спасибо за абсолютно дурацки процесс обновления!

    К тому же одна обработка завершалась с ошибкой, типа "не удалось выполнить". Теперь висит в списке, выполнится не может, из-за нее другие обработки тоже висят со статусом "Выполнено" из из списка не удаляются. Список вообще никак не управляется, статус сменить нельзя, и убрать это надоедливое окно "обновление не выполнено" при каждом запуске базы каждого пользователя невозможно. Наверное придумывали под девизом "Все для пользователя".

    Извините, накипело. Ну хоть кто-то будет предупрежден и не попадется на те же грабли.

    Читайте также: