Автообновление конфигурации, не подключенной к хранилищу






Конфигурация поможет обновить любую БД, не подключенную к хранилищу, объектами из хранилища

Добрый день.

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

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

Основные функции:

— получение списка изменений хранилища, возможно с группировкой и отбором

— обновление основной конфигурации обновляемой базы с помощью выгрузки XML из конфигураций хранилища

— обновление основной конфигурации обновляемой базы полной загрузкой конфигурации хранилища

— выгрузка cf файла, содержащего выбранные изменения относительно обновляемой конфигурации (для ручного сравнения/объединения)

— сохранение истории обновления (сохраняются объекты и версии хранилища, загруженные в обновляемую базу, и номер версии хранилища, на которую обновлена база (при полной загрузке))

— отдельное обновление конфигурации БД обновляемой базы

 

Итак, начнем.

Для начала нужно заполнить справочник "Базы". Там необходимо ввести строку подключения к БД, Пользователя и Пароль.

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

Обязательно заполнить поле "База обновлена на версию хранилища". Это номер версии хранилища, к которому приведена наша БД и начиная с которого будет получаться история изменений. Этот реквизит будет изменяться при полном обновлении конфигурации на определенную версию хранилища.

Далее нужно выбрать разрешено ли делать загрузку напрямую в обновляемую БД — это поле "Загружать напрямую в базу". Если оно установлено в значение ИСТИНА, то программа загрузит необходимые объекты в основную конфигурацию обновляемой базы и предложит обновить конфигурацию БД. Если ЛОЖЬ, то станет видимым поле "Каталог результата" —  это путь к папке, в которую будет выгружен файл Result.cf — результирующий cf, содержащий в себе конфигурацию — результат загрузки объектов в обновляемую конфигурацию, которая при сравнении/объединении с обновляемой конфой покажет различия только в выбранных объектах.

Поле "Разрешить динамическое обновление" говорит само за себя — при попытке обновления конфигурации БД обновляемой базы будет или не будет разрешено динамическое обновление.

Опционально можно заполнить "Код доступа" и "Дополнительные параметры запуска". Код доступа нужен, когда установлена блокировка установки соединений с БД (параметр /UC пакетного запуска). Дополнительные параметры можно перечислить, если есть необходимость. Они будут добавлены в команду пакетного запуска конфигуратора (Например, "/NoProxy /debug " и т.д.)

 

Основные команды (кнопки в главном окне):

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

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

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

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

Выгрузить cf с изменениями (не видна при загрузке напрямую в базу, сохраняет историю обновления) — так же как и "Обновить базу через XML" анализирует выбранные объекты и в результате выгружает cf файл, содержащий при сравнении/объединении с обновляемой базой только выбранные изменения. Можно использовать, когда есть необходимость контролировать изменения, которые попадут в базу.

Выгрузить cf хранилища <номер версии> (не видна при загрузке напрямую в базу, не сохраняет историю обновления) — выгружает в cf файл выбранную в основном онке версию хранилища.

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

Так же на форме есть кнопки устновить/снять все флажки и снять/установить флажок на текущей строке. На текущей строке флажок снимается/устанавливается так же двойным кликом.

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

8 Comments

  1. artbear

    Плюс за автоматизацию.

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

    Reply
  2. Tracerdim

    (1) а у нас есть специальный человек, который выбирает объекты и версии, которые должны попасть в базу, поэтому ручной выбор.

    P.S. там была галочка автообновления по расписанию, но я ее выпилил. Выпущу в обновлении

    Reply
  3. artbear

    Какое узкое место этот ваш человек 🙁

    Мы этот путь проходили, не гуд

    Reply
  4. Tracerdim

    (3) а как вы обновляетесь? каждый программист свое загружает в боевую базу?

    Reply
  5. artbear

    (4) делается релиз, формируется файл поставки.

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

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

    Если что-то не удается завершить, через возможность настройки закрываем функционал или откатываем его.

    Ну и тесты + код-ревью — наше все 🙂 без них никак.

    Reply
  6. Tracerdim

    (5)ну мы так проекты делаем по скраму. А вот поддержку почему-то наши ананлитики не хотят по скраму и релизы. Вот и приходится

    Reply
  7. artbear

    (6) поддержке по скраму будет тяжко, да.

    но ведь какой-то процесс у них есть? или все на живую, правим в бою, регламентных окон нет или минимум, динамическое обновление рулит?

    Reply
  8. Tracerdim

    (7)не не не. Никакого динамического. Поэтому и спец человек, который в нерабочее время обновляет ))

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *