При администрировании и поддержке систем на платформе 1С:Предприятие 7.7 специалисты часто сталкиваются с техническими ограничениями архитектуры прошлых лет. Одной из классических задач является организация работы нескольких физических компьютеров (или пользователей) под одной и той же учетной записью. Например, это может потребоваться для сотрудников одного отдела, которые должны иметь идентичный интерфейс, права и набор доступных журналов документов.
В этой статье мы подробно разберем, почему возникает популярная ошибка «Каталог пользователя занят!», проанализируем внутренние механизмы блокировки платформы 1С 7.7, а также рассмотрим несколько практических способов обхода этого ограничения — от простых административных решений до тонкой настройки параметров запуска.
Для того чтобы понять, как обойти ограничение, давайте проанализируем внутреннюю логику работы платформы 1С 7.7 при авторизации пользователя. За каждым зарегистрированным в Конфигураторе пользователем обычно закрепляется индивидуальный рабочий каталог. Этот каталог используется системой для хранения персональных настроек (таких как размеры и положения окон, открытые панели инструментов, история выбора в полях ввода и т.д.). Все эти параметры сохраняются в специальном файле 1cv7.cfg.
Когда первый компьютер авторизуется в базе данных под конкретным пользователем, платформа выполняет следующие действия:
1Cv7.LCK.Когда второй компьютер пытается войти в систему под тем же самым именем пользователя, платформа 1С 7.7 пытается выполнить ту же процедуру проверки в том же каталоге. Обнаружив, что файл-маркер 1Cv7.LCK уже создан и монопольно заблокирован другим процессом, система прерывает запуск и выдает критическое предупреждение: «Каталог пользователя занят!».
Как совершенно правильно заметили участники обсуждения, простейшим решением является полное удаление пути к рабочему каталогу пользователя. Давайте разберем по шагам, как это сделать:
После выполнения этих действий платформа перестанет обращаться к выделенной папке на сервере при входе. Файл блокировки 1Cv7.LCK просто не будет создаваться, что позволит запускать неограниченное число сеансов под одним именем.
Важное предупреждение: данный способ имеет ряд существенных недостатков. Во-первых, файлы настроек интерфейса 1cv7.cfg начнут записываться либо в корневую папку базы данных, либо в реестр Windows операционной системы. При одновременной работе нескольких ПК настройки будут постоянно затираться сессией, которая закрылась последней. Во-вторых, некоторые внешние отчеты и обработки используют функцию КаталогПользователя() для выгрузки временных файлов. Если этот каталог пуст или совпадает у всех сотрудников, это может приводить к ошибкам совместного доступа к файлам и искажению данных в отчетах.
Рассмотрим более изящный и стабильный способ, который позволяет сохранить индивидуальные настройки для каждого компьютера, избежав при этом конфликтов блокировки.
Обычно в Конфигураторе путь к каталогу пользователя прописывают относительно каталога базы данных, например: .\User_Sales. Из-за этого папка физически располагается на сервере, где к ней имеют доступ все сетевые компьютеры.
Мы предлагаем указать в качестве рабочего каталога абсолютный локальный путь на диске C: клиентских машин:
C:\1C_Local_User\.C:\1C_Local_User\.Как это работает на практике: при запуске 1С на Компьютере №1 программа создаст файл блокировки 1Cv7.LCK на его локальном диске C:. При запуске на Компьютере №2 программа создаст файл блокировки на его собственном локальном диске C:. Так как эти файлы находятся на физически разных жестких дисках, они никак не пересекаются и не конфликтуют. При этом настройки интерфейса каждого компьютера будут сохраняться локально и не будут мешать друг другу.
Обратите внимание: перед первым запуском базы необходимо убедиться, что указанная папка физически существует на диске каждого компьютера, иначе 1С 7.7 выдаст ошибку: «Рабочий каталог пользователя не обнаружен».
Если вы не хотите менять глобальные настройки пользователя в Конфигураторе (или это невозможно сделать из-за ограничений прав доступа), вы можете переопределить рабочий каталог индивидуально для каждого компьютера с помощью ярлыка запуска.
Для этого мы воспользуемся специальным ключом командной строки 1С 7.7 — /U. Давайте посмотрим на пример настройки строки запуска в свойствах ярлыка на рабочем столе:
"C:\Program Files\1CV77\BIN\1cv7.exe" enterprise /D"\\Server\1C_Base\" /N"ОбщийПользователь" /U"C:\LocalFolder1\"
На Компьютере №1 в свойствах ярлыка укажите в конце параметр /U"C:\LocalFolder1\", а на Компьютере №2 укажите параметр /U"C:\LocalFolder2\". Платформа принудительно назначит эти локальные каталоги в качестве рабочих для конкретных сеансов работы, полностью исключая возникновение ошибки занятости каталога.
Отдельно проанализируем ситуацию, когда база данных развернута на терминальном сервере Windows. Очень часто пользователи сталкиваются с ошибкой «Каталог пользователя занят!» даже в тех случаях, когда под учетной записью никто не работает физически.
Причиной этого являются «зависшие» терминальные сессии. Если сотрудник некорректно завершил работу (например, просто закрыл окно подключения к удаленному рабочему столу крестиком, не выйдя из 1С), процесс 1cv7.exe продолжает выполняться на сервере в фоновом режиме, удерживая файл 1Cv7.LCK.
Для решения этой проблемы системному администратору необходимо зайти в диспетчер задач на сервере, найти соответствующего пользователя во вкладке «Пользователи» и принудительно завершить его зависший процесс 1cv7.exe, либо полностью сбросить зависшую RDP-сессию.
В завершение обсуждения важно отметить, что хотя технически запуск нескольких ПК под одной учетной записью реализуется достаточно просто, этот подход несет в себе серьезные организационные риски:
Поэтому лучшим и наиболее правильным решением всегда остается создание индивидуальных пользователей в Конфигураторе с последующей доработкой программного кода конфигурации (как это успешно сделал автор темы на форуме, реализовав отбор документов не по конкретному пользователю, а по его подразделению).