Обновление данных приложения для новой версии проекта
В процессе развития проекта возникают ситуации, когда при переходе на новую версию проекта нужно обновить данные, которые содержатся в приложении.
Другой пример — когда приложение содержит какие-то стандартные классификаторы, которые обновляются со временем. При переходе на новую версию проекта нужно обновить тот классификатор, который уже используется в приложении.
Для решения подобных задач предназначен элемент проекта вида Проект и аннотации @НастройкаПриложения
и @ОбновлениеПроекта
. Ими следует помечать методы-обработчики, осуществляющие первоначальную настройку приложения, и методы-обработчики, осуществляющие обновление данных, соответственно. Эти события вы можете обработать в модуле проекта.
Элемент проекта вида «Проект»
Элемент Проект описывает все приложение в целом. «1С:Исполнитель» автоматически создает такой элемент в новом проекте. Он расп оложен в самом верху проекта.
Тип «Проект»
Для проекта целиком «1С:Исполнитель» создает один тип встроенного языка — Проект
. Этот тип доступен и на сервере, и на клиенте.
Этот тип не имеет конструктора и имеет единственный экземпляр, который доступен как свойство глобального контекста:
// Получить менеджера проекта
пер МенеджерПроекта = Проект
Модуль проекта
В проекте модуль, расширяющий тип Проект
, называется модулем проекта. Он исполняется на сервере.
В этот модуль вы можете добавить обработчики первоначальной настройки и обновления данных приложения.
Обработчик первоначальной настройки приложения
Чтобы метод осуществлял первоначальные настройки приложения, его следует пометить аннотацией @НастройкаПриложения(Ид, Номер)
. Обработчик первоначальной настройки вызывается при первом применении проекта. Параметры аннотации:
- идентификатор алгоритма настройки — служит для того, чтобы однозначно отличать один обработчик от другого и не допустить повторного выполнения;
- порядковый номер выполнения — определяет порядок выполнения обработчиков настройки приложения.
Идентификатор и номер должны быть уникальны в рамках приложения. Идентификатор не может совпадать с идентификаторами в аннотации @ОбновлениеПроекта
.
Аннотацию @НастройкаПриложения
можно использовать только на методах без параметров или с единственным параметром типа Версия
. Пример:
@НастройкаПриложения(Ид="ЗапускРегламентныхЗаданий", Номер = 1)
метод ВключитьЗапланированныеЗадания()
ОбменДанными.ВключитьЗаданиеПоОбменуИзмениями()
;
Обработчик обновления данных приложения
Чтобы метод осуществлял обновление данных приложения, его следует пометить аннотацией @ОбновлениеПроекта(Ид, Номер)
. Обработчи к обновления данных запускается, если изменился номер версии, указанный в описании проекта (и если при этом обработчик не вызывался ранее). При создании приложения все существующие обработчики обновления помечаются как выполненные и не вызываются при следующем обновлении приложения.
Параметры аннотации:
- идентификатор алгоритма настройки — служит для того, чтобы однозначно отличать один обработчик от другого и не допустить повторного выполнения;
- порядковый номер выполнения — определяет порядок выполнения обработчиков обновления проекта.
Идентификатор и номер должны быть уникальны в рамках приложения. Идентификатор не может совпадать с идентификаторами, используемыми в аннотации @НастройкаПриложения
.
Аннотацию @ОбновлениеПроекта
можно использовать только на методах без параметров либо на методах, принимающих два параметра типа Версия
(исходная и целевая версии).
Таким образом, в методе, помеченном данной аннотацией, вы можете адаптировать существующие пользовательские данные к логике новой версии приложения. Например, возвращаясь к прим ерам в начале, вы можете обойти все заявки и в новый реквизит АвторРешенияСтрокой записать ФИО того сотрудника, который указан в реквизите АвторРешения, или можете дописать в классификатор новые данные.
@ОбновлениеПроекта(Ид="ДобавлениеНовогоРеквизита", Номер=1)
метод ОбновитьДанные(ИсходнаяВерсия : Версия, ЦелеваяВерсия : Версия)
если ИсходнаяВерсия < Версия{3.0.0}
// Обновить до целевой версии
...
;
;
Аннотации @НастройкаПриложения
и @ОбновлениеПроекта
можно использовать только в модуле проекта.
Эти обработчики исполняются в режиме без проверок прав доступа, и все подсистемы считаются используемыми.
Во время их работы у экземпляров типов «Исполнителя» отключается вызов обработчиков всех событий, кроме событий вычисления разрешений доступа и ключей доступа. События вычисления разрешений и ключей «Исполнитель» вызовет не в момент записи сущностей, а отложенно, после того как завершится исполнение обработчиков настройки и обновления приложения, но до того как будет завершено обновление приложения.
Свойства элемента проекта вида «Проект»
Пример описания проекта:
Id: 3654b904-7806-44d2-93d7-72d11b768f14
Представление: "Демонстрационное приложение"
Версия: 1.0
Поставщик: e1c
Имя: ДемонстрационноеПриложение
ПредставлениеПоставщика: "e1c"
РежимСовместимости: 7.0
ЯзыкиЛокализации: [Русский, Английский]
ЯзыкПоУмолчанию: Русск ий
ЯзыкРазработки: Русский
Версия
Версия проекта. Во время работы приложения «Исполнитель» отображает ее в диалоге О приложении.
Тип Версия
Имя
Имя проекта. На значение свойства накладываются ограничения в соответствии с правилами формирования имен языка, так как оно входит в пространство имен проекта.
Тип Строка, не более 200 символов
ОбновлениеСВерсии
Минимальная версия, с которой можно применить обновление на текущий проект. Значение ОбновлениеСВерсии должно быть не больше, чем значение Версия.
Тип Версия
Поставщик
Имя, уникально идентифицирующее поставщика проекта — организацию или группу разработчиков, которая занимается разработкой и поддержкой проекта, а также обладает авторскими правами на него. На значение свойства накладываются ограничения в соответствии с правилами формирования имен языка, так как оно входит в пространство имен проекта.
Тип Строка, не более 200 символов
Представление
Название проекта, понятное пользователю. Во время работы приложения «Исполнитель» отображает его в диалоге О приложении.
Обязательное, тип Строка, не более 200 символов
ПредставлениеПоставщика
Название организации или группы разработчиков, которая занимается разработкой и поддержкой проекта, а также обладает авторскими правами на него. Во время работы приложения «Исполнитель» отображает его в диалоге О приложении.
Тип Строка, не более 200 символов
НаОсновеПроекта
Это поле заполняется при создании проекта на основе проекта поставщика и обновляется при переводе на новую версию проекта поставщика. Содержит следующую информацию о проекте:
-
Поставщик
Имя поставщика проекта. На значение свойства накладываются ограничения в соответствии с правилами формирования имен языка, так как оно входит в пространство имен.
Тип Строка, не более 200 символов
-
Имя
Имя проекта поставщика. На значение свойства накладываются ограничения в соответствии с правилами формирования имен языка, так как оно входит в пространство имен.
Тип Строка, не более 200 символов
-
Версия
Версия проекта поставщика. Во время работы приложения «Исполнитель» отображает ее в диалоге О приложении.
Тип
Версия