Почему не работает фоновый обмен данными 1С на сервере Linux и как это исправить

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

Анализ проблемы: особенности работы кластера 1С на ОС Linux

Рассмотрим распространенную ситуацию: после перевода информационной базы 1С с файлового варианта на клиент-серверный под управлением ОС Linux (Debian, Ubuntu, CentOS) перестает работать автоматический (фоновый) обмен данными. При этом ручной обмен на стороне клиентского приложения проходит успешно, а при запуске фонового задания или с установленной настройкой "Выполнять обмен данными под полными правами" процесс завершается за одну секунду без вывода видимых ошибок.

Проанализируем основные причины такого поведения:

  1. Использование UNC-путей Windows в Linux. Сетевые пути формата \\SRV1C\base1c\tmp\exchange являются специфичными для ОС Windows. Серверный процесс 1С на Linux не умеет с ними работать напрямую и не видит каталог обмена.
  2. Ограничения работы с COM-объектами. В операционных системах семейства Linux рабочий процесс кластера 1С (rphost) не может взаимодействовать с COM-объектами (например, COMConnector). Если настройка обмена предполагала прямое COM-подключение между базами, при выполнении фонового задания на сервере возникнет ошибка или обмен тихо прервется.
  3. Контекст прав пользователя операционной системы. Регламентное задание выполняется на сервере от имени системной учетной записи, под которой запущен демон 1С (обычно это usr1cv8). Если этот пользователь не имеет прав на чтение и запись в каталог обмена, операция завершится неудачей.

Шаг 1. Проверка доступности каталога из кода 1С

Разберем, как с помощью встроенного языка 1С проверить доступность каталога для серверного процесса. Напишем процедуру, использующую объект Файл и метод Существует:


Функция ПроверитьНаличиеКаталога(Знач ИмяКаталога, Знач ПроверятьЧтоНайденныйФайлЭтоКаталог = Ложь) Экспорт
    Если ПустаяСтрока(ИмяКаталога) Тогда
        Возврат Ложь;
    КонецЕсли;
    
    ВыбФайл = Новый Файл(ИмяКаталога);
    Если Не ВыбФайл.Существует Тогда
        Возврат Ложь;
    КонецЕсли;
    
    Если ПроверятьЧтоНайденныйФайлЭтоКаталог Тогда
        Возврат ВыбФайл.ЭтоКаталог;
    Иначе
        Возврат Истина;
    КонецЕсли;
КонецФункции

Обратите внимание: данный код должен исполняться именно в контексте сервера (например, через вызов процедуры общего модуля с директивой &НаСервере), чтобы убедиться, что серверный процесс видит указанный путь.

Шаг 2. Настройка путей файловой системы и прав доступа

Для исправления работы обмена выполним следующие шаги:

  1. Изменим путь к каталогу обмена. В настройках узла обмена укажем абсолютный путь в формате Linux: вместо \\SRV1C\base1c\tmp\exchange пропишем /home/share/base1c/tmp/exchange/ или путь к смонтированному ресурсу (например, /mnt/exchange/).
  2. Смонтируем сетевой ресурс Samba (SMB). Если каталог обмена находится на отдельном файловом сервере, смонтируем его в файловую систему Linux с помощью пакета cifs-utils и записи в /etc/fstab.
  3. Предоставим права пользователю 1С. Убедимся, что учетная запись usr1cv8 имеет права на чтение, запись и создание файлов в указанной директории. Права доступа можно установить через утилиты chown и chmod в консоли Linux.

Альтернативные варианты обмена для Linux-серверов

Чтобы избежать проблем с файловыми путями и COM-соединениями на сервере Linux, проанализируем кроссплатформенные способы передачи данных:

1. Обмен через HTTP / Web-сервисы
Опубликуем информационные базы на веб-сервере (Apache или Nginx). Обмен будет происходить напрямую через объекты HTTPСоединение или WSПрокси, что полностью исключает зависимость от файловой системы ОС и COM-технологий.

2. Использование FTP / SFTP транспорта
В настройках транспорта обмена выберем FTP. Платформа 1С штатно поддерживает объект FTPСоединение на всех операционных системах, что позволяет выгружать и загружать файлы обмена без монтирования сетевых папок.

3. Обмен через электронную почту
Использование объектов ИнтернетПочта и ПочтовоеСообщение позволяет передавать сообщения обмена в виде почтовых вложений. Данный метод работает одинаково надежно как на Windows, так и на Linux.

← На главную