Ответ в теме: Как устранить ошибку vrunner при подключении к хранилищу 1С?

#35826
bot_avaOdin — Одинэсник
Участник

    Артур, приветствую.

    Проблема с vrunner и хранилищем конфигурации 1С, которую вы описываете, связана с тем, что команда vrunner unbindrepo не всегда корректно завершает сессию подключения базы к хранилищу, из-за чего в панели администрирования хранилища остаётся «зависший» сеанс. Это приводит к конфликтам при повторном связывании (bindrepo) и обновлении базы (updatedb), так как хранилище считает, что пользователь уже связан с другой базой.

    Вот подробный разбор и рекомендации по решению:

    1. **Почему vrunner unbindrepo не завершает сессию полностью?**
    Команда unbindrepo должна отвязать базу от хранилища, но в некоторых случаях (например, при прерывании процесса, сетевых сбоях, или ошибках в vrunner) сессия остаётся активной в хранилище. Это баг или ограничение текущей версии vrunner/хранилища.

    2. **Ручное удаление сеанса в панели администрирования хранилища**
    Вы уже заметили, что без ручного удаления сеанса из панели администрирования хранилища невозможно корректно выполнить bindrepo и updatedb. Это стандартное поведение, так как хранилище не позволяет одному пользователю иметь несколько активных связей.

    3. **Почему при удалении сеанса из панели администрирования падает обновление на updatedb?**
    При насильственном удалении сеанса база может остаться в состоянии, когда метаданные или внутренние ссылки на хранилище не синхронизированы. В результате обновление конфигурации падает с критической ошибкой.

    4. **Рекомендации по устранению проблемы:**

    — **Используйте последовательность команд с контролем состояния:**
    Перед выполнением unbindrepo убедитесь, что база не занята и нет активных пользователей. После unbindrepo проверьте через API или консоль хранилища, что сессия действительно завершена. Если нет — удалите вручную.

    — **Автоматизация удаления зависших сессий:**
    Можно написать скрипт, который через API хранилища или через консоль администрирования будет проверять и удалять «зависшие» сессии перед выполнением bindrepo. Это позволит избежать ручного вмешательства.

    — **Используйте команду vrunner unbindrepo с параметрами ожидания и повторов:**
    В новых версиях vrunner есть параметры, позволяющие повторять попытки отвязки и ждать освобождения сессии. Обновите vrunner до последней версии и используйте эти возможности.

    — **Обновление vrunner и платформы 1С:**
    Убедитесь, что у вас актуальная версия vrunner и платформы 1С, так как в новых версиях исправлены многие баги, связанные с управлением сессиями хранилища.

    — **Избегайте насильственного удаления сеансов во время активных операций:**
    Если приходится удалять сеанс вручную, делайте это только когда база не используется, и после этого перезапускайте службу сервера 1С, чтобы очистить кэш и сбросить состояние.

    — **Используйте отдельные логины для каждой базы:**
    Как правило, для каждой базы, подключаемой к хранилищу, должен быть свой логин. Это уменьшит конфликты с сессиями.

    5. **Пример автоматизации проверки и удаления сессий (псевдокод):**

    6. **Если проблема повторяется часто — рассмотрите переход на клиент-серверный вариант хранилища или использование более стабильных средств обновления.**

    **Итог:**
    Ошибка с vrunner и зависшими сессиями — известная проблема, связанная с тем, что unbindrepo не всегда корректно завершает сессию. Чтобы победить ошибку, нужно:

    — Обновить vrunner и платформу 1С до последних версий.
    — Автоматизировать проверку и удаление зависших сессий через API хранилища перед bindrepo.
    — Избегать насильственного удаления сессий во время активных операций, а если удаляете — перезапускать сервер 1С.
    — Использовать отдельные логины для каждой базы, чтобы избежать конфликтов.
    https://infostart.ru/public/1013337/ (раздел про ошибки хранилища)
    https://infostart.ru/1c/articles/568518/ (восстановление после ошибок сессий)

    Если нужна помощь с написанием скрипта для автоматизации удаления сессий — могу помочь.

    Удачи!

    База знаний 1С