[oscript] Проверка подключения рабочей базы к хранилищу

11.12.20

Разработка - Групповая разработка (Git, хранилище)

В этой публикации описывается опыт создания скрипта для проверки подключения рабочей базы к хранилищу конфигурации.

Файлы

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование Скачано Купить файл
Скрипт проверки подключения базы к хранилищу:
.os 6,67Kb
6 2 500 руб. Купить

Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний

Оформите подписку на компанию для решения рабочих задач

Оформить подписку и скачать решение со скидкой

Вы можете заказать платную доработку или адаптацию этой разработки под вашу конфигурацию на «Бирже заказов».

  • 0% комиссии — оплата напрямую исполнителю;
  • Исполнители любого масштаба — от отдельных специалистов до команд под проект;
  • Прямой обмен контактами между заказчиком и исполнителем;
  • Безопасная сделка — при необходимости;
  • Рейтинги, кейсы и прозрачная система откликов.

Oscript позволяет программисту 1С делать чудеса за короткое время.

Возникла задача - нужно отслеживать статус подключения рабочей базы (списка рабочих баз) к хранилищу.

Обычно такое решается административным способом (дать по рукам тому, кто отключил базу от хранилища, и обещать при повторении ситуации оторвать руки совсем), но все же стало интересно, можно ли решить эту задачу православным oscript.

А как вообще мы понимаем, подключена база к хранилищу или нет? При запуске конфигуратора и открытии конфигурации появляется окно авторизации в хранилище. Но это руками, а как машина будет определять? Пакетный режим запуска конфигуратора точно имеет возможность работы с хранилищем, помнится, есть ключи "/ConfigurationRepositoryF". Значит, остается только выяснить, можно ли это сделать с помощью oscript.

Конечно, можно!

 

У oscript есть библиотека InternetMail, реализующая функционал работы с электронными письмами, отлично, воспользуемся ей.

Работать с конфигуратором помогает v8runner или v8storage. v8storage более специализированная библиотека, заточена только на работу с хранилищем. v8runner мне лично более знакома, и в ней есть команда УстановитьМеткуДляВерсииВХранилище. Заведем пользователя в хранилище с правом менять метки версий. В работе хранилища мы используем комментарии, поэтому попытка смены метки не должна повредить нам. Попробуем установить метку, если получилось - значит конфигурация подключена, нет - значит не подключена, или нам что-то помешало.

Напишем скрипт

ПутьКХранилищу = "C:\ПутьКХранилищу";

БазыДляПроверки = БазыДляПроверки();

ЕстьПроблемныеБазы = Ложь;

Для Каждого ОписаниеБазы Из БазыДляПроверки Цикл

    ОписаниеБазы.ПодключеноКХранилищу = Истина;

    Конфигуратор = Новый УправлениеКонфигуратором();
    Конфигуратор.УстановитьКонтекст(ОписаниеБазы.СтрокаПодключения, ОписаниеБазы.Пользователь, ОписаниеБазы.Пароль);
    
    Попытка
        Конфигуратор.УстановитьМеткуДляВерсииВХранилище(ПутьКХранилищу, ОписаниеБазы.ПользовательХранилища, ОписаниеБазы.ПарольХранилища, "ПроверкаПодключенияКонфигурацииКХранилищу");
    Исключение
        ОписаниеБазы.ПодключеноКХранилищу = Ложь;
        ЕстьПроблемныеБазы = Истина;
        ОписаниеБазы.ТекстОшибки = ОписаниеОшибки();        
    КонецПопытки;

КонецЦикла;

Здесь мы выполняем команду УстановитьМеткуДляВерсииВХранилище в попытке для того, чтобы поймать описание ошибки и передать его дальше (если конечно будет ошибка).

В функции БазыДляПроверки() определим список баз с их свойствами. Мы сразу передаем корректно сформированную строку подключения к базе, которую затем правильно воспримет v8runner. Обратите внимание, вид строки подключения для файловой и серверной базы отличается (пример указан и для такой и для такой базы):

Функция БазыДляПроверки()

    БазыДляПроверки = Новый Массив;
    ОписаниеСтруктуры = "Имя,СтрокаПодключения,Пользователь,Пароль,ПользовательХранилища,ПарольХранилища,ПодключеноКХранилищу,ТекстОшибки";
    БазыДляПроверки.Добавить(Новый Структура(ОписаниеСтруктуры, "Тестовая база файловая", "/FC:\ПутьКБазе", "Пользователь1С", "Пароль", "ПользовательХранилища"));
    БазыДляПроверки.Добавить(Новый Структура(ОписаниеСтруктуры, "Тестовая база серверная", "/IBConnectionString""Srvr=server:port; Ref='baza'""", "Пользователь1С", "Пароль", "ПользовательХранилища"));
    
    Возврат БазыДляПроверки;

КонецФункции

Ну и после проверки отправляем письмо с результатами. Полный скрипт прикреплен к публикации.

Запустим этот скрипт.

Все хорошо:

 

 

При этом в истории хранилища поменялась метка последней версии:

 

 

Или плохо:

 

 

Благодарности

 

Удивительно быстро и легко получилось. Спасибо создателям oscript и многочисленных библиотек к нему.

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

oscript Хранилище конфигурации

См. также

Linux Групповая разработка (Git, хранилище) Администрирование СУБД Системный администратор Программист 1С 8.3 Абонемент ($m)

Декларативный pipeline в GitHub Actions, тонкости лицензирования в Docker (--net=host), изоляция RUN_ID и интеграция со сборочным конвейером 1C:SRE-Suite. Вторая часть практического руководства (https://infostart.ru/public/2779597): от первого коммита до детерминированного синтаксического гейта на headless-раннере Linux

1 стартмани

03.09.2026    688    Ninel_S    0    

3

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

Четыре года в интеграторе я работал с git и EDT. Git после хранилища полюбил сразу: видно, кто и что менял. С EDT сложнее: тормозит, ошибки при обновлении ERP, автономный сервер внутри него работает только с файловой базой. На новой работе команда захотела перейти на git, я развернул EDT, и оно на второй день разрушило проект при загрузке расширения. Тогда я решил дать команде git с привычным Конфигуратором и инструмент, который за минуту доносит коммит до базы через ibcmd, вместо получасовой загрузки из файлов. На новой работе разрешили ИИ, и я написал это приложение с его помощью: от чтения документации и первого ТЗ до идей в электричке. Впервые за годы снова почувствовал себя творцом, а не закрывателем задач. По дороге приросли выгрузка, объединение и проверка конфигурации по коммитам, YAxUnit и режим MCP-сервера. В статье: схемы, скриншоты, грабли и честный список ограничений. Ссылки пока нет: хочу понять, нужно ли это кому-то, кроме меня.

03.09.2026    9252    KatanaDragon511    28    

36

Linux Групповая разработка (Git, хранилище) Администрирование СУБД Системный администратор Программист 1С 8.3 Бесплатно (free)

Пакетный запуск Конфигуратора 1С на Linux таит опасную ловушку: при критических ошибках утилита DESIGNER завершается с кодом возврата 0 - «всё хорошо». Дефект уходит на продуктив. Мы открываем проект 1C:SRE-Suite - набор проверенных инструментов для надёжной эксплуатации 1С на Linux: • пятислойный сборочный скрипт с защитой от False Success (BOM, кодировки, lock-файлы, diff с Git) • Мягкая ротация процессов "rphost" через RAS API без обрыва сеансов • EDT ; Конфигуратор: CLI-мост для CI/CD на Node.js • Готовые конфиги logcfg.xml и nethasp.ini для боевого сервера • systemd-шаблоны для фонового мониторинга кластера Проект в активной разработке, лицензия MIT. Ждём ваших тест-репортов и PR.

03.09.2026    692    Ninel_S    0    

1

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

Синхронизируйте свой проект EDT с хранилищем конфигурации так же легко, как в git клиенте. По кнопке Pull в проект EDT подтягиваются изменения из хранилища, по кнопке Push ваш коммит из git репозитория проекта EDT улетает в хранилище конфигурации.

09.07.2026    6399    DmitryShehovtsev    14    

26

Архивирование (backup) Групповая разработка (Git, хранилище) Системный администратор Программист Бесплатно (free)

Как дать возможность каждому разработчику 1С вести разработку, тестирование и оптимизацию на собственной полноразмерной копии базы и при этом не тратить миллиарды рублей и тысячи часов на развертывание тестового окружения, а так же экономить дисковое пространство? Расскажем о том, как с помощью инструмента Database Lab получать полноразмерные копии базы 1C на СУБД PostgreSQL за считанные секунды (даже в случае использования многотерабайтных баз).

15.12.2025    13177    nasonkin    19    

31

Инструменты администратора БД Групповая разработка (Git, хранилище) Обновление 1С Системный администратор Программист 1С:Предприятие 8 1С:Комплексная автоматизация 2.х 1С:Библиотека стандартных подсистем Абонемент ($m)

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

4 стартмани

17.11.2025    3327    15    KovrovtsevAS    0    

15
Для отправки сообщения требуется регистрация/авторизация