Что делать, если после удаления помеченных объектов 1С перестала запускаться и база заблокирована?

Системный администратор 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

Ситуация, когда в процессе удаления помеченных объектов 1С внезапно прекращает работу, а при попытке повторного входа выдает сообщение о блокировке, является классической для платформы «1С:Предприятие». Разберем подробно, почему это происходит и как восстановить работоспособность системы в зависимости от типа вашей базы данных.

Выясним причину возникновения проблемы

Когда мы запускаем стандартную обработку Удаление помеченных объектов, система зачастую пытается установить монопольный доступ к базе данных. Это необходимо для того, чтобы гарантировать ссылочную целостность: пока один объект удаляется, никакой другой пользователь не должен создать на него новую ссылку. Если процесс удаления прерывается аварийно (из-за сетевого сбоя, нехватки оперативной памяти или ошибки SQL-сервера), установленный флаг «монопольности» или «блокировки соединений» остается активным в параметрах информационной базы. Рассмотрим, как снять эти ограничения.

Решение для файловой информационной базы

В файловом варианте работы 1С за блокировку сеансов отвечает специальный технический файл. Проанализируем последовательность действий для восстановления доступа:

  1. Завершим все процессы 1cv8.exe через диспетчер задач на компьютере, где выполнялось удаление.
  2. Перейдем в каталог, где физически расположена база данных (путь к ней можно посмотреть в окне запуска 1С).
  3. Найдем в этой папке файл с расширением .cdn (обычно он называется 1Cv8.cdn). Именно этот файл блокирует вход новых пользователей.
  4. Удалим файл 1Cv8.cdn. Обратите внимание, что удалять файл 1Cv8.1CD (саму базу) категорически нельзя!
  5. После удаления файла блокировки попробуем запустить 1С в обычном режиме.

Решение для клиент-серверной базы (SQL)

В серверном варианте информация о блокировке хранится не в файле, а в настройках кластера серверов 1С. Рассмотрим, как снять блокировку через консоль администрирования:

  1. Запустим Консоль администрирования серверов 1С:Предприятия.
  2. Раскроем дерево серверов, найдем нужный кластер и перейдем в раздел Информационные базы.
  3. Найдем нашу базу в списке, нажмем правую кнопку мыши и выберем пункт Свойства.
  4. Проанализируем параметры в открывшемся окне. Нас интересуют флаги:
    • Блокировка установки соединений включена;
    • Блокировка регламентных заданий включена.
  5. Снимем эти галочки, если они установлены. Если система запрашивает параметры администратора базы или код разрешения, введем их.
  6. Нажмем ОК для сохранения настроек.

Иногда настройки в консоли могут «слететь» или отображаться некорректно. В таком случае полезно проверить поле Параметры блокировки — если там остались технические данные от прерванного процесса, их следует очистить.

Использование параметра запуска /UC для экстренного входа

Если у вас нет доступа к консоли сервера или база заблокирована программно так, что обычный вход невозможен, воспользуемся параметром командной строки /UC. Этот параметр позволяет игнорировать блокировку соединений, если известен код разрешения.

Посмотрим на пример настройки такого запуска:

  1. В окне выбора баз 1С выделим нужную базу и нажмем Изменить.
  2. Нажмем кнопку Далее до страницы с полем Дополнительные параметры запуска.
  3. Впишем в это поле следующую команду (если код не задавался вручную, попробуйте пустые кавычки или технический код, указанный в сообщении об ошибке):

/UC КодДоступа

После успешного входа в базу под этим параметром, мы сможем зайти в меню Обслуживание — Блокировка работы пользователей и нажать кнопку Снять блокировку.

Технические нюансы: Транзакции и SQL Log

Проанализируем ситуацию глубже: почему удаление вообще «зависает»? При использовании старых механизмов удаления платформа пытается выполнить операцию в рамках одной транзакции. Если удаляется 100 000 объектов, SQL-сервер записывает каждое действие в лог транзакций (файл .ldf).

Рассмотрим риски: если диск с логами переполнится, SQL-сервер принудительно остановит транзакцию и начнет процесс отката (Rollback). В этот момент 1С может выглядеть «зависшей», хотя на самом деле сервер БД занят отменой изменений. В такой ситуации крайне не рекомендуется принудительно перезагружать сервер SQL, так как это может привести к повреждению структуры данных.

Как избежать проблемы в будущем

Чтобы подобные блокировки не повторялись, разберем более современные и безопасные методы очистки базы:

1. Фоновое удаление объектов. В актуальных версиях платформы (начиная с 8.3.15) встроенное удаление умеет работать в фоновом режиме. Оно не блокирует всю базу, а удаляет объекты небольшими порциями (порционное удаление). Проверьте настройки в разделе Администрирование — Обслуживание — Удаление помеченных объектов и убедитесь, что выбран режим «Автоматическое удаление» или «В фоне».

2. Использование внешних инструментов. Опытные программисты часто используют внешние обработки, такие как:

Эти инструменты позволяют удалять объекты напрямую через метод Удалить() или УстановитьПометкуУдаления() с явной фиксацией транзакций через каждые N объектов, что исключает раздувание лога SQL и длительные блокировки всей системы.

Очистка кэша сервера при «фантомных» блокировках

Если после всех манипуляций в консоли и удаления файлов .cdn база все равно сообщает о блокировке, проанализируем состояние кэша сервера приложений. Порядок действий следующий:

  1. Остановим службу 1C:Enterprise 8.3 Server Agent.
  2. Перейдем в каталог srvinfo (путь по умолчанию: C:\Program Files\1cv8\srvinfo).
  3. Найдем папку snccntx — именно там хранятся данные о текущих сеансах и их состояниях.
  4. Очистим содержимое этой папки (не удаляя саму папку).
  5. Запустим службу сервера 1С заново.

Важно: Данную процедуру следует выполнять только в крайнем случае и при полной уверенности, что все пользователи вышли из всех баз данного кластера.

← На главную