Синхронизация данных между 1С:Управление торговлей (УТ) и 1С:Бухгалтерия предприятия (БП) — это стандартная задача, однако при переносе серверной части на ОС Linux (например, Ubuntu) возникают специфические нюансы. В этой статье мы подробно разберем, какие механизмы обмена будут работать наиболее стабильно, как обойти ограничения прав доступа и почему привычные для Windows методы могут оказаться недоступны.
Прежде всего, проанализируем архитектуру системы. Когда сервер 1С работает под управлением Linux, мы сразу теряем возможность использования COM-соединения (хотя вы можете изучить пример запуска обмена через COM для понимания логики работы в Windows-среде). Это критически важный момент, так как прямое подключение одной базы к другой «напрямую» через COM-объект в Linux-среде технически невозможно. Следовательно, нам необходимо рассматривать альтернативные транспорты данных.
Разберем основные варианты, которые можно реализовать в данной среде:
Рассмотрим этот вариант как наиболее современный и производительный. Публикация базы на веб-сервере позволяет настроить обмен в режиме реального времени или по расписанию без создания промежуточных файлов.
Пошаговый алгоритм действий:
webinst или через конфигуратор (запущенный под Wine или с клиентской машины).Проанализируем вопрос лицензирования, который часто пугает пользователей. Для публикации на веб-сервере серверу 1С необходимо «видеть» лицензию. Даже если основные ключи у вас распределены по рабочим местам, сеанс обмена через веб-сервис кратковременен. Система запрашивает лицензию только в момент передачи пакета данных. Если на сервере настроен поиск программных лицензий или доступен сетевой HASP-ключ, проблем с публикацией не возникнет.
Этот способ кажется самым простым, но он требует внимательности при настройке прав доступа. Выясним причину возможных ошибок: сервер 1С в Linux запускается от имени специального пользователя, обычно это usr1cv8.
Нюансы настройки прав:
Если мы создаем папку для обмена в файловой системе сервера, мы должны гарантировать, что пользователь usr1cv8 имеет полные права (чтение и запись) на этот каталог. Воспользуемся командами терминала для настройки:
chown -R usr1cv8:grp1cv8 /home/exchange_folder
chmod -R 770 /home/exchange_folder
Если папка обмена находится на другом (Windows) сервере, нам потребуется монтировать её в файловую систему Linux. Использование путей формата \\server\folder (UNC-пути) напрямую в 1С под Linux не сработает. Рассмотрим пример монтирования через cifs-utils:
mount -t cifs //192.168.1.10/Exchange /mnt/1c_exchange -o username=user,password=pass,uid=usr1cv8
После этого в настройках синхронизации 1С мы указываем локальный путь /mnt/1c_exchange.
Как мы уже выяснили, стандартный FTP считается небезопасным. В среде Linux штатно работает SSH, а значит, доступен и SFTP. 1С поддерживает этот протокол «из коробки» начиная с версий платформы 8.3.
Разберем преимущества этого метода:
Посмотрим на пример того, как программно можно проверить доступность ресурса (фрагмент для обработки):
ПараметрыНТТР = Новый HTTPСоединение("myserver.com", , "admin", "password");
Попытка
ПараметрыНТТР.Получить(Новый HTTPЗапрос("/ping"));
Сообщить("Соединение установлено успешно");
Исключение
Сообщить("Ошибка подключения: " + ОписаниеОшибки());
КонецПопытки;
При настройке обмена между современными конфигурациями (УТ 11 и БП 3.0) мы настоятельно рекомендуем использовать формат EnterpriseData. Это универсальный XML-стандарт, который минимизирует риски при обновлении конфигураций. В отличие от старых правил обмена (на базе «Конвертации данных 2.0»), EnterpriseData лучше оптимизирован под веб-технологии и работу на Linux-серверах, так как он менее зависим от специфических метаданных конкретной сборки базы.
В Linux-системах мы можем эффективно использовать системный планировщик Cron для обслуживания процесса обмена. Хотя в 1С есть механизм регламентных заданий, внешние скрипты на Bash помогут нам решить сопутствующие задачи, такие как очистка старых файлов обмена или проверка «зависших» сеансов.
Например, проанализируем простой скрипт для удаления логов обмена старше 7 дней:
find /home/exchange_folder/logs -type f -mtime +7 -exec rm {} \;
Такой подход позволяет поддерживать чистоту в каталогах обмена, что особенно важно при больших объемах передаваемых данных.
Подведем итог нашему исследованию. Для настройки синхронизации между УТ и БП на Linux-сервере:
usr1cv8 и монтируйте сетевые ресурсы в локальные точки монтирования.Следуя этим рекомендациям, мы сможем построить отказоустойчивую систему обмена данными, которая будет эффективно работать в среде Open Source.