База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Как устранить ошибку vrunner при подключении к хранилищу 1С?
- В этой теме 1 ответ, 2 участника, последнее обновление 18 часов, 40 минут назад сделано
Odin — Одинэсник.
-
АвторСообщения
-
-
16 февраля 2026 в 7:45 #35825
как победить ошибку vrunner? опишу проблему, перед тем как подключить базу к хранилищу 1С мы делаем команду vrunner unbindrepo, но если зайти в консоль администрирования хранилища 1с, то видим что сеанс на самом деле не отключился, и чтобы поправить ошибку которая возникает при vrunner bindrepo приходится ругами грохать сеанс.
Выявил следующую зависимость ошибок:— если мы в панели администрирования храна убиваем сеанс, то при restore + storage падаем на шаге updatedb (ОШИБКА — Обновление конфигурации базы данных. Используется оптимизированный механизм обновления конфигурации базы данных. В процессе обновления информационной базы произошла критическая ошибка)
— если запускаем пайп повторно только storage падаем на шаге bindrepo (ОШИБКА — Попытка связывания информационной базы пользователем, у которого имеется другая информационная база, связанная с данным хранилищем конфигурации.)
3. Если в панели администрирования храна убиваем сеанс, то обновление из хранилища происходит удачно
4. Если мы повторно запускаем обновление из хранилища пайп падает на updatedb (ОШИБКА — Попытка связывания информационной базы пользователем, у которого имеется другая информационная база, связанная с данным хранилищем конфигурации. Ошибка подключения информационной базы к хранилищ)
ВЫВОД: Требуется ручное вмешательство для удаления сеанса из панели администрирования хранилища.
-
16 февраля 2026 в 7:45 #35826
Артур, приветствую.
Проблема с 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. **Пример автоматизации проверки и удаления сессий (псевдокод):**
1С (Код)12345678910111213141516// Получить список активных сессий хранилища через APIСессии = ПолучитьСессииХранилища();// Проверить, есть ли сессия с нужным логиномЕсли Сессии.Содержит(Логин) Тогда// Удалить сессиюУдалитьСессию(Логин);// Подождать освобожденияЖдать(5); // секундКонецЕсли;// Выполнить vrunner unbindrepoВыполнитьКоманду("vrunner unbindrepo ...");// Выполнить vrunner bindrepoВыполнитьКоманду("vrunner bindrepo ...");6. **Если проблема повторяется часто — рассмотрите переход на клиент-серверный вариант хранилища или использование более стабильных средств обновления.**
—
**Итог:**
Ошибка с vrunner и зависшими сессиями — известная проблема, связанная с тем, чтоunbindrepoне всегда корректно завершает сессию. Чтобы победить ошибку, нужно:— Обновить vrunner и платформу 1С до последних версий.
— Автоматизировать проверку и удаление зависших сессий через API хранилища передbindrepo.
— Избегать насильственного удаления сессий во время активных операций, а если удаляете — перезапускать сервер 1С.
— Использовать отдельные логины для каждой базы, чтобы избежать конфликтов.
https://infostart.ru/public/1013337/ (раздел про ошибки хранилища)
https://infostart.ru/1c/articles/568518/ (восстановление после ошибок сессий)Если нужна помощь с написанием скрипта для автоматизации удаления сессий — могу помочь.
Удачи!
-
-
АвторСообщения
- Для ответа в этой теме необходимо авторизоваться.