Что мешает сделать dt-выгрузку базы 1С и как устранить блокировки

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

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

Анализируем разницу между сеансами и соединениями

Первым делом проанализируем ситуацию в консоли «Администрирование серверов 1С Предприятия». Распространенная ошибка новичков — смотреть только в раздел Сеансы. Однако для платформы 1С существует принципиальное различие между логическим сеансом пользователя и физическим соединением с рабочим процессом rphost.

Бывают случаи, когда пользователь некорректно завершил работу (например, закрыл терминальную сессию крестиком), его сеанс исчез из списка, но соединение осталось висеть в кластере. Это соединение продолжает удерживать блокировки в СУБД и файловой системе сервера. Посмотрим, как это исправить:

  1. Откройте консоль администрирования 1С.
  2. Перейдите в ветку нужной информационной базы.
  3. Сначала проверьте раздел Сеансы и завершите все активные.
  4. Затем обязательно перейдите в раздел Соединения. Если там остались записи (даже без указания пользователя), их необходимо удалить вручную.

Принудительное завершение через процессы rphost

Иногда штатное удаление соединения через консоль не срабатывает. В этом случае выясним, в каком рабочем процессе «застряло» соединение. В свойствах соединения можно увидеть номер PID рабочего процесса. Если в этом процессе больше нет полезных соединений других баз, можно принудительно завершить процесс rphost.exe с этим PID через диспетчер задач Windows. Это мгновенно разорвет все зависшие связи и позволит конфигуратору получить монопольный доступ.

Очистка временных файлов и кэша сервера 1С

Если даже после перезапуска процессов проблема сохраняется, проанализируем состояние папки кластера 1С. Часто причиной блокировок становится «мусор» во временных файлах, которые хранят информацию о текущих транзакциях и блокировках. Эти данные располагаются в папке srvinfo (обычно это C:\Program Files\1cv8\srvinfo).

Особое внимание стоит уделить подпапкам, чье имя начинается на snccntx. Там хранятся данные сеансов. Если запись в них прошла со сбоем, сервер может ошибочно считать базу занятой. Рассмотрим надежный алгоритм полной очистки сервера, который рекомендуется выполнять с помощью bat-файла.

Автоматизация: Скрипт полной перезагрузки и очистки

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

  1. Остановка службы агента сервера 1С (это освобождает все захваченные файлы).
  2. Принудительное завершение всех процессов rphost, rmngr и ragent, если они не закрылись сами.
  3. Удаление файлов блокировок и временных данных в папках snccntx.
  4. Удаление файлов настроек .pfl и очистка системного временного каталога.
  5. Запуск службы обратно.

Рассмотрим пример такого скрипта для 64-разрядного сервера:


set SERVICE_1C_NAME="1C:Enterprise 8.3 Server Agent (x86-64)"
set CNTX_PATH="C:\Program Files\1cv8\srvinfo\reg_1541"
set PFL_PATH="C:\ProgramData\1C\1cv8"

echo Останавливаем службу сервера...
sc stop %SERVICE_1C_NAME%
timeout 5

echo Убиваем зависшие процессы...
taskkill /f /im "rphost.exe"
taskkill /f /im "rmngr.exe"
taskkill /f /im "ragent.exe"

echo Чистим временные файлы сеансов и кэш...
DEL /Q /F /S %CNTX_PATH%\snccntx*
DEL /Q /F %PFL_PATH%\*.pfl

echo Запускаем службу...
sc start %SERVICE_1C_NAME%

Особенности работы с кассовым оборудованием и терминалами

Проанализируем ситуацию, описанную в теме: работа ведется в терминале, и подключено торговое оборудование (кассы). Принудительное выкидывание пользователя через консоль 1С может быть недостаточно, так как терминальная сессия пользователя остается в состоянии Disconnected. При этом запущенное в ней приложение 1С может продолжать удерживать соединение с базой.

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

  1. Запуск 1С в режиме ENTERPRISE с параметром /UC <код доступа> для установки блокировки новых соединений.
  2. Использование команды ЗавершитьРаботуСистемы(Ложь, Ложь) в обработчике ожидания, чтобы дать пользователю завершить кассовую смену.
  3. Выгрузка базы через CONFIG.
  4. Снятие блокировки.

Почему выгрузка .dt не является полноценным архивом

Важно понимать техническую суть процесса. Выгрузка в .dt — это логическое сжатие данных. Платформа последовательно читает таблицы и записывает их в свой внутренний формат. Если в базе SQL есть физические повреждения таблиц (битые индексы), выгрузка может пройти успешно, а вот загрузить такой файл обратно часто не удается.

Для клиент-серверных баз настоятельно рекомендуем использовать средства СУБД (SQL Server Management Studio или аналоги) для создания бэкапов в формате .bak. Это происходит быстрее, не требует монопольного доступа в режиме конфигуратора (в большинстве случаев) и гарантирует физическую целостность данных.

Выгрузку же в .dt стоит оставить только для специфических задач, таких как перенос базы с SQL в файловый вариант или при миграции между разными СУБД (например, с MS SQL на PostgreSQL).

Резюме: как действовать правильно

Если вам «не дает» сделать выгрузку:

  1. Проверьте не только сеансы, но и соединения в консоли кластера.
  2. Завершите терминальные сессии пользователей через Диспетчер задач -> Пользователи (особенно те, что в статусе «Отключен»).
  3. Если это не помогло, используйте скрипт перезапуска службы 1С с очисткой папок snccntx.
  4. В будущем настройте автоматический бэкап средствами SQL, чтобы не зависеть от монопольных блокировок в 1С.
← На главную