Перейти к основному содержимому

Обновление данных приложения для новой версии проекта

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

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

Для решения подобных задач предназначен элемент проекта вида Проект и аннотации @НастройкаПриложения и @ОбновлениеПроекта. Ими следует помечать методы-обработчики, осуществляющие первоначальную настройку приложения, и методы-обработчики, осуществляющие обновление данных, соответственно. Эти события вы можете обработать в модуле проекта.

Элемент проекта вида «Проект»

Элемент Проект описывает все приложение в целом. «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 символов

  • Версия

    Версия проекта поставщика. Во время работы приложения «Исполнитель» отображает ее в диалоге О приложении.

    Тип Версия

РежимСовместимости

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

Тип Строка. Во встроенном языке режим совместимости можно получить с помощью свойства РежимСовместимости типа Проект. Свойство доступно на клиенте и сервере только для чтения.

Свойство РежимСовместимости настраивается следующим образом.

  • Допускается указывать режим совместимости, соответствующий старой версии технологии (не ниже версии 6.0). В таком режиме технология ведет себя как указанная версия:
    • работают старые названия методов, свойств и типов;
    • работают устаревшие формы API;
    • поведение системы соответствует указанной версии технологии.
  • Настройки режима совместимости должны совпадать с настройками приложений и всех библиотек (в том числе транзитивных).
  • Запрещается понижать режим совместимости. После публикации на сервере приложения с режимом совместимости N публикация с настройкой N-1 невозможна.

ЯзыкиЛокализации

Языки, для которых есть перевод интерфейса этого приложения.

Тип ЧитаемыйМассив<Язык>

ЯзыкПоУмолчанию

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

Тип Язык

ЯзыкРазработки

Язык, на котором ведется разработка проекта.

Тип Язык