Как настроить регламентный обмен с несколькими сайтами по разному расписанию и устранить ошибки на Linux-сервере

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

При организации интеграции 1С с несколькими интернет-магазинами часто возникает задача настроить независимые сценарии выгрузки. Например, для одного сайта выгрузка остатков и цен должна выполняться каждые 15 минут, а для второго — полная выгрузка данных только один раз в сутки. При попытке настроить такое поведение через стандартную консоль заданий или при переносе базы на сервер под управлением Linux специалисты часто сталкиваются с ошибками запуска фоновых заданий и проблемами файловой системы. Разберем по шагам, почему возникают эти ошибки и как правильно настроить раздельный обмен для нескольких сайтов.

Причина ошибки «Количество фактических параметров фонового задания не совпадает с количеством параметров метода фонового задания»

Проанализируем механизм работы регламентного обмена с сайтами. Типовой метод модуля обмена (например, Б_ОбщиеПроцедурыИФункцииОбменаССайтом или аналогичные процедуры интеграции) принимает на вход параметры, главным из которых является ссылка на конкретный узел обмена (настройку). Если попытаться создать регламентное задание вручную через универсальную обработку «Консоль регламентных заданий» или стандартный список заданий без заполнения массива параметров, платформа 1С вызывает процедуру-обработчик с пустым набором аргументов. В результате возникает исключение несоответствия сигнатуры метода.

Правильный порядок действий при настройке расписания:

  1. Открываем список Настройки обмена с сайтами в режиме «1С:Предприятие».
  2. Создаем отдельный элемент (узел обмена) для каждого сайта со своими уникальными параметрами подключения (адрес сайта, логин, пароль, выгружаемые каталоги).
  3. Открываем форму конкретной настройки обмена и переходим на вкладку Регламентные задания (или Расписание).
  4. Устанавливаем флаг использования автоматического обмена и настраиваем индивидуальное расписание прямо в карточке настройки.
  5. Повторяем операцию для второго сайта со своим графиком выполнения.

При таком подходе платформа 1С автоматически регистрирует подчиненный экземпляр фонового задания и передает в массив параметров ссылку на текущий узел обмена. В результате каждый сайт обрабатывается независимо и по собственному расписанию без конфликтов параметров.

Устранение ошибок файловой системы на Linux-сервере

Если в ручном режиме на клиентском компьютере обмен отрабатывает штатно, а при регламентном запуске падает с ошибкой доступа, выясним причину в контексте исполнения кода. Ручной запуск выполняется на стороне клиента под управлением Windows, где путь вида C:\... корректен. Регламентные и фоновые задания всегда выполняются на стороне сервера 1С. Если сервер 1С работает под управлением ОС Linux, обращение к диску C: вызывает критическую ошибку:

Ошибка при вызове метода контекста (СоздатьКаталог) по причине: Ошибка доступа к файлу 'C:'

Разберем, как исправить эту проблему:

  1. Переопределение путей к логам и каталогам выгрузки. В карточке настройки обмена на вкладке дополнительных настроек (или логирования) необходимо изменить пути для записи файлов. Вместо пути в стиле Windows указываем абсолютный Unix-путь, например: /var/tmp/ или /tmp/exchange_logs/.
  2. Проверка прав доступа в операционной системе. Служба сервера 1С в Linux по умолчанию работает от учетной записи usr1cv8. Данному пользователю операционной системы должны быть выданы полные права на чтение и запись в указанную директорию.
  3. Использование автоматического определения временного каталога. Если логирование на диск не требуется для постоянного мониторинга, поле пути к каталогу логов можно очистить либо отключить подробный протокол обмена в настройках узла.

Диагностика ошибок соединения («Получен пустой ответ сервера»)

Рассмотрим ситуацию, когда при регламентном задании в журнал пишется ошибка: «Не удалось получить данные с сервера... Авторизация не выполнена». Поскольку исходящие запросы в фоновом режиме выполняет сам сервер Linux, причины сбоя заключаются в окружении сервера:

  1. Настройки DNS и сетевые экраны. Проверяем доступность доменного имени сайта непосредственно с сервера Linux (командами ping или curl). Если настроен локальный DNS или требуется прокси-сервер, убеждаемся, что сетевые пакеты на порты 80 и 443 не блокируются брандмауэром.
  2. Сертификаты SSL/TLS. При подключении к сайту по протоколу HTTPS сервер Linux должен иметь актуальное хранилище доверенных корневых сертификатов (пакет ca-certificates), иначе защищенное соединение с веб-сервером не будет установлено.
  3. Таймауты веб-сервера. Если база данных отправляет большой пакет товаров, веб-сервер сайта (Nginx/Apache) может разорвать соединение по истечении лимита ожидания. В этом случае в настройках узла 1С рекомендуется уменьшить размер порции передачи данных (количество позиций в одном пакете XML).

Соблюдение этих правил позволяет разграничить потоки выгрузки для нескольких веб-ресурсов и обеспечить стабильную работу регламентных заданий на серверах под управлением Linux.

← На главную