Рассмотрим крайне неприятную и на первый взгляд мистическую проблему, с которой часто сталкиваются системные администраторы и специалисты 1С при работе пользователей в терминальном режиме (RDP). Сценарий выглядит следующим образом: пользователь запускает процедуру загрузки адресного классификатора (ФИАС или КЛАДР) в конфигурации Управление торговлей 10.3 (или любой другой устаревшей конфигурации на обычных формах). В процессе импорта система аварийно завершает работу, выдавая ошибку доступа к файлам профиля Администратора. После принудительного перезахода на сервер пользователь видит девственно чистый рабочий стол и абсолютно пустой список информационных баз в стартере 1С.
В этой статье мы подробно проанализируем причины такого системного коллапса, разберем физику происходящих процессов в операционной системе Windows Server и предоставим пошаговый алгоритм решения проблемы.
Для начала разберем цепочку событий, которая приводит к столь разрушительным последствиям для пользовательского окружения. Нам необходимо ответить на три ключевых вопроса.
1. Почему 1С пытается обратиться к профилю Администратора (C:\Users\Administrator)?
Этому способствуют две основные причины:
Access is denied (0x00000005).%TEMP% текущей сессии и администратора.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С теряет доступ к собственным временным файлам, отладчик прерывает работу, а платформа вылетает.
---
Прежде чем приступать к повторной загрузке классификатора, нам необходимо вернуть рабочий стол пользователя и его список баз. Для этого выполним следующие действия:
1cv8.exe и 1cv8c.exe, запущенные от имени пострадавшего пользователя (например, Олега), и принудительно завершить их.regedit) и перейти по следующему пути:
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList
ProfileImagePath). Скорее всего, там будут две похожие ветки, одна из которых оканчивается на .bak.
.bak (это созданный временный профиль), а у ветки с расширением .bak переименованием удалим это окончание.---
Проанализируем наши действия по подготовке файлов во избежание конфликта прав доступа:
C:\ или D:\) нейтральный каталог с простым именем, например, C:\KLADR.---
Чтобы антивирусное ПО не блокировало временные файлы платформы в процессе разбора тяжелых архивов адресов, администратору необходимо внести в список исключений сканирования следующие объекты:
C:\Users\*\AppData\Local\1C\ и C:\Users\*\AppData\Roaming\1C\.*.tmp, *.cdx, *.dbf в каталогах временных файлов пользователей.Также помните, что 32-битная платформа 1С имеет жесткое ограничение на использование оперативной памяти процессом (не более 2 ГБ). При попытке загрузить адресный классификатор по всей Российской Федерации разом, память процесса переполняется, и платформа падает. Рекомендуется выбирать для загрузки только те регионы, с которыми реально работает организация.
---
Наиболее надежный и изящный способ обойти проблемы с правами доступа к системным профилям и папке Temp внутри RDP-сессии — это переопределение переменных окружения для конкретного сеанса запуска 1С. Мы можем принудительно перенаправить временные файлы в созданную нами общую папку на диске.
Рассмотрим, как это реализовать с помощью простого командного файла:
C: сервера папку с именем 1C_Temp и предоставим всем терминальным пользователям права на запись в эту папку..bat (например, Run_1C.bat).
@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"
Разберем детально, что выполняет данный скрипт:
SET TEMP=C:\1C_Temp переопределяет системную переменную временных файлов для текущей командной сессии. Теперь все временные файлы 1С будет создавать в этой папке, а не в профиле пользователя.if not exist проверяет наличие папки и автоматически создает ее, если она по какой-то причине отсутствует.1cv8.exe) в режиме Предприятия (ENTERPRISE) и сразу открывает нужную файловую базу по указанному пути (параметр /F).Использование этого метода полностью гарантирует, что при загрузке тяжелых объемов информации адресного классификатора 1С не обратится к закрытым профилям других пользователей, не вызовет блокировку реестра текущего пользователя и успешно завершит процедуру импорта.