Как настроить синхронизацию РИБ в 1С:Розница через веб-сервер Apache, если каталог обмена недоступен?

Системный администратор 1С v8.3 (Управляемые формы) 1С:Розница Торговля и дистрибуция
← На главную

Приветствуем вас! При работе с распределенными информационными базами (РИБ) в решениях на платформе 1С:Предприятие (например, 1С:Розница) администраторы часто сталкиваются со следующей проблемой: при запуске синхронизации через веб-сервер Apache система выдает ошибку о недоступности каталога обмена. При этом, если запустить базу через обычный толстый клиент, синхронизация проходит успешно. В этой статье мы подробно разберем, почему возникает эта ошибка, и пошагово рассмотрим все возможные способы её решения.

Выясняем причину: почему толстый клиент работает, а веб-клиент выдает ошибку?

Для начала проанализируем ситуацию и поймем разницу в механизмах работы различных клиентов 1С. Когда мы запускаем обычный толстый клиент, все операции выполняются в контексте текущего пользователя Windows. Соответственно, если у вашего пользователя есть права на сетевую шару или локальную папку, платформа 1С без проблем производит запись и чтение файлов.

В случае работы через веб-клиент или тонкий клиент, подключенный к веб-серверу Apache, ситуация кардинально меняется. Веб-сервер выступает в роли посредника. Все файловые операции (формирование XML, архивирование файлов обмена, их перемещение) выполняются непосредственно веб-сервером Apache. При этом процесс Apache работает от имени определенной учетной записи Windows (обычно это системная служба). Если у этой учетной записи нет прав на каталог обмена, вы получите ошибку доступа.

Решение 1. Избегаем использования букв сетевых дисков

Очень распространенная ошибка системных администраторов — указание в настройках синхронизации путей вида Z:\Exchange1C\. Рассмотрим подробнее, почему так делать нельзя:

  1. Служба веб-сервера Apache функционирует в изолированном пространстве операционной системы, известном как «Сессия 0» (Session 0).
  2. Сетевые диски, такие как Z:\, Y:\ и другие, монтируются только в пользовательском сеансе (Session 1 и далее) при входе конкретного пользователя в систему.
  3. Для веб-сервера Apache диска Z:\ просто не существует в природе.

Решение: Всегда прописывайте пути к папкам обмена в формате UNC (Universal Naming Convention). Вместо буквы диска укажите прямой сетевой путь, например: \\ServerName\ExchangeFolder\. Это гарантирует, что система попытается обратиться напрямую к сетевому ресурсу.

Решение 2. Правильная настройка службы Apache в Windows

По умолчанию веб-сервер Apache регистрируется как служба Windows и запускается под встроенной учетной записью Local System (Локальная система). Эта учетная запись имеет неограниченные права на локальном компьютере, но абсолютно бесправна во внешней локальной сети. Она не сможет получить доступ к общей папке (шаре) на другом компьютере.

Разберем по шагам, как переключить службу Apache на запуск от имени пользователя, имеющего сетевой доступ:

  1. Откройте оснастку управления службами Windows. Для этого нажмите комбинацию клавиш Win + R, введите services.msc и нажмите Enter.
  2. Найдите в списке службу вашего веб-сервера Apache (она может называться, например, Apache2.4).
  3. Нажмите правой кнопкой мыши по службе и выберите пункт «Свойства».
  4. Перейдите на вкладку «Вход в систему».
  5. Переключите тумблер с положения «С системной учетной записью» в положение «С учетной записью».
  6. Нажмите кнопку «Обзор» и выберите специально созданного пользователя Windows (например, Администратор или локального пользователя с правами на целевой каталог).
  7. Введите пароль этой учетной записи, подтвердите его и нажмите «Применить».
  8. Перезапустите службу Apache, чтобы изменения вступили в силу.

После этого веб-сервер будет выполнять все операции от лица этого пользователя, и если у него есть доступ к папке \\ServerName\ExchangeFolder\, синхронизация заработает корректно.

Решение 3. Настройка общего доступа и диспетчера учетных данных

Если каталог обмена находится на другом компьютере в локальной сети, убедитесь, что на целевом компьютере правильно настроены сетевые права. Посмотрим на критически важные настройки:

  1. В свойствах общей папки на вкладке «Доступ» и «Безопасность» убедитесь, что пользователю, под которым работает Apache, выданы права на «Чтение» и «Запись».
  2. Если на сетевом компьютере включен общий доступ с парольной защитой, Windows может заблокировать запросы от Apache. Чтобы решить это, зайдите на сервере с Apache в Диспетчер учетных данных Windows (Credential Manager) и добавьте учетные данные для сетевого компьютера (укажите имя компьютера, логин и пароль пользователя, имеющего доступ к этой шаре).
  3. Для быстрой диагностики проблемы можно временно отключить парольную защиту в настройках сети Windows, чтобы проверить, решит ли это проблему с доступом.

Решение 4. Проверка прав на временную папку ОС (Temp)

Мало кто знает, но в процессе выгрузки данных 1С сначала формирует временный XML-файл в локальной папке Temp операционной системы, сжимает его в .zip архив и только после этого пытается скопировать готовый архив в финальный каталог обмена. Если у пользователя Apache нет прав на запись во временную папку, выгрузка оборвется в самом начале.

Проанализируем, где находятся эти папки:

Убедитесь, что у учетной записи, под которой крутится служба веб-сервера, есть права «Полный доступ» на соответствующую папку Temp.

Решение 5. Самый надежный метод — переход на веб-сервисы (WS)

Если вы хотите навсегда забыть про проблемы с правами на папки, сетевыми дисками и авторизацией в Windows, мы рекомендуем настроить синхронизацию через встроенные веб-сервисы 1С. В конфигурации 1С:Розница этот функционал присутствует по умолчанию.

При таком подходе базы данных общаются напрямую друг с другом по протоколу HTTP или HTTPS. Нам вообще не нужны файловые каталоги или FTP-серверы! Выгруженный пакет данных передается прямо в теле SOAP-запроса через опубликованный веб-сервис RemoteExchangeExecution.

Рассмотрим по шагам преимущества и схему настройки:

  1. На веб-сервере Apache публикуется база-источник (или база-приемник).
  2. При настройке синхронизации в узле РИБ мы выбираем вариант подключения «Через веб-сервис».
  3. Указываем URL-адрес публикации (например, http://server/base/ws/RemoteExchangeExecution?wsdl), а также логин и пароль пользователя 1С, у которого есть права на выполнение синхронизации.
  4. Обмен происходит мгновенно и безопасно, так как данные передаются через веб-протокол, защищенный средствами шифрования SSL/TLS (если настроен HTTPS).

Решение 6. Тонкая настройка пула соединений в default.vrd

Если вы используете файловый вариант базы данных, опубликованной на веб-сервере 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) как наиболее стабильный и современный метод интеграции.

← На главную