При организации интеграции 1С с несколькими интернет-магазинами часто возникает задача настроить независимые сценарии выгрузки. Например, для одного сайта выгрузка остатков и цен должна выполняться каждые 15 минут, а для второго — полная выгрузка данных только один раз в сутки. При попытке настроить такое поведение через стандартную консоль заданий или при переносе базы на сервер под управлением Linux специалисты часто сталкиваются с ошибками запуска фоновых заданий и проблемами файловой системы. Разберем по шагам, почему возникают эти ошибки и как правильно настроить раздельный обмен для нескольких сайтов.
Проанализируем механизм работы регламентного обмена с сайтами. Типовой метод модуля обмена (например, Б_ОбщиеПроцедурыИФункцииОбменаССайтом или аналогичные процедуры интеграции) принимает на вход параметры, главным из которых является ссылка на конкретный узел обмена (настройку). Если попытаться создать регламентное задание вручную через универсальную обработку «Консоль регламентных заданий» или стандартный список заданий без заполнения массива параметров, платформа 1С вызывает процедуру-обработчик с пустым набором аргументов. В результате возникает исключение несоответствия сигнатуры метода.
Правильный порядок действий при настройке расписания:
При таком подходе платформа 1С автоматически регистрирует подчиненный экземпляр фонового задания и передает в массив параметров ссылку на текущий узел обмена. В результате каждый сайт обрабатывается независимо и по собственному расписанию без конфликтов параметров.
Если в ручном режиме на клиентском компьютере обмен отрабатывает штатно, а при регламентном запуске падает с ошибкой доступа, выясним причину в контексте исполнения кода. Ручной запуск выполняется на стороне клиента под управлением Windows, где путь вида C:\... корректен. Регламентные и фоновые задания всегда выполняются на стороне сервера 1С. Если сервер 1С работает под управлением ОС Linux, обращение к диску C: вызывает критическую ошибку:
Ошибка при вызове метода контекста (СоздатьКаталог) по причине: Ошибка доступа к файлу 'C:'
Разберем, как исправить эту проблему:
/var/tmp/ или /tmp/exchange_logs/.usr1cv8. Данному пользователю операционной системы должны быть выданы полные права на чтение и запись в указанную директорию.Рассмотрим ситуацию, когда при регламентном задании в журнал пишется ошибка: «Не удалось получить данные с сервера... Авторизация не выполнена». Поскольку исходящие запросы в фоновом режиме выполняет сам сервер Linux, причины сбоя заключаются в окружении сервера:
ping или curl). Если настроен локальный DNS или требуется прокси-сервер, убеждаемся, что сетевые пакеты на порты 80 и 443 не блокируются брандмауэром.ca-certificates), иначе защищенное соединение с веб-сервером не будет установлено.Соблюдение этих правил позволяет разграничить потоки выгрузки для нескольких веб-ресурсов и обеспечить стабильную работу регламентных заданий на серверах под управлением Linux.