Оглавление
- О каком хранилище идёт речь
- Зачем работа с хранилищем добавлена в обновлятор
- Как настроить обновление рабочей базы из хранилища
- Как обновлятор понимает, что в хранилище есть изменения
- Зачем нужно поле версия
- Можно ли сделать настройку для получения обновлений из хранилища сразу для группы баз
- Покажите пример отчёта обновления из хранилища
- Можно ли использовать настройки хранилища в скриптах обновлятора
О каком хранилище идёт речь
Вот об этом этом (ссылка). В этой статье рассматривается обновление конфигурации, обновление расширений из хранилища рассматривается в другой статье.
Зачем работа с хранилищем добавлена в обновлятор
Обновлятор позволяет получать изменения из хранилища:
- без необходимости подключения рабочей базы к хранилищу
- по расписанию
- для любого количества баз
- с блокировкой базы на время обновления
- с предварительной архивацией базы
- с обновлением БД после обновления конфигурации
- с выполнением обработчиков обновления
Как настроить обновление рабочей базы из хранилища
Заходим в свойства базы и переходим на закладку "Обновление".
Отмечаем галку "Эта база обновляется из хранилища" и заполняем нужные поля:
При этом рабочая база:
- либо вообще не должна быть подключена к хранилищу в конфигураторе
- либо должна быть подключена под тем же пользователем, которого вы указываете в обновляторе для доступа к хранилищу; причём в этом случае пользователь должен быть уникальным, то есть не использоваться для подключения в других базах
Иначе возможна ситуация, когда пользователь хранилища, указанный в обновляторе, уже используется для подключения в другой базе к этому же хранилищу и в этом случае конфигуратор откажется выполнять обновление.
Как обновлятор понимает, что в хранилище есть изменения
Простого способа понять отличается ли текущая конфигурация рабочей базы от конфигурации в хранилище мы с коллегами не нашли.
Была идея при каждой попытки обновления полностью скачивать конфигурацию хранилища и сравнивать с текущей конфигурацией, но мы отказались от неё по ряду причин.
Всё это означает, что если мы запускаем (вручную или по расписанию) обновление конфигурации из хранилища - следующая цепочка действий будет выполняться всегда (вне зависимости от того есть ли реальные изменения в хранилище):
- Блокировка базы.
- Создание резервной копии базы.
- Обновление конфигурации из хранилища (в случае, если реальных изменений в хранилище не было - такое обновление будет "холостым").
- Обновление базы данных (опять же, если конфигурация не менялась, то обновляться ничего не будет).
- Выполнение обработчиков обновления. При этом обновлятор запустит эти обработчики только в том случае, если версия конфигурации после обновления изменилась.
- Разблокировка базы.
Зачем нужно поле версия
Это поле отвечает за номер версии конфигурации хранилища, которую мы получаем.
Если оставить его пустым, то всегда будем получать актуальную (последнюю) версию конфигурации хранилища.
Не нужно путать эту версию, с версией самой конфигурации. Речь идёт вот об этой колонке:
Внимание. Заполнять поле "версия" имеет смысл только в том случае, если рабочая конфигурация не подключена к хранилищу. Если она подключена к хранилищу, то будем всегда получать актуальную версию, несмотря на настройки.
Можно ли сделать настройку для получения обновлений из хранилища сразу для группы баз
Для этого нужно выделить галками нужные базы в списке и нажать кнопку "Волшебная палочка":
В открывшемся диалоге перейти на закладку "Обновления" и заполнить нужные поля:
Покажите пример отчёта обновления из хранилища
Можно ли использовать настройки хранилища в скриптах обновлятора
Да, они уже там, в параметрах:
Плюс я добавил простейший шаблон для обновления конфигурации из хранилища:
Вот как он разворачивается:
Вы видите, что параметр %configuration_repository_auth% включает в себя все параметры для подключения к хранилищу (место хранения, пользователь и пароль).