Объект захвачен в хранилище конфигурации: как его освободить
Содержание
Свой захват отменяют в Конфигураторе той базы, из которой объект захватывали: Конфигурация → Хранилище конфигурации → Отменить захват в хранилище. Если объект держит другой человек, отменить захват может только он сам. Администратор хранилища здесь помогает обходным путём: меняет пароль этого пользователя хранилища, подключается под ним и снимает захват.
Частое заблуждение — что достаточно отключить базу от хранилища или удалить её. Это не работает . Захват хранится в самом хранилище, а не в базе разработчика, и после отключения объекты так и висят захваченными на этом пользователе.
Почему объект остаётся захваченным
Захват — это пометка в хранилище: «объект правит пользователь X из базы Y». Пока пометка стоит, остальные не могут поместить изменения в этот объект. Снимается она тремя способами: помещением изменений, отменой захвата или вмешательством администратора.
Типичные ситуации, после которых приходится разбираться вручную:
- 👤 Сотрудник уволился или ушёл в отпуск, а в хранилище остались его захваты.
- 💻 База разработчика потеряна: пересоздали копию, сломался диск, удалили папку.
- 🔌 Базу отключили от хранилища командой
Отключиться от хранилища— захваты остались. - 🌳 Захвачен корень конфигурации. Без него никто не может добавлять новые объекты метаданных, и вся команда стоит.
- 📦 Помещали с флажком «Оставить объекты захваченными» и забыли про это.
- ⏳ Сервер хранилища или Конфигуратор завис посреди операции, и команды хранилища отвечают ошибкой или не отвечают вовсе.
Последний случай отличается от остальных. Там захват может быть вполне корректным, а проблема — в доступе к хранилищу. Его лечат иначе, об этом ниже.
Как узнать, кто и откуда держит объект
Прежде чем что-то отменять, выясните владельца захвата. Иначе легко снять чужую незавершённую работу.
- Откройте Конфигуратор базы, подключённой к хранилищу.
- Выберите
Конфигурация → Хранилище конфигурации → Хранилище.... Откроется окно с деревом объектов хранилища. - Посмотрите на значки у объектов. Значок замка показывает захват: свой и чужой отличаются цветом.
- Включите отбор захваченных объектов, чтобы не листать всё дерево.
- Для конкретного объекта посмотрите колонки: там видно имя пользователя хранилища и информационную базу, из которой сделан захват.
В дереве конфигурации основной базы значки тоже видны. Замок рядом с объектом — признак того, что объект кем-то захвачен.
Перед разговором с коллегой выпишите список его захваченных объектов. Он может помнить, что какой-то объект правил не до конца, и попросит сначала выгрузить изменения.
| Что видно в окне хранилища | Что это значит | Что делать |
|---|---|---|
| Захват ваш, из текущей базы | Обычный рабочий случай | Поместить изменения или отменить захват |
| Захват ваш, но из другой базы | Вы работали с другого компьютера или из старой копии | Отменить из той базы или подключиться заново |
| Захват чужой, человек на связи | Коллега правит объект | Договориться: он помещает или отменяет |
| Захват чужой, человек недоступен | Нужно вмешательство администратора хранилища | Сменить пароль и снять захват под его учётной записью |
Отмена захвата своими силами в Конфигураторе
Это штатный путь. Он подходит, если захват ваш и база, из которой вы захватывали, жива.
- Откройте базу в режиме Конфигуратора под тем же пользователем хранилища.
- В дереве конфигурации выделите нужные объекты. Можно выделить сразу несколько.
- Выберите
Конфигурация → Хранилище конфигурации → Отменить захват в хранилище. Ту же команду можно вызвать из контекстного меню объекта. - В открывшемся окне отметьте флажками объекты, с которых снимаете захват.
- Нажмите
ОК.
После отмены захвата локальные изменения в этих объектах пропадут. Объекты вернутся к версии из хранилища. Если правки нужны, сначала сохраните их.
Как сохранить незавершённую работу перед отменой:
- 📁 Выгрузите конфигурацию в файл:
Конфигурация → Сохранить конфигурацию в файл. Получится.cfс вашим текущим состоянием. - 🔍 Сравните свою конфигурацию с хранилищем и посмотрите, что именно изменено. Иногда выясняется, что правок нет и захват висел пустым.
- 📤 Если правки готовы, их проще поместить, чем отменять:
Поместить в хранилищеснимает захват автоматически, если не стоит флажок «Оставить объекты захваченными».
Отменяйте захват только у тех объектов, которые действительно правили. Если в окне отмены по привычке нажать «выделить всё», можно потерять изменения в объектах, которые вы ещё не поместили.
Захват ушедшего сотрудника: работа через администратора хранилища
Самый частый запрос. Человек уволился, его база удалена, а объекты захвачены. Помочь может любой пользователь с правом «Административные функции» в хранилище.
Шаг 1. Сменить пароль пользователя хранилища
- Подключитесь к хранилищу под учётной записью администратора.
- Откройте
Конфигурация → Хранилище конфигурации → Администрирование.... - В списке пользователей выделите сотрудника и откройте его свойства.
- Задайте новый пароль и сохраните.
Права пользователя при этом не трогайте. Если отобрать у него право захвата, снять захват под ним может не получиться.
Шаг 2. Подключиться под этим пользователем
- Возьмите любую базу, где можно спокойно работать: свою копию или чистую копию основной.
- Если она уже подключена к хранилищу, отключите её:
Конфигурация → Хранилище конфигурации → Отключиться от хранилища. - Подключитесь заново через
Подключиться к хранилищу, указав адрес хранилища, имя сотрудника и новый пароль. - Платформа предупредит, что этот пользователь уже работает с хранилищем из другой информационной базы. Подтвердите продолжение.
После подключения захваты сотрудника станут видны как захваты текущего пользователя.
Шаг 3. Снять захват
- Откройте окно хранилища и включите отбор захваченных объектов.
- Выделите объекты сотрудника.
- Выполните
Отменить захват. - Отключите базу от хранилища и, если сотрудник больше не работает, удалите его пользователя в окне администрирования или хотя бы поменяйте пароль ещё раз.
Если у сотрудника могли остаться правки, о которых никто не знает, перед отменой поместите его объекты в хранилище из этой же базы. Захват при этом снимется, а изменения сохранятся в истории версий, и их можно будет откатить при необходимости.
Когда хранилище не отвечает: сервер хранилища и консоль кластера
Бывает, что захват снять нельзя, потому что любая команда хранилища висит. Здесь отмена захвата ни при чём, нужно вернуть работоспособность хранилищу.
Сервер хранилища (адрес tcp://)
Сетевое хранилище обслуживает отдельная служба — сервер хранилища, процесс crserver. По умолчанию он слушает порт 1542. Адрес в Конфигураторе выглядит как tcp://имя_сервера/путь_к_хранилищу.
Что проверить по порядку:
- Доступен ли сервер по сети и открыт ли порт службы хранилища.
- Запущена ли служба сервера хранилища в списке служб Windows или в systemd на Linux.
- Не занят ли процесс
crserverдолгой операцией. Например, кто-то запустил оптимизацию хранения данных или помещение большой конфигурации. - Хватает ли места на диске, где лежат файлы хранилища.
Перезапуск службы сервера хранилища оборвёт текущие операции всех разработчиков. Кто-то в этот момент может помещать изменения. Предупредите команду и выбирайте время, когда с хранилищем никто не работает.
Консоль администрирования кластера
Отдельная история — завис сам Конфигуратор разработчика, подключённый к серверной информационной базе. Тогда его сеанс виден в консоли администрирования серверов 1С:
- Откройте консоль, разверните кластер, затем
Информационные базы → имя базы → Сеансы. - Найдите сеанс с приложением «Конфигуратор» и нужным пользователем.
- Удалите сеанс.
Удаление сеанса Конфигуратора обрывает работу разработчика без сохранения. Незаписанные правки в конфигурации пропадут. Делайте это, только если человек подтвердил, что Конфигуратор у него завис, или его нет на месте.
Удаление сеанса не снимает захваты в хранилище. Оно лишь освобождает базу, чтобы разработчик мог заново зайти и отменить захват штатно.
Можно ли снять захват через SQL
Короткий ответ: нет, и не стоит пытаться.
Хранилище конфигурации не живёт в СУБД. Даже если основная база стоит на MS SQL Server или PostgreSQL, хранилище — это отдельный файл формата 1С (1cv8ddb.1CD) и служебные каталоги рядом с ним. Сервер хранилища работает с этим файлом напрямую. SQL-запросом до захвата не дотянуться.
Что люди путают с «блокировками в SQL»:
- 🔒 Блокировки данных в информационной базе: ошибки вида «конфликт блокировок при выполнении транзакции». Это про документы и регистры, не про хранилище.
- 🧩 Привязку базы к хранилищу. Она хранится в информационной базе разработчика, но правка служебных таблиц руками ломает конфигурацию. Отвязать базу можно штатно, через Конфигуратор или пакетный режим.
- 🛠 Редактирование файла хранилища сторонними утилитами. Такие инструменты существуют, но любое повреждение файла уничтожает историю версий всей команды.
Для отвязки базы без захода в Конфигуратор есть параметр пакетного запуска /ConfigurationRepositoryUnbindCfg. Он отключает базу от хранилища, но захваты в хранилище не трогает.
"C:\Program Files\1cv8\8.3.25.1374\bin\1cv8.exe" DESIGNER /F "D:\Bases\Dev" /N "Admin" /P "" /ConfigurationRepositoryUnbindCfg -force /Out "D:\Logs\unbind.log"
Путь к платформе и версию подставьте свои. Параметры подключения к хранилищу в пакетном режиме передают через /ConfigurationRepositoryF, /ConfigurationRepositoryN и /ConfigurationRepositoryP — адрес, пользователь и пароль хранилища.
Файловое хранилище в сетевой папке
Хранилище можно создать прямо в общей папке, без сервера хранилища. Тогда каждый Конфигуратор открывает файл 1cv8ddb.1CD по сети. У такой схемы свои поломки.
| Симптом | Вероятная причина | Что сделать |
|---|---|---|
| Ошибка доступа к файлу хранилища | Файл держит процесс, который не завершился | Найти зависший 1cv8.exe у коллег или открытые сетевые сеансы на файловом сервере |
| Хранилище открывается через раз | Антивирус проверяет файл при каждом обращении | Добавить папку хранилища в исключения антивируса |
| Права «только чтение» | У пользователя Windows нет права записи в папку | Выдать права на изменение всем разработчикам |
| Повреждение после обрыва сети | Запись прервалась на середине | Восстановить папку из резервной копии |
Найти, кто держит файл, можно на файловом сервере. В оснастке «Общие папки» Windows есть список открытых файлов, там видно пользователя и компьютер.
Закрытие открытого файла с сервера равносильно падению Конфигуратора у того, кто его держал. Если в этот момент шло помещение, файл хранилища может повредиться. Перед этим сделайте копию всей папки хранилища.
Если команда больше двух-трёх человек или работает удалённо, файловое хранилище лучше перевести на сервер хранилища. Обрывы сети тогда не бьют по файлу напрямую.
Как не доводить до зависших захватов
Пара простых правил избавляет почти от всех историй с «чужим замком».
- 🌳 Корень конфигурации — на минуты. Захватили, добавили объект, сразу поместили. Держать корень днями — значит блокировать всю команду.
- 📤 Помещайте чаще. Небольшие порции изменений легче проверить и легче откатить.
- 🏷 Один человек — один пользователь хранилища. Общий логин «Разработчик» не позволяет понять, кто держит объект.
- 🗂 Порядок при увольнении. В чек-лист выхода сотрудника добавьте пункт: поместить или отменить все захваты, удалить пользователя хранилища.
- 💾 Резервные копии хранилища. Копируйте папку хранилища целиком по расписанию, в момент, когда с ним никто не работает.
- 🔐 Два администратора. Если пароль единственного администратора хранилища утерян, снять чужие захваты станет некому.