Рассмотрим распространенную ситуацию: после перевода информационной базы 1С с файлового варианта на клиент-серверный под управлением ОС Linux (Debian, Ubuntu, CentOS) перестает работать автоматический (фоновый) обмен данными. При этом ручной обмен на стороне клиентского приложения проходит успешно, а при запуске фонового задания или с установленной настройкой "Выполнять обмен данными под полными правами" процесс завершается за одну секунду без вывода видимых ошибок.
Проанализируем основные причины такого поведения:
\\SRV1C\base1c\tmp\exchange являются специфичными для ОС Windows. Серверный процесс 1С на Linux не умеет с ними работать напрямую и не видит каталог обмена.rphost) не может взаимодействовать с COM-объектами (например, COMConnector). Если настройка обмена предполагала прямое COM-подключение между базами, при выполнении фонового задания на сервере возникнет ошибка или обмен тихо прервется.usr1cv8). Если этот пользователь не имеет прав на чтение и запись в каталог обмена, операция завершится неудачей.Разберем, как с помощью встроенного языка 1С проверить доступность каталога для серверного процесса. Напишем процедуру, использующую объект Файл и метод Существует:
Функция ПроверитьНаличиеКаталога(Знач ИмяКаталога, Знач ПроверятьЧтоНайденныйФайлЭтоКаталог = Ложь) Экспорт
Если ПустаяСтрока(ИмяКаталога) Тогда
Возврат Ложь;
КонецЕсли;
ВыбФайл = Новый Файл(ИмяКаталога);
Если Не ВыбФайл.Существует Тогда
Возврат Ложь;
КонецЕсли;
Если ПроверятьЧтоНайденныйФайлЭтоКаталог Тогда
Возврат ВыбФайл.ЭтоКаталог;
Иначе
Возврат Истина;
КонецЕсли;
КонецФункции
Обратите внимание: данный код должен исполняться именно в контексте сервера (например, через вызов процедуры общего модуля с директивой &НаСервере), чтобы убедиться, что серверный процесс видит указанный путь.
Для исправления работы обмена выполним следующие шаги:
\\SRV1C\base1c\tmp\exchange пропишем /home/share/base1c/tmp/exchange/ или путь к смонтированному ресурсу (например, /mnt/exchange/).cifs-utils и записи в /etc/fstab.usr1cv8 имеет права на чтение, запись и создание файлов в указанной директории. Права доступа можно установить через утилиты chown и chmod в консоли Linux.Чтобы избежать проблем с файловыми путями и COM-соединениями на сервере Linux, проанализируем кроссплатформенные способы передачи данных:
1. Обмен через HTTP / Web-сервисы
Опубликуем информационные базы на веб-сервере (Apache или Nginx). Обмен будет происходить напрямую через объекты HTTPСоединение или WSПрокси, что полностью исключает зависимость от файловой системы ОС и COM-технологий.
2. Использование FTP / SFTP транспорта
В настройках транспорта обмена выберем FTP. Платформа 1С штатно поддерживает объект FTPСоединение на всех операционных системах, что позволяет выгружать и загружать файлы обмена без монтирования сетевых папок.
3. Обмен через электронную почту
Использование объектов ИнтернетПочта и ПочтовоеСообщение позволяет передавать сообщения обмена в виде почтовых вложений. Данный метод работает одинаково надежно как на Windows, так и на Linux.