Изначальная задача была следующая:
- имеем некий "парк" баз данных различного типа и состава — при этом в каждую из баз данных нужно было встроить общую подсистему: некий интерфейс, который обращается к общей "архивной" базе, которая содержит различные файлы.
- В любой из баз должна была быть общая команда, которая позволяет прицепить файл (добавить, заменить) а также просмотреть все приложенные к объекту (контрагенту/договору) файлы.
Главной проблемой являлось то, что мини-конфигурация, содержащая подсистему управления файлами постоянно дорабатывалась (и меняется по сей день), а баз различного вида есть большое множество: самописки, доработанные типовые итд… И это не считая копий для разработок для каждого "разраба".
Дабы избавиться от "кайфа" периодического ручного обновления всех баз после каждой незначительной корректировки кода/форм в мини-базе решено было написать специальный скрипт обновления в среде 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.
Краткое описание
-
Главный скрипт располагается в корне репозитория: "main.os", в каталоге "./src" расположены вспомогательные модули. Для корректной работы в каталоге "OneScript" должна быть библиотека графического интерфейса "C:Program Files (x86)OneScriptinoscript-simple-gui.dll".
-
Настройки для обработки баз данных хранятся в файле "./fixtures/DBSettings.json".
в файле содержатся параметры соединения к головной БД, соединения с обновляемыми БД и прочие параметры
-
Пробный файл настроек сравенения хранится в файле "./fixtures/MergeSettings_БФДок.xml": содержит настройки сравнения/объединения с файлом.
-
Тестовая конфигурация в файле "./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. Для сравнения-объединения нажимаем "Обновить базы данных" — после этого читаем логи исполнения команды
там скрипт элементарный: читает настройки json-файлика, содержащие параметры подключения к базам. Потом по каждой базе исполняет 2 команды репозитория vanessa-runner, вот и все 🙂