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

14.10.19

Разработка - OneScript

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

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

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

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

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

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

ПРИМЕЧАНИЕ:

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

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

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

  1. Главный скрипт располагается в корне репозитория: "main.os", в каталоге "./src" расположены вспомогательные модули. Для корректной работы в каталоге "OneScript" должна быть библиотека графического интерфейса "C:\Program Files (x86)\OneScript\bin\oscript-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"BSDSQL01\sql_test1"", "Пользователь":"admin", "Пароль":"" },

...

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

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

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

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

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

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

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

Вступайте в нашу телеграмм-группу Инфостарт

OneScript vanessa-runner

См. также

Инструментарий разработчика Сервера OneScript Системный администратор Программист 1С 8.3 Россия Бесплатно (free)

Библиотека для создания многопоточного TCP-сервера, а так же TCP-клиента с поддержкой SSL/TLS шифрования для экосистемы OneScript. Удобный инструмент для построения распределенных систем, высоконагруженных сервисов, систем реального времени. С низким порогом вхождения и подробной документацией с примерами.

12.01.2026    1073    ahyahy    2    

10

Инструментарий разработчика OneScript Работа с интерфейсом Программист Россия Бесплатно (free)

Представляю кроссплатформенную библиотеку для разработки приложений с текстовым пользовательским интерфейсом (TUI) для сценарного языка OneScript. Она использует модель программирования, похожую на классические Desktop GUI (например, WinForms или WPF), но целиком работает в текстовом режиме. Возможно это ностальгия по DOS временам, но в наше время это так же и повышенная скорость отрисовки интерфейса, и легкость в написании скрипта. Создавайте интуитивно понятные окна, кнопки, поля ввода и выпадающие списки. Благодаря OneScript инструмент будет доступен даже новичкам без долгого обучения.

14.11.2025    2954    ahyahy    12    

28

OneScript Мессенджеры и боты Программист Бесплатно (free)

Создаём Telegram-бота для декомпиляции 1С файлов на OneScript и фреймворке Осень. Разберём архитектуру MVC для Telegram-бота. Научимся работать с фреймворком Осень: внедрение зависимостей, аннотации, логирование. Реализуем разбор бинарных файлов (EPF, ERT, CF, CFE.). Упакуем бота в Docker-контейнер

21.08.2025    4099    untru    15    

29

DevOps и автоматизация разработки OneScript Программист Бесплатно (free)

Когда в компании используется более 500 внешних обработок для 20 различных баз, процесс их параллельной разработки превращается в борьбу. Расскажем о тернистом пути от ручных скриптов к масштабируемой DevOps-системе, позволяющей централизованно управлять внешними обработками, автоматизировать сборки, интегрироваться с таск-трекером, запускать автотесты и разворачивать окружение в пару кликов.

12.08.2025    8027    untru    13    

28

OneScript Программист 1С:Предприятие 8 Бесплатно (free)

В 2024 году главному инструменту DevOps в 1С исполнилось 10 лет. Расскажем о том, что представляет собой экосистема 1Script в 2024 году и почему её важно включить в свой рабочий процесс.

16.06.2025    8188    Evil Beaver    43    

59

Групповая разработка (Git, хранилище) EDT OneScript Программист 1С:Предприятие 8 Бесплатно (free)

В данной публикации рассматривается пример реализации скрипта, который автоматизирует получение ветки из GIT репозитория и обновление конфигурации, если разработка проекта ведется в EDT.

11.06.2025    6670    AlexF1    4    

10

WEB-интеграция OneScript Программист Стажер Бесплатно (free)

Библиотека для работы с базами MySQL на основе внешней компоненты. Для Linux и Windows, бесплатно и с открытым исходным кодом!

08.04.2025    6156    bayselonarrend    27    

50

Внешние источники данных OneScript Программист Стажер 1С:Предприятие 8 Бесплатно (free)

Библиотека для работы с базами PostgreSQL на основе внешней компоненты. Для Linux и Windows, бесплатно и с открытым исходным кодом!

20.02.2025    8305    bayselonarrend    30    

46
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Indgo 433 14.10.19 14:24 Сейчас в теме
2. artkor 291 14.10.19 17:54 Сейчас в теме
там скрипт элементарный: читает настройки json-файлика, содержащие параметры подключения к базам. Потом по каждой базе исполняет 2 команды репозитория vanessa-runner, вот и все :)
user1050439; +1 Ответить
Для отправки сообщения требуется регистрация/авторизация