Рассмотрим распространенную проблему в терминальных средах RDP на платформах «1С:Предприятие 8.3», когда платформа перестает изолировать профили пользователей Windows и сохраняет временные файлы, настройки и кэш в системную папку C:\Windows\Application Data\1C. В результате все кассиры или пользователи терминального сервера работают с одной общей папкой кэша, из-за чего подставляется единое рабочее место, слетают настройки подключаемого кассового оборудования и некорректно предлагается имя последнего заходившего пользователя.
Разберем подробнее, почему возникают подобные сбои после системных аварий или перезагрузок и как восстановить корректное распределение временных каталогов для каждого пользователя системы.
Проанализируем механику работы платформы «1С:Предприятие» с файловой системой Windows. При запуске сеанса платформа определяет пути к профилю пользователя через системные API функций ОС и переменные окружения %APPDATA% и %LOCALAPPDATA%. В штатном режиме кэш сохраняется в персональные каталоги вида C:\Users\%USERNAME%\AppData\Roaming\1C и C:\Users\%USERNAME%\AppData\Local\1C.
Смещение путей в каталог C:\Windows\Application Data\1C происходит по следующим причинам:
1cv8.exe или 1cv8s.exe) мог включиться режим совместимости с устаревшими версиями Windows (например, Windows XP). В этом режиме операционная система принудительно перенаправляет обращения программы к профилю в системный каталог C:\Windows.HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders сбились значения системных переменных на зафиксированные пути C:\Windows\... вместо динамических переменных профиля.C:\Users, из-за чего операционная система перенаправляет запись временных файлов в глобальную папку.В первую очередь проверим, не задействован ли режим совместимости Windows для стартера и исполняемого файла 1С.
C:\Program Files (x86)\1cv8\8.3.X.X\bin\ (или C:\Program Files\1cv8\8.3.X.X\bin\).1cv8.exe и 1cv8s.exe и откроем Свойства.HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers и удалим параметры, ссылающиеся на файлы 1С.Посмотрим на настройки системных папок профилей в реестре ОС, которые могли сброситься при аварийном сбое сервера.
regedit от имени администратора.HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders.%USERPROFILE%\AppData\Roaming;
Local AppData — должно содержать значение %USERPROFILE%\AppData\Local.C:\Windows\..., исправим его на соответствующую динамическую переменную с %USERPROFILE%.HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList на корректность указанных путей к профилям пользователей.Если требуется гарантированно изолировать кэш для каждого пользователя или временно обойти сбой операционной системы, настроим запуск 1С через командный файл (bat-файл) с явным переопределением переменных среды.
Создадим текстовый файл с расширением .bat или .cmd и поместим в него следующий код:
set APPDATA=C:\Users\%USERNAME%\AppData\Roaming
set LOCALAPPDATA=C:\Users\%USERNAME%\AppData\Local
set USERPROFILE=C:\Users\%USERNAME%
start "" "C:\Program Files (x86)\1cv8\8.3.10.2667\bin\1cv8s.exe"
При запуске 1С через такой файл платформа гарантированно привяжет временные файлы и кэш к папке текущего пользователя Windows (%USERNAME%), что позволит разделить рабочие места кассиров и избавит от путаницы с настройками оборудования.
После внесения изменений в реестр или настройки сценария запуска выполним очистку ошибочно созданного общего кэша:
1cv8.exe.C:\Windows\Application Data\1C.C:\Users, чтобы каждый пользователь имел полные права на свой профиль.1Cv8 создаются корректно в C:\Users\%USERNAME%\AppData\Local\1C и C:\Users\%USERNAME%\AppData\Roaming\1C.