При работе с клиент-серверной версией 1С часто настраивают синхронизацию данных между конфигурациями, например, между «Зарплатой и Управлением Персоналом» (ЗУП) и «Бухгалтерией предприятия» (БП). Для корректного переноса данных иногда требуется доработка типового обмена сотрудниками или специальная регистрация физического лица для обмена из ЗУП 3.1, но одним из самых удобных способов транспорта данных остается прямое подключение. Однако именно с ним может возникнуть специфическая ошибка: при запуске обмена из ЗУП система выдает сообщение «Файл не обнаружен 'C:\Users\имя_пользователя\AppData\Local\Temp\Exchange...\{...}.xml' [ОшибкаДоступаКЛокальномуФайлу]». При этом, что самое интересное, синхронизация, запущенная из Бухгалтерии, проходит успешно.
В этой статье мы подробно разберем, почему возникает такая ситуация и как шаг за шагом ее исправить. Проблема кроется не в настройках самой 1С, а в правах доступа на уровне операционной системы сервера.
Чтобы понять корень проблемы, нужно разобраться в механизме прямого подключения. Когда вы запускаете синхронизацию из ЗУП, эта база данных инициирует COM-соединение с базой Бухгалтерии. На сервере 1С за этот процесс отвечает специальное приложение COM+, которое обычно называется V83.COMConnector (цифры могут меняться в зависимости от версии платформы).
Ключевой момент заключается в том, что это приложение COM+ запускается от имени определенного пользователя операционной системы. В то же время, сама служба «Агент сервера 1С:Предприятие» работает под другим пользователем (в примере из ошибки это 1c_service).
Ошибка [ОшибкаДоступаКЛокальномуФайлу] возникает потому, что:
Temp того пользователя, под которым работает сервер 1С (C:\Users\1c_service\AppData\Local\Temp\).V83.COMConnector.Temp пользователя службы 1С.Когда же вы запускаете обмен из БП, COM-соединение устанавливается в обратную сторону, и контекст безопасности оказывается другим, поэтому ошибка не возникает. Теперь, когда причина ясна, рассмотрим шаги для ее устранения.
Это наиболее правильный и надежный способ решения проблемы. Нам нужно дать пользователю, от имени которого работает COM-компонента, необходимые права на временную папку службы 1С.
Шаг 1. Определяем пользователя службы сервера 1С
Сначала нужно точно узнать, под каким пользователем работает агент сервера. Путь к временной папке из текста ошибки уже дает нам эту информацию. В ошибке Файл не обнаружен 'C:\Users\1c_service\AppData\Local\Temp\...' имя пользователя — 1c_service. Если вы не уверены, откройте на сервере оснастку «Службы» (Services), найдите службу «Агент сервера 1С:Предприятие 8.3» и посмотрите ее свойства на вкладке «Вход в систему».
Шаг 2. Определяем пользователя COM-компоненты
Теперь найдем пользователя, который отвечает за COM-соединение. Для этого на сервере 1С выполним следующие действия:
V83.COMConnector.Здесь вы увидите, от имени какого пользователя запускается компонента. Это может быть «Текущий пользователь», «Системная учетная запись» или «Указанный пользователь». Запомните этого пользователя.
Шаг 3. Предоставляем права доступа
Остался последний шаг — выдать права пользователю из Шага 2 на папку пользователя из Шага 1.
C:\Users\1c_service\. Обратите внимание, что папка AppData по умолчанию скрыта, поэтому вам может понадобиться включить отображение скрытых файлов и папок в настройках Проводника.AppData\Local\Temp, нажмите на ней правой кнопкой мыши и выберите «Свойства».После этих действий повторите попытку синхронизации из ЗУП. Ошибка должна исчезнуть. Если же после восстановления связи обнаружится, что данные в базах разошлись, может потребоваться перезаполнение регистра соответствия объектов информационных баз для восстановления корректной связки объектов — для этого есть обработка регистрации объектов для обмена.
Иногда, особенно после обновления платформы 1С:Предприятие, регистрация COM-компоненты в системе может быть нарушена. Это также может приводить к ошибкам доступа. В этом случае поможет принудительная перерегистрация. Если же стандартный механизм продолжает давать сбои, альтернативой может стать отдельная синхронизация справочников Физические лица и Сотрудники из ЗУП в Бухгалтерию через COM соединение.
Для перерегистрации выполните следующие действия:
cmd.exe) от имени администратора на сервере 1С.bin вашей актуальной версии платформы 1С.
regsvr32 /u "C:\Program Files\1cv8\8.3.25.1374\bin\comcntr.dll"
regsvr32 "C:\Program Files\1cv8\8.3.25.1374\bin\comcntr.dll"
Важно: если на сервере установлено несколько версий платформы, убедитесь, что вы используете путь к той версии, на которой работают ваши базы. Наличие нескольких версий само по себе может вызывать конфликты, поэтому рекомендуется удалять старые, неиспользуемые платформы.
Если решить проблему с правами быстро не удается, а обмен данными нужен срочно, можно временно переключить синхронизацию на файловый вариант.
Этот способ менее удобен, так как требует ручного запуска или настройки регламентных заданий в обеих базах. Кроме того, при использовании универсального формата иногда возникают свои сложности, например, может понадобиться исправление зацикливания синхронизации, но в целом файловый обмен более устойчив к проблемам с правами COM-доступа и может служить надежным временным решением — в этом поможет двусторонняя синхронизация по правилам EnterpriseData.