При работе с базами данных 1С:Предприятие в файловом режиме пользователи часто сталкиваются с ситуацией, когда обычный запуск программы позволяет без проблем выполнять синхронизацию через общую сетевую папку, но стоит опубликовать эту же базу на веб-сервере (IIS или Apache) для ускорения работы, как обмен данными перестает функционировать. При этом из проводника Windows папка доступна, права на чтение и запись есть, а 1С выдает ошибку или просто «не видит» файл обмена. Разберем по шагам, почему так происходит и как правильно настроить окружение для стабильной работы синхронизации.
Для начала проанализируем ситуацию с точки зрения безопасности операционной системы. Когда вы запускаете 1С как обычное приложение (толстый или тонкий клиент), процесс 1cv8.exe выполняется от имени вашей учетной записи. Вы авторизованы в домене или локальной сети, и у вас есть права доступа к сетевому ресурсу \\Server\Exchange. В таких сценариях полезен лаунчер для 1C с проверкой доменной авторизации.
Однако, как только база публикуется на веб-сервере, архитектура меняется. Теперь код 1С, отвечающий за выполнение синхронизации, исполняется не вашим клиентским приложением, а процессом веб-сервера. Рассмотрим подробнее, от чьего имени работают популярные веб-серверы:
IIS AppPool\ИмяПула или IUSR.LocalSystem (Локальная система).Важный момент: системные учетные записи по умолчанию имеют доступ только к локальным ресурсам того компьютера, на котором они запущены. Они не имеют прав в сети и «не знают» о существовании ваших общих папок на других серверах или компьютерах. Именно поэтому синхронизация успешно проходит в файловом режиме под пользователем, но терпит неудачу при работе через веб-публикацию.
Если ваша база опубликована на IIS, нам необходимо изменить «удостоверение» (Identity) пула приложений, чтобы веб-сервер мог обращаться к сетевым ресурсам. Выполним следующие действия:
DefaultAppPool).ApplicationPoolIdentity укажем Особая учетная запись и нажмем «Установить».После внесения изменений обязательно перезапустим пул приложений. Теперь процесс веб-сервера будет «представляться» сети как указанный вами пользователь, и доступ к папке \\Kassa\obmen будет открыт.
В случае с Apache ситуация аналогична, но настройка производится через службы Windows. Для автоматизации развертывания можно использовать установщик Apache HTTP Server для Windows, а ниже мы рассмотрим подробнее ручной процесс:
Win + R и введем services.msc для открытия списка служб..\ИмяПользователя для локальных или DOMAIN\User для доменных), который имеет доступ к сетевой папке.Проанализируем риски: Изменение учетной записи службы на пользовательскую повышает права веб-сервера. Убедитесь, что этот пользователь также имеет права на папку, в которой физически лежит база данных 1С и временные файлы Windows (C:\Windows\Temp), иначе публикация перестанет работать вовсе.
При настройке синхронизации в интерфейсе 1С крайне важно правильно указывать путь к каталогу обмена. Забудьте про существование сетевых дисков типа Z:\ или X:\. Службы Windows не видят диски, которые вы подключили вручную в своем сеансе пользователя.
Используйте только полные UNC-пути. Пример правильного указания пути в настройках синхронизации:
\\ComputerName\SharedFolder\ExchangeData
Если вы укажете Z:\Obmen, система выдаст ошибку «Каталог не обнаружен», так как для веб-сервера диска Z: не существует.
Как справедливо заметили участники обсуждения на форуме, использование сетевых папок (SMB) для веб-сервера — это часто путь к возникновению проблем с безопасностью и стабильностью. Еще одним надежным вариантом являются обмены через брокеры, но классическим профессиональным решением считается использование FTP-сервера.
Рассмотрим, почему это лучше:
Для реализации этого метода достаточно поднять службу FTP на том же сервере, где находится папка обмена, и в настройках синхронизации 1С выбрать тип транспорта «FTP-ресурс», указав адрес, логин и пароль.
Поскольку одна из ваших баз уже опубликована на веб-сервере, использование посредников в виде папок или FTP-серверов вовсе необязательно. 1С поддерживает прямой обмен данными по протоколу HTTP/HTTPS.
Посмотрим на алгоритм настройки:
http://server.com/base_name).В этом случае данные будут передаваться напрямую из одной базы в другую через HTTP-запросы. Это исключает любые ошибки, связанные с правами доступа к папкам на уровне Windows.
Выясним еще одну тонкую техническую причину, по которой даже после настройки прав синхронизация может не работать. Это проблема делегирования полномочий в среде Kerberos. Если веб-сервер запущен под доменным пользователем и пытается достучаться до сетевой папки на другом сервере, Windows из соображений безопасности может запретить передачу этих учетных данных дальше первого сервера.
Если вы столкнулись с такой ситуацией, решением будет либо использование локальной папки на самом веб-сервере (с последующим копированием файлов скриптом), либо настройка доверенного делегирования в контроллере домена (Active Directory), что уже является задачей для квалифицированного системного администратора.
Подведем итог: Основная проблема заключается в несовпадении контекста безопасности пользователя и веб-службы. Настройте запуск IIS/Apache от имени пользователя с сетевыми правами или перейдите на более современные протоколы обмена (FTP или HTTP), чтобы навсегда забыть о проблемах с доступом к сетевым папкам.