Снимаем захваты, удаляем пользователя и отвязываем базу от хранилища конфигурации
Содержание
Чтобы отключить пользователя
от хранилища конфигурации 1С, администратор хранилища открывает в Конфигураторе Конфигурация → Хранилище конфигурации → Хранилище…, отменяет захват объектов этого пользователя, а затем в окне Администрирование… удаляет его или снимает права. Сама база разработчика отвязывается командой Отключиться от хранилища или ключом /ConfigurationRepositoryUnbindCfg -force в пакетном режиме.
Чаще всего за просьбой «отключите Иванова от хранилища» стоит одно: Иванов уволился или переустановил компьютер, а его объекты остались захваченными, и команда не может поместить свои изменения. Ниже шаги для каждого из таких случаев: от самого мягкого действия к самому жёсткому.
Что значит «отключить» от хранилища и откуда берутся блокировки
В хранилище нет постоянного «подключения», как у сеанса в базе. Там хранятся три вещи, которые и создают ощущение, что пользователь «висит»:
- 🔒 Захваты объектов. Пользователь захватил справочник или модуль для редактирования. Пока захват не снят, остальные не могут менять этот объект.
- 🔗 Привязка базы. Хранилище помнит, из какой информационной базы и с какого компьютера подключился пользователь. Захваты принадлежат паре «пользователь + база».
- 👤 Учётная запись с правами. Пока она есть, человек может снова войти и захватить объекты.
Откуда берутся «зависшие» захваты:
- 💻 разработчик переустановил Windows или удалил свою копию базы , не поместив изменения;
- 🚪 сотрудник уволился, а его учётная запись в хранилище осталась;
- 📦 базу разработчика восстановили из старой копии, и связь с хранилищем в ней уже не совпадает с текущей;
- ⚡ Конфигуратор упал во время помещения, и часть объектов осталась захваченной.
Как отменить захват объектов чужого пользователя
Это штатный путь, и его хватает в большинстве ситуаций. Нужна учётная запись хранилища с правом «Административные функции».
- Запустите Конфигуратор той базы, которая подключена к хранилищу, под администратором хранилища.
- Откройте
Конфигурация → Хранилище конфигурации → Хранилище…. - В дереве объектов захваченные элементы помечены замком. Выделите объект и посмотрите, кем он захвачен, в его свойствах или в подсказке.
- Отметьте все объекты нужного пользователя (можно несколько через
Ctrl). - В контекстном меню выберите
Отменить захват. - Подтвердите отмену. Объекты сразу становятся свободными для остальных.
Отмена захвата не переносит изменения в хранилище. Всё, что разработчик успел поменять в своей базе и не поместил, останется только у него. Если эти правки нужны, перед отменой попросите его выгрузить конфигурацию в .cf или файлы, чтобы потом сравнить и перенести изменения.
Если объектов много, удобнее ограничить дерево только захваченными. Для этого используйте отбор в окне хранилища: в нём есть условие по захваченным объектам и по пользователю.
💡 Отменять чужие захваты по одному объекту утомительно, если их сотни. Выделите корень конфигурации с подчинёнными: платформа обработает всё дерево, но отменит захват только там, где он реально есть.
Что делать разработчику после отмены его захвата
Если человек вернулся к работе, его база по-прежнему подключена к хранилищу, но объекты уже не его. Порядок такой:
- Открыть окно хранилища и обновить его, чтобы увидеть актуальное состояние захватов.
- Сравнить свою конфигурацию с хранилищем: так видно, какие локальные правки ещё не помещены.
- Если коллеги не меняли эти объекты, снова захватить их и поместить свои правки.
- Если коллеги успели поместить новые версии, сначала получить их из хранилища, а свои изменения перенести вручную через сравнение и объединение.
Пункт 4 — причина, по которой отмену чужого захвата лучше согласовывать с владельцем. Две параллельные правки одного модуля потом сводят руками, и это дольше, чем дождаться ответа.
Удаление пользователя и снятие прав в администрировании хранилища
Когда сотрудник ушёл, одной отмены захватов мало: учётную запись надо убрать, иначе с его паролем можно снова войти.
- Откройте
Конфигурация → Хранилище конфигурации → Администрирование…. - В списке пользователей найдите нужного.
- Если человек временно не должен ничего менять, откройте его свойства и снимите галочки прав. Он сможет смотреть историю, но не захватывать и не помещать.
- Если доступ нужно закрыть полностью, выделите пользователя и удалите его.
Удалённые пользователи не исчезают бесследно. Их имена остаются в истории версий, а в окне администрирования есть флажок показа удалённых пользователей. Через него запись можно восстановить, если удалили по ошибке.
Сначала отмените захваты, потом удаляйте пользователя. Иначе объекты придётся освобождать уже у удалённой записи, а это лишние шаги и путаница.
Сравнение способов:
| Способ | Когда подходит | Что теряется |
|---|---|---|
| Отмена захвата | человек недоступен, объекты нужны команде | непомещённые правки в его базе |
| Снятие прав | временное отстранение, аудит | ничего, запись и история целы |
| Удаление пользователя | увольнение, утечка пароля | возможность входа; история остаётся |
| Отвязка базы | база больше не нужна или повреждена | связь этой базы с хранилищем |
Если пароль администратора хранилища утерян, штатного сброса нет. Рабочий вариант один: восстановить каталог хранилища из резервной копии, где пароль известен. Поэтому пароль администратора держите в менеджере паролей отдела, а не в голове одного человека.
Отвязка базы от хранилища из командной строки
Пакетный режим Конфигуратора закрывает две задачи: снять захваты пользователя из его же базы и отвязать базу от хранилища. Он выручает, когда база не открывается интерактивно или таких баз несколько.
Отвязка базы с принудительным пропуском проверок:
"C:\Program Files\1cv8\<версия>\bin\1cv8.exe" DESIGNER ^
/F "D:\Bases\Dev_Ivanov" /N "Admin" /P "pass" ^
/ConfigurationRepositoryUnbindCfg -force ^
/DisableStartupDialogs /Out "D:\Logs\unbind.txt"
Ключ -force отключает базу, даже если в ней есть захваченные или изменённые объекты, и не спрашивает учётные данные хранилища. Для клиент-серверной базы вместо /F укажите /S "srv1c\Dev_Ivanov".
Отмена собственных захватов пользователя из его базы:
"C:\Program Files\1cv8\<версия>\bin\1cv8.exe" DESIGNER ^
/F "D:\Bases\Dev_Ivanov" /N "Admin" /P "pass" ^
/ConfigurationRepositoryF "tcp://srv-repo/MainRepo" ^
/ConfigurationRepositoryN "Ivanov" /ConfigurationRepositoryP "pwd" ^
/ConfigurationRepositoryUnlock -force ^
/DisableStartupDialogs /Out "D:\Logs\unlock.txt"
Без параметра -objects команда снимает все захваты этого пользователя. С ключом -force объекты, изменённые локально, будут возвращены к версии из хранилища, поэтому локальные правки пропадут. Полный перечень ключей смотрите в справке Конфигуратора по пакетному режиму.
После выполнения откройте файл из /Out. Пакетный режим не показывает окон, и об ошибке авторизации или неверном пути вы узнаете только из лога.
Сервер хранилища и консоль кластера: что можно оборвать
Сетевое хранилище обслуживает отдельная служба сервера хранилища (crserver), по умолчанию на порту 1542. Адрес подключения выглядит как tcp://srv-repo/MainRepo. Эта служба не входит в кластер серверов
1С.
Отсюда важное следствие: в консоли администрирования кластера захватов хранилища нет. Там видны сеансы Конфигуратора в информационной базе. Завершив такой сеанс, вы закроете Конфигуратор разработчика, но его захваты в хранилище останутся.
Когда консоль кластера всё же полезна:
- Конфигуратор разработчика завис на клиент-серверной базе и не даёт обновить её структуру.
- Откройте консоль, найдите базу и в списке сеансов выберите строку с приложением «Конфигуратор».
- Удалите сеанс. Предупредите разработчика: несохранённые правки в открытом Конфигураторе пропадут.
Если зависла сама служба хранилища, её перезапускают в оснастке «Службы» Windows. Захваты при этом сохраняются: они записаны в данных хранилища, а не в памяти процесса.
Перезапуск службы сервера хранилища обрывает операции всех разработчиков сразу. Помещение, прерванное на середине, придётся повторить. Делайте это в нерабочее время или после общего предупреждения в чате команды.
Файловое хранилище: открытые файлы вместо «файлов блокировок»
Файловое хранилище — это каталог с файлом 1cv8ddb.1CD и служебными подкаталогами. Отдельного файла-флажка «пользователь подключён» там нет. Удалять что-либо из каталога, надеясь снять блокировку, нельзя: так вы повредите хранилище, а захваты никуда не денутся.
Если хранилище «занято» и не открывается, причина обычно в процессе, который держит файл:
- 🖥 Конфигуратор на другом компьютере завис и не отпускает
1cv8ddb.1CD; - 📁 каталог лежит в общей папке, и сетевой сеанс остался открытым после обрыва связи;
- 🛡 антивирус или программа резервного копирования проверяют файл прямо во время работы.
Что делать:
- На сервере с общей папкой откройте
Управление компьютером → Общие папки → Открытые файлы. - Найдите
1cv8ddb.1CDи посмотрите, какой пользователь и компьютер его держат. - Попросите этого человека закрыть Конфигуратор. Если он недоступен, закройте открытый файл из этой же оснастки.
- Добавьте каталог хранилища в исключения антивируса.
Принудительное закрытие файла обрывает операцию на клиенте. Если в этот момент шло помещение, у разработчика будет ошибка, и действие придётся повторить. Перед закрытием сделайте копию каталога хранилища.
Для команды больше трёх человек файловое хранилище в общей папке — источник таких проблем. Сервер хранилища решает их: клиенты не открывают файл напрямую.
Автоматизация: скрипт вместо ручной работы
Встроенного объекта для управления хранилищем во встроенном языке 1С нет. Внешняя обработка не может сама снять чужие захваты. Она умеет только запустить Конфигуратор в пакетном режиме через ЗапуститьПриложение() с теми же ключами, что выше.
Практичнее держать на сервере .bat или PowerShell-скрипт и запускать его из Планировщика заданий. Пример ежедневного отчёта по хранилищу:
@echo off
set V8="C:\Program Files\1cv8\<версия>\bin\1cv8.exe"
%V8% DESIGNER /F "D:\Bases\RepoAdmin" /N "Admin" /P "pass" ^
/ConfigurationRepositoryF "tcp://srv-repo/MainRepo" ^
/ConfigurationRepositoryN "RepoAdmin" /ConfigurationRepositoryP "pwd" ^
/ConfigurationRepositoryReport "D:\Reports\repo_%date:~-4%%date:~3,2%%date:~0,2%.mxl" ^
/DisableStartupDialogs /Out "D:\Logs\report.txt"
Отчёт по истории хранилища показывает, кто и когда помещал изменения. Если человек неделями держит захват и ничего не помещает, это видно по отсутствию его версий.
Для массовой отвязки старых баз разработчиков делают цикл по списку путей с командой /ConfigurationRepositoryUnbindCfg -force. Пароли в скриптах храните в отдельном файле с ограниченными правами, а не в самом .bat.
Перед тем как ставить скрипт в расписание, прогоните его вручную на копии базы и проверьте лог. Ошибка в одном пути или пароле в цикле по десятку баз даст десяток пустых логов, и разбираться придётся по каждому отдельно.
Как не допускать зависших захватов
Главная причина хаоса — общая учётная запись на нескольких людей. Захваты привязаны к паре «пользователь + база», и при общем логине уже не понять, кто держит объект и можно ли его освобождать.
Второе правило: перед переустановкой компьютера разработчик помещает всё или отменяет свои захваты. Это занимает минуту и снимает необходимость звать администратора.
Третье — понятные имена учётных записей. Логин вида «Ivanov_dev» сразу говорит, чей захват висит. Логины «user1» или «prog» через полгода приходится расшифровывать по истории версий.