Приветствуем вас! При работе с распределенными информационными базами (РИБ) в решениях на платформе 1С:Предприятие (например, 1С:Розница) администраторы часто сталкиваются со следующей проблемой: при запуске синхронизации через веб-сервер Apache система выдает ошибку о недоступности каталога обмена. При этом, если запустить базу через обычный толстый клиент, синхронизация проходит успешно. В этой статье мы подробно разберем, почему возникает эта ошибка, и пошагово рассмотрим все возможные способы её решения.
Для начала проанализируем ситуацию и поймем разницу в механизмах работы различных клиентов 1С. Когда мы запускаем обычный толстый клиент, все операции выполняются в контексте текущего пользователя Windows. Соответственно, если у вашего пользователя есть права на сетевую шару или локальную папку, платформа 1С без проблем производит запись и чтение файлов.
В случае работы через веб-клиент или тонкий клиент, подключенный к веб-серверу Apache, ситуация кардинально меняется. Веб-сервер выступает в роли посредника. Все файловые операции (формирование XML, архивирование файлов обмена, их перемещение) выполняются непосредственно веб-сервером Apache. При этом процесс Apache работает от имени определенной учетной записи Windows (обычно это системная служба). Если у этой учетной записи нет прав на каталог обмена, вы получите ошибку доступа.
Очень распространенная ошибка системных администраторов — указание в настройках синхронизации путей вида Z:\Exchange1C\. Рассмотрим подробнее, почему так делать нельзя:
Z:\, Y:\ и другие, монтируются только в пользовательском сеансе (Session 1 и далее) при входе конкретного пользователя в систему.Z:\ просто не существует в природе.Решение: Всегда прописывайте пути к папкам обмена в формате UNC (Universal Naming Convention). Вместо буквы диска укажите прямой сетевой путь, например: \\ServerName\ExchangeFolder\. Это гарантирует, что система попытается обратиться напрямую к сетевому ресурсу.
По умолчанию веб-сервер Apache регистрируется как служба Windows и запускается под встроенной учетной записью Local System (Локальная система). Эта учетная запись имеет неограниченные права на локальном компьютере, но абсолютно бесправна во внешней локальной сети. Она не сможет получить доступ к общей папке (шаре) на другом компьютере.
Разберем по шагам, как переключить службу Apache на запуск от имени пользователя, имеющего сетевой доступ:
services.msc и нажмите Enter.Apache2.4).Администратор или локального пользователя с правами на целевой каталог).После этого веб-сервер будет выполнять все операции от лица этого пользователя, и если у него есть доступ к папке \\ServerName\ExchangeFolder\, синхронизация заработает корректно.
Если каталог обмена находится на другом компьютере в локальной сети, убедитесь, что на целевом компьютере правильно настроены сетевые права. Посмотрим на критически важные настройки:
Мало кто знает, но в процессе выгрузки данных 1С сначала формирует временный XML-файл в локальной папке Temp операционной системы, сжимает его в .zip архив и только после этого пытается скопировать готовый архив в финальный каталог обмена. Если у пользователя Apache нет прав на запись во временную папку, выгрузка оборвется в самом начале.
Проанализируем, где находятся эти папки:
Local System, временные файлы создаются по пути: C:\Windows\Temp.C:\Users\ИмяПользователя\AppData\Local\Temp.Убедитесь, что у учетной записи, под которой крутится служба веб-сервера, есть права «Полный доступ» на соответствующую папку Temp.
Если вы хотите навсегда забыть про проблемы с правами на папки, сетевыми дисками и авторизацией в Windows, мы рекомендуем настроить синхронизацию через встроенные веб-сервисы 1С. В конфигурации 1С:Розница этот функционал присутствует по умолчанию.
При таком подходе базы данных общаются напрямую друг с другом по протоколу HTTP или HTTPS. Нам вообще не нужны файловые каталоги или FTP-серверы! Выгруженный пакет данных передается прямо в теле SOAP-запроса через опубликованный веб-сервис RemoteExchangeExecution.
Рассмотрим по шагам преимущества и схему настройки:
http://server/base/ws/RemoteExchangeExecution?wsdl), а также логин и пароль пользователя 1С, у которого есть права на выполнение синхронизации.Если вы используете файловый вариант базы данных, опубликованной на веб-сервере Apache, то запуск регламентных заданий (включая автоматическое расписание обмена) имеет свои особенности. Они выполняются расширением веб-сервера только тогда, когда есть активные сеансы.
Чтобы фоновые задания обмена данными не зависали и запускались вовремя, необходимо правильно сконфигурировать файл публикации default.vrd. Давайте посмотрим, как должен выглядеть этот файл:
<?xml version="1.0" encoding="UTF-8"?>
<point xmlns="http://v8.1c.ru/8.2/virtual-resource-system"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
base="/base"
ib="File="C:\1C_Bases\Retail";">
<ws>
<point name="RemoteExchangeExecution"
alias="RemoteExchangeExecution.1cws"/>
</ws>
<pool size="10"
enable="true"/>
</point>
В данном примере параметр pool size="10" указывает веб-серверу поддерживать пул соединений, что позволяет корректно и без задержек обрабатывать фоновые и регламентные задания 1С (включая РегламентныеЗадания обмена) в файловом режиме.
Таким образом, мы детально разобрали все нюансы настройки синхронизации 1С:Розница через веб-сервер Apache. Рекомендуем начать с проверки прав службы Apache и использования UNC-путей, а в долгосрочной перспективе перевести обмен на веб-сервисы (WS) как наиболее стабильный и современный метод интеграции.