Автоматическое сравнение-объединение баз данных с мини-конфигурацией



Представляю вашему вниманию скрипт на OneScript для автоматического сравнения-объединения по правилам («мержевания») конфигураций нескольких баз с мини-конфигурацией.

Изначальная задача была следующая:

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

Главной проблемой являлось то, что мини-конфигурация, содержащая подсистему управления файлами постоянно дорабатывалась (и меняется по сей день), а баз различного вида есть большое множество: самописки, доработанные типовые итд… И это не считая копий для разработок для каждого "разраба".

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

По "корпоративным" причинам саму мини-конфигурацию не афиширую, в репозитории есть некая тестовая заготовка "/fixtures/ПрисоединенныеФайлы.cf" — примитивный аналог рабочей конфигурации, которая работает через веб-сервис по принципу "документооборота": передает xdto-сообщения по специализированному формату.

ПРИМЕЧАНИЕ:

  • Файлы с расширением *.os необходимо ассоциировать с исполняемым файлом "C:Program Files (x86)OneScriptinoscript.exe"
  • в каталоге "OneScript" должна быть библиотека графического интерфейса "C:Program Files (x86)OneScriptinoscript-simple-gui.dll"

Сам проект расположен на гитхабе по адресу https://github.com/artkor83/SubsystemForBases1C.

Краткое описание

  1. Главный скрипт располагается в корне репозитория: "main.os", в каталоге "./src" расположены вспомогательные модули. Для корректной работы в каталоге "OneScript" должна быть библиотека графического интерфейса "C:Program Files (x86)OneScriptinoscript-simple-gui.dll".

  2. Настройки для обработки баз данных хранятся в файле "./fixtures/DBSettings.json".

    в файле содержатся параметры соединения к головной БД, соединения с обновляемыми БД и прочие параметры

  3. Пробный файл настроек сравенения хранится в файле "./fixtures/MergeSettings_БФДок.xml": содержит настройки сравнения/объединения с файлом.

  4. Тестовая конфигурация в файле "./fixtures/ПрисоединенныеФайлы.cf".

 

Принцип работы

1. Основные доработки конфигурации производятся в головной базе, которая в json-файле настроек обозначена как "Главная БД":

"ГлавнаяБД": { "Имя":"БСД_ПрисоединенныеФайлы", "СтрокаПодключения":"/F"D:Bases_1CПрисоединенныеФайлы"", "Пользователь":"admin", "Пароль":"" }

2. Все дочерние базы, которые находятся в секции "БД" подлежат автоматическому сравнению- объединению с главной конфигурацией "Главная БД", доработки в дочерних базах НЕ производятся: см. секцию "БД":

"БД": [ { "Имя":"sql_test1", "СтрокаПодключения":"/S"BSDSQL01sql_test1"", "Пользователь":"admin", "Пароль":"" },

3. Если поведение функционала в различных конфигурациях отличается — то первоначальное сравнение-объединение — необходимо сначала произвести вручную — с указанием файла настроек сравнения "./fixtures/MergeSettings_БФДок.xml": см. скриншот

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

4. По окончанию последующих доработок конфигурации в базе "ГлавнаяБД" необходимо перенести эти доработки в другие конфигурации. При этом ни одна из перечисленных в json-файле баз не должна быть открыта конфигуратором.

Для автоматического объединения нажимаем main.os — откроется окно визуального интерфейса обработки.

5. Выбираем базы данных для объединения с основной конфигурацией

6. Если достаточно просто сравнить-объединить без сохранения конфигурации БД — не снимаем флаг "только сравнить-объединить", тогда после отработки дочерняя конфигурация будет с "зеленым цилиндром":

7. Для сравнения-объединения нажимаем "Обновить базы данных" — после этого читаем логи исполнения команды

2 Comments

  1. ogidni

    Reply
  2. artkor

    там скрипт элементарный: читает настройки json-файлика, содержащие параметры подключения к базам. Потом по каждой базе исполняет 2 команды репозитория vanessa-runner, вот и все 🙂

    Reply

Leave a Comment

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