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

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

Обновлятор-1с. Что делать если в базе есть невыполненные обработчики обновления?

Обновлятор >> Инструкции

2020-12-23T18:34:00+00:00

Введение

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

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

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

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

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

Что делать?

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

В этом случае…

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Обновлятор >> Инструкции

Подписывайтесь и получайте новые статьи и обработки на почту (не чаще 1 раза в неделю).
Вступайте в мою группу ВКонтакте, Одноклассниках, Facebook или Google+ — самые последние обработки, исправления ошибок в 1С, всё выкладываю там в первую очередь.

Владимир Милькин

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

Нажмите одну из кнопок, чтобы поделиться:

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

Механизм расширения конфигурации 1C

Приветствую уважаемый читатель, в данной статье предлагаю ознакомиться с Механизмом расширения конфигурации 1С 8.3, в частности мы познакомимся с его работой в режиме Адаптация, а также рассмотрим пример программного изменения Формы объекта при помощи расширения. Ну, а сейчас немного теории…

Как указано в описании: «Механизм расширения конфигурации – это специальный механизм, предназначенный для доработки расширяемой конфигурации без изменения этой конфигурации (в том числе без снятия с поддержки).»

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

При разработке расширений следует учитывать следующие факты:

— в системе могут функционировать более одного расширения.

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

Расширение может иметь одно из следующих назначений:

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

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

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

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

Ограничения использования расширений:

Расширения конфигурации не поддерживают создание следующих собственных объектов:

— Параметры сеанса.

— Общие реквизиты.

— Критерии отбора.

— Подписки на события.

— Регламентные задания.

— Функциональные опции и параметры функциональных опций.

— Определяемые типы.

— Хранилища настроек.

— Языки.

— Константы.

— Журналы документов.

— Бизнес-процессы и задачи.

— Внешние источники данных.

Не поддерживается расширение следующих объектов:

— Нельзя создавать подчиненные подсистемы.

— Если объект не может быть собственным объектом расширения его расширение также не поддерживается.

— Состав значений перечислений;

Не поддерживается добавление реквизитов и табличных частей для:

— План видов характеристик;

— План счетов;

— План видов расчетов.

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

В базовых версиях прикладных решений работа с расширениями не поддерживается.

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

Как добавить расширение конфигурации 1С 8.3

Предлагаю рассмотреть задачу добавления нового Справочника «Категория должности по Классификатору Предприятия» с выводом его значения на Форму Справочника Должности, на базе Конфигурации ЗУП 3.1

Для создания расширения необходимо запустить 1С в режиме конфигуратора.

В конфигураторе необходимо зайти в меню «Конфигурация» и выбрать пункт «Расширения конфигурации». Откроется окно со списком расширений (если они есть). Далее нажмем кнопку «Добавить». Мы увидим диалоговое окно создания расширения:

Стоит отдельно выделить поле Назначение – необходимо выбрать его значение в зависимости от решаемой задачи – т.к. мы выполняем добавление объектов по требованиям конкретного заказчика – нам подойдет вариант «Адаптация».

После нажатия на кнопку «ОК» — двойным кликом по появившейся строке откроем Конфигурацию расширения. Мы увидим практически пустое дерево конфигурации.

Добавим в расширение справочник Категория должности по Классификатору Предприятия. Стоит обратить внимание, что в название всех объектов процедур и функций созданных в расширении, добавляется его префикс (в нашем случае Расш1_);

Разместим наш новый Справочник в Подсистеме «ШтатноеРасписание» для этого необходимо добавить эту подсистему в Расширение – Перейдем в дерево основной Конфигурации и нажмем правой кнопкой мыши на строке с нужной подсистемой и выберем пункт «Добавить в расширение».

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

Далее добавим в расширение Справочник Должности и добавим для него новый реквизит КатегорияДолжности с типом СправочникСсылка.Расш1_КатегорияДолжностиПоКлассификаторуПредприятия

Далее необходимо решить задачу с выводом реквизита КатегорияДолжности на форму Справочника Должности, реализовать это можно двумя способами:

— Интерактивно, добавив Форму «ФормаЭлемента» в расширение

— Программно, не добавляя Форму Справочника в расширении, а добавив подходящую процедуру, вызываемую в обработчике Формы «ПриСозданииНаСервере» в расширение.

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

Интерактивное изменение Формы в расширении.

Для того чтобы вывести Реквизит на форму интерактивно: необходимо добавить саму Форму «ФормаЭлемента» в расширение. Обращу ваше внимание на следующий момент – для того чтобы появилась возможность Интерактивного добавления Реквизита объекта на форму необходимо сам Объект тоже добавить в расширение.

Далее добавим новый Реквизит в подходящую Группу на форме.

Запустив 1С в режиме Предприятия убедимся, что новый Справочник появился в интерфейсе

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

Программное изменение Формы в расширении.

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

Предлагаю воспользоваться одной из процедур вызываемых в обработчике Формы «ПриСозданииНаСервере», в которую передается наша Форма в качестве параметра например УправлениеСвойствами.ПриСозданииНаСервере.

Перейдем в Общий модуль УправлениеСвойствами где находится данная процедура, и кликнем правой кнопкой мыши по процедуре ПриСозданииНаСервере. В выпадающем меню выберем пункт «Добавить в расширение»

Система предложит нам выбрать одну из аннотаций, подробнее о каждой из них рассмотрим в следующих публикациях, а сейчас выберем «Вызывать после»

После проделанных процедур увидим что в Расширение был добавлен общий модуль УправлениеСвойствами и процедура Расш1_ПриСозданииНаСервере с аннотацией &После(«ПриСозданииНаСервере»)

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

//Определим тип, чтобы ограничить добавление реквизитов только нужными нам ФормамиЕсли ТипЗнч(Форма.СсылкаНаобъект) = Тип("СправочникСсылка.Должности") Тогда// Добавим элемент формы "Категория должности"мИмя = "Расш1_КатегорияДолжности"; Если Форма.Элементы.Найти(мИмя) = Неопределено Тогда Элемент = Форма.Элементы.Добавить(мИмя, Тип("ПолеФормы"), Форма.Элементы.ОплатаГруппа); Элемент.Вид = ВидПоляФормы.ПолеВвода; Элемент.ПутьКДанным = "Объект.КатегорияДолжности"; Элемент.Заголовок = "КатегорияДолжности (пр.)"; КонецЕсли;КонецЕсли;

Запустим 1С в режиме предприятия и убедимся, что на форме также появился добавленный реквизит «КатегорияДолжности (пр.)»

Готовое расширение можно выгрузить в файл перейдя в конфигураторе в меню «Конфигурация» и выбрать пункт «Расширения конфигурации». В открывшемся списке расширений по правой кнопкой мыши можно вызвать выпадающее меню, либо выбрать пункт командной панели «Конфигурация» и выбрать пункт «Сохранить конфигурацию в файл…». На выходе мы получим Файл типа *.cfe который можно передать заказчику.

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

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

Назначение

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

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

Расширения

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

Расширения

Сценарии использования

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

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

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

Информация о расширении

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

Устройство

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

Расширения

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

Расширения

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

Подключение расширения

Расширение создаётся в конфигураторе. После того, как оно отлажено и проверено, его можно сохранить в файл:

Расширения

Этот файл можно передать заказчику. Заказчик самостоятельно загрузит его в свою информационную базу в режиме 1С:Предприятие с помощью стандартной функции Управление расширениями конфигурации.

Расширения

Проверка возможности применения

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

Порядок применения расширений

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

Деактивация расширений

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

Добавить комментарий