Почему при загрузке адресного классификатора в 1С рушится учетная запись RDP, пропадают базы и очищается рабочий стол?

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

Рассмотрим крайне неприятную и на первый взгляд мистическую проблему, с которой часто сталкиваются системные администраторы и специалисты 1С при работе пользователей в терминальном режиме (RDP). Сценарий выглядит следующим образом: пользователь запускает процедуру загрузки адресного классификатора (ФИАС или КЛАДР) в конфигурации Управление торговлей 10.3 (или любой другой устаревшей конфигурации на обычных формах). В процессе импорта система аварийно завершает работу, выдавая ошибку доступа к файлам профиля Администратора. После принудительного перезахода на сервер пользователь видит девственно чистый рабочий стол и абсолютно пустой список информационных баз в стартере 1С.

В этой статье мы подробно проанализируем причины такого системного коллапса, разберем физику происходящих процессов в операционной системе Windows Server и предоставим пошаговый алгоритм решения проблемы.

Выясняем причины: почему падает сессия и ломается профиль?

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

1. Почему 1С пытается обратиться к профилю Администратора (C:\Users\Administrator)?

Этому способствуют две основные причины:

2. Почему очищается рабочий стол и пропадает список баз?

Это самый пугающий симптом для пользователей, но у него есть четкое логическое объяснение — загрузка временного профиля (Temporary Profile).

Когда процесс 1cv8.exe аварийно падает из-за критической ошибки доступа или нехватки оперативной памяти при обработке тяжелых файлов КЛАДР, он зависает в памяти сервера в виде «зомби-процесса». Этот зависший процесс продолжает монопольно удерживать файлы пользовательского реестра, в частности файл NTUSER.DAT.

Когда пользователь пытается переподключиться к своей сессии RDP, служба профилей Windows (User Profile Service) пытается смонтировать его личный профиль. Видя, что файл реестра заблокирован зависшим процессом 1С, Windows не может загрузить оригинальный профиль и принимает решение создать для пользователя временный профиль (папка вида C:\Users\TEMP).

Во временном профиле нет файлов пользователя на рабочем столе, а список баз пуст, потому что стартер 1С ищет файл настроек ibases.v8i в пустом каталоге AppData временного профиля, а не в исходной папке пользователя.

3. Почему отладчик спотыкается на папке временных файлов с цифрой на конце?

Путь вида AppData\Local\Temp\6 указывает на то, что операция выполняется в RDP-сессии под номером 6. При загрузке классификатора 1С распаковывает тысячи мелких файлов во временный каталог. В этот момент на сервере активизируется антивирусное программное обеспечение. Антивирус расценивает массовое создание и модификацию файлов в папке Temp как подозрительную активность и временно блокирует доступ к ним для проверки. 1С теряет доступ к собственным временным файлам, отладчик прерывает работу, а платформа вылетает.

---

Шаг 1. Восстанавливаем оригинальный профиль пользователя

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

  1. Завершаем зависшие процессы: Администратор сервера должен открыть Диспетчер задач на сервере, перейти на вкладку «Подробности» (Details), найти все процессы 1cv8.exe и 1cv8c.exe, запущенные от имени пострадавшего пользователя (например, Олега), и принудительно завершить их.
  2. Выполняем полный выход из сессии: Настоятельно рекомендуется полностью завершить терминальный сеанс пользователя (сделать Logoff), а не просто закрыть окно подключения RDP крестиком.
  3. Исправляем реестр Windows: Если после перезапуска процессов пользователь все равно попадает во временный профиль, администратору необходимо зайти в реестр сервера (команда regedit) и перейти по следующему пути:
    HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList
    Среди подразделов найдем ветку, принадлежащую пользователю Олег (ориентируемся по значению параметра ProfileImagePath). Скорее всего, там будут две похожие ветки, одна из которых оканчивается на .bak.
    Удалим ветку без расширения .bak (это созданный временный профиль), а у ветки с расширением .bak переименованием удалим это окончание.
  4. Повторный вход: Просим пользователя снова подключиться по RDP. Рабочий стол, настройки и список информационных баз будут полностью восстановлены.

---

Шаг 2. Правильно подготавливаем файлы классификатора к загрузке

Проанализируем наши действия по подготовке файлов во избежание конфликта прав доступа:

---

Шаг 3. Настраиваем исключения безопасности на сервере

Чтобы антивирусное ПО не блокировало временные файлы платформы в процессе разбора тяжелых архивов адресов, администратору необходимо внести в список исключений сканирования следующие объекты:

Также помните, что 32-битная платформа 1С имеет жесткое ограничение на использование оперативной памяти процессом (не более 2 ГБ). При попытке загрузить адресный классификатор по всей Российской Федерации разом, память процесса переполняется, и платформа падает. Рекомендуется выбирать для загрузки только те регионы, с которыми реально работает организация.

---

Шаг 4. Переопределяем каталог временных файлов через BAT-сценарий

Наиболее надежный и изящный способ обойти проблемы с правами доступа к системным профилям и папке Temp внутри RDP-сессии — это переопределение переменных окружения для конкретного сеанса запуска 1С. Мы можем принудительно перенаправить временные файлы в созданную нами общую папку на диске.

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

  1. Создадим на диске C: сервера папку с именем 1C_Temp и предоставим всем терминальным пользователям права на запись в эту папку.
  2. Создадим текстовый файл и сохраним его с расширением .bat (например, Run_1C.bat).
  3. Наполним файл следующим кодом:

@echo off
SET TEMP=C:\1C_Temp
SET TMP=C:\1C_Temp
if not exist "C:\1C_Temp" mkdir "C:\1C_Temp"
start "" "C:\Program Files (x86)\1cv8\8.3.22.1709\bin\1cv8.exe" ENTERPRISE /F "C:\Base1C"

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

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

← На главную