Почему не запускается регламентное задание обмена с сайтом в файловой базе 1С:Управление торговлей 11?

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

Настройка автоматического обмена между 1С и сайтом (например, на платформе CS-Cart, Битрикс или Prestashop) — стандартная задача для конфигурации «1С:Управление торговлей 11». Однако при работе в файловом режиме базы данных разработчики и администраторы часто сталкиваются с тем, что регламентное задание обмена упорно отказывается запускаться автоматически. При этом ручной запуск по кнопке «Выполнить сейчас» отрабатывает без нареканий, а другие стандартные задания конфигурации продолжают стабильно функционировать.

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

Разберем расписание: распространенная ловушка параметра «Один день»

Проанализируем типичную ситуацию настройки расписания, с которой столкнулся автор темы. Изначально расписание было задано следующим образом: «один день; с 8:30:00 по 18:30:00 каждые 600 секунд». При такой настройке система отрабатывает задание ровно один раз в указанную дату начала действия расписания. Как только эти сутки заканчиваются, планировщик 1С считает задачу полностью завершенной и больше к ней не возвращается.

Для того чтобы регламентное задание запускалось регулярно изо дня в день, необходимо изменить этот параметр. Выясним, как правильно настроить периодичность:

  1. Откройте форму настройки расписания регламентного задания.
  2. Перейдите на вкладку «Общее».
  3. В поле «Повторять» убедитесь, что указано значение «каждый день» (вместо «один день»).
  4. Задайте дату начала (например, текущую дату) и укажите необходимый интервал повторения на вкладке «Дневное» (например, каждые 600 секунд в течение рабочего дня).

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

Специфика планировщика регламентных заданий в файловом режиме

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

Рассмотрим ключевые особенности и ограничения файлового режима:

Почему фоновый обмен пишется как выполненный, но выгружает «0» объектов?

После исправления расписания вы можете столкнуться со следующей проблемой: фоновое задание запускается, мгновенно завершается за 1-2 секунды, а в логах пишется: «Обработано: 0, Загружено: 0. Нет документов для обработки». При этом ручной обмен под тем же пользователем выгружает сотни товаров и заказов. Проанализируем, почему так происходит:

  1. Разные узлы плана обмена: Регламентный обмен часто привязывается к конкретному элементу (узлу) плана обмена ОбменССайтом. Если регистрация изменений товаров, цен и остатков происходит по узлу «А» (который вы запускаете вручную), а регламентное задание настроено на узел «Б», то автоматический процесс просто не увидит зарегистрированных к выгрузке данных. Проверьте соответствие узлов в настройках сценария обмена.
  2. Интерактивные методы в кастомном коде: Если ваш модуль обмена был доработан или полностью переписан программистами, в нем могли остаться вызовы клиентских методов (например, Предупреждение(), Вопрос(), открытие форм или обращение к контексту Клиент). Регламентные задания выполняются исключительно на стороне сервера. При попытке выполнить интерактивное действие в фоновом режиме процесс аварийно завершится (часто «молча», без детального лога в Журнале регистрации).
  3. Права на временные папки: Фоновое задание запускается под учетной записью службы (или пользователя ОС, запустившего дежурный сеанс 1С). Если у этой учетной записи нет прав на запись в системные временные директории (папку Temp), платформа не сможет сформировать XML-файлы выгрузки (import.xml, offers.xml) для отправки на сайт.

Как настроить отладку фонового регламентного задания

Разберем по шагам, как подключиться отладчиком к выполняемому в фоне обмену для локализации ошибок в коде:

  1. Запустите базу данных в режиме Конфигуратора.
  2. В главном меню перейдите в раздел Отладка — Подключение....
  3. В открывшемся окне нажмите кнопку Настройка автоматического подключения.
  4. Установите флажок напротив пункта Фоновые задания и нажмите «ОК».

Поскольку фоновый обмен при ошибках может пролетать слишком быстро, мы не всегда успеваем физически переключиться на процесс отладки. Чтобы обойти это ограничение, выполним небольшую хитрость: временно установим искусственную задержку в самом начале исполняемой процедуры обмена.

Посмотрим на пример такого кода:


// Временный код в общем модуле для отладки фонового процесса
ТекущееВремяНачала = ТекущаяДата();
Пока ТекущаяДата() - ТекущееВремяНачала < 15 Цикл
    // Приостанавливаем выполнение на 15 секунд, 
    // чтобы успеть перехватить управление в конфигураторе
КонецЦикла;

После этого установите точку останова сразу после цикла ожидания. Как только планировщик запустит задание, конфигуратор автоматически перехватит этот поток выполнения, и вы сможете пошагово проанализировать работу алгоритма обмена.

Альтернативное решение: запуск через Планировщик задач Windows

Если стабильно поддерживать открытые дежурные сеансы в файловой базе 1С затруднительно, наиболее надежным и профессиональным решением будет вынос планирования на уровень операционной системы. Рассмотрим схему реализации этого подхода:

  1. Создайте внешнюю обработку 1С (файл с расширением .epf), которая будет программно инициализировать обмен при запуске и закрывать программу.
  2. Настройте планировщик задач Windows (Task Scheduler) на запуск 1С в режиме предприятия с параметрами автоматического выполнения этой обработки.

Ниже представлен пример кода для модуля внешней обработки (например, ExchangeStarter.epf):


&НаКлиенте
Процедура ПриОткрытии(Отказ)
    
    // Выполняем процедуру обмена на сервере
    ВыполнитьПроцедуруОбменаНаСервере();
    
    // Завершаем работу сеанса без лишних вопросов пользователю
    ЗавершитьРаботуСистемы(Ложь);
    
КонецПроцедуры

&НаСервере
Процедура ВыполнитьПроцедуруОбменаНаСервере()
    
    // Запишем начало операции в Журнал регистрации для контроля
    ЗаписьЖурналаРегистрации("ОбменССайтом.ВнешнийЗапуск", 
        УровеньЖурналаРегистрации.Информация, , , 
        "Запущен регламентный обмен через планировщик Windows");
        
    Попытка
        // Здесь вызывается метод вашего модуля обмена
        // Например: ИнтеграцияССайтомУТ.ВыполнитьОбменПоРасписанию();
    Исключение
        ЗаписьЖурналаРегистрации("ОбменССайтом.Ошибка", 
            УровеньЖурналаРегистрации.Ошибка, , , 
            ОписаниеОшибки());
    КонецПопытки;
    
КонецПроцедуры

Теперь настроим запуск этого процесса в Планировщике Windows. Создайте простую задачу с ежедневным повторением каждые 10 минут, где в качестве исполняемого действия укажите запуск командной строки со следующими параметрами:


"C:\Program Files\1cv8\8.3.22.1709\bin\1cv8.exe" ENTERPRISE /F "C:\1C_Bases\UT_SiteExchange" /N "RobotExchange" /P "YourPassword" /Execute "C:\ExternalProc\ExchangeStarter.epf"

Разберем параметры этой строки запуска:

Использование планировщика операционной системы гарантирует запуск процесса точно по расписанию, снижает нагрузку на оперативную память (так как сеанс запускается только на время выполнения обмена и сразу закрывается) и полностью решает проблему «засыпания» регламентных заданий в файловом режиме базы данных 1С.

← На главную