Отключить процедуры обновления 1с

Обновлено: 08.07.2024

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

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

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

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

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

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

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

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

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

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

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

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


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


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

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

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

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

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

Инструкция 2.0

Запустите конфигуратор и откройте конфигурацию


Откройте модуль обычного приложения и найдите процедуру ПриНачалеРаботыСистемы


Спускаясь ниже по тексту закоментируйте строчки как показано на рисунке (выделено стрелками)


Найдите процедуру ПроверитьЗапускСтартовогоПомощникаИПанелиФункций в конце которой впишите Возврат; как показано на рисунке (выделено стрелкой)

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

Инструкция 3.0

Запустите конфигуратор и откройте конфигурацию

Откройте Общие модули, ОбщегоНазначенияКлиентПереопределяемый и найдите процедуру ПослеНачалаРаботыСистемы


Ниже по тексту процедуры закоментируйте строки как показано на рисунке (выделено стрелками)

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

О назначении

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

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

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

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

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

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

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

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

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

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

Как

За выключение расширений на время выполнения обработчиков обновления отвечает галка "Отключать расширения на время выполнения обработчиков обновления", она находится в свойствах базы на закладке "Обновление":


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


Опцию нельзя отключить для файловых баз

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

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

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

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

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

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

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

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

Что делать?

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

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

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

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

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

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

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

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

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


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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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