Почему не работает обмен с сайтом по расписанию в 1С:Управление торговлей 10.3

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

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

Особенности выполнения регламентных заданий в файловом режиме

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

Рассмотрим важные условия для файловой базы:

  1. Выделенный сеанс: База должна быть постоянно открыта под определенным пользователем. Именно в контексте этого сеанса платформа будет проверять, не подошло ли время выполнения задания.
  2. Настройка пользователя: В константах или настройках программы должен быть указан конкретный пользователь, ответственный за выполнение регламентных заданий.
  3. Интервал проверки: Выясним причину, почему задание может «проспать» свое время. В настройках программы существует параметр Интервал проверки регламентных заданий. Если он равен нулю, автоматического запуска не произойдет. Обычно рекомендуется устанавливать значение от 60 до 300 секунд.

Проблемы при использовании Планировщика задач Windows

Многие администраторы пытаются обойти ограничение «постоянно запущенной 1С», настраивая запуск программы через Планировщик задач Windows (Task Scheduler). Однако здесь часто кроется подвох: задание срабатывает один раз (например, ночью) и больше не повторяется в течение дня. Разберем, как правильно настроить триггер в Windows Server 2019 и других версиях ОС.

Посмотрим на ключевые настройки триггера планировщика:

Использование ключей командной строки 1С

Для того чтобы 1С при запуске из планировщика не просто открывала главное окно, а сразу приступала к обмену, нам необходимо использовать специальные параметры. Разберем пример командной строки для запуска:

"C:\Program Files\1cv8\bin\1cv8.exe" ENTERPRISE /F "D:\Bases\Trade" /N "RobotExchange" /P "Pass123" /C "ЗапуститьОбмен"

Рассмотрим подробнее эти ключи:

Альтернативное решение: запуск через VBS-скрипт

Если штатный планировщик Windows ведет себя нестабильно (что иногда случается на Windows Server 2019 из-за политик безопасности), можно воспользоваться простым VBScript. Этот скрипт будет висеть в памяти и самостоятельно контролировать интервалы запуска 1С.

Проанализируем пример такого скрипта:


cmd = "C:\Launch1C.cmd" ' Путь к вашему bat-файлу с командой запуска 1С
deltaTime = 60 ' Интервал в минутах между запусками
sleepTime = 1 ' Частота проверки времени в минутах

Set WshShell = WScript.CreateObject("Wscript.Shell")
Set FSO = CreateObject("Scripting.FileSystemObject")
logName = "exchange_log.txt"
RunCmd = True

While True
    If RunCmd Then
        RunCmd = False
        Set txtLog = FSO.OpenTextFile(logName, 8, True)
        txtLog.WriteLine Now & " — Инициирован запуск обмена"
        WshShell.Run cmd, 0, True ' Запуск в скрытом режиме, ожидание завершения
        nextTime = DateAdd("n", deltaTime, Now)
        txtLog.WriteLine "Следующий запуск запланирован на " & nextTime
        txtLog.Close
    End If
    WScript.Sleep sleepTime * 60000 
    RunCmd = (Now >= nextTime)
WEnd

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

Проверка блокировок регламентных заданий

Если все настройки верны, но обмен так и не стартует, проверим, не заблокированы ли регламентные задания на уровне самой базы. В УТ 10.3 (обычные формы) это можно сделать через меню «Операции» — «Константы» или через специализированную обработку «Консоль регламентных заданий».

Проанализируем ситуацию в интерфейсе:

  1. Откроем обработку Консоль регламентных заданий.
  2. Найдем в списке задание «Обмен с сайтом».
  3. Убедимся, что снята галочка Использование в свойствах самого задания, если вы планируете запускать его только внешними средствами (планировщиком).
  4. Если же вы хотите использовать внутреннее расписание 1С, проверьте поле Состояние. Если там написано «Блокировка регламентных заданий установлена», то никакие автоматические действия не выполнятся до снятия этого флага.

Выясним также, нет ли в журнале регистрации ошибок с типом «Фоновое задание. Ошибка выполнения». Часто бывает, что задание стартует, но падает из-за нехватки прав доступа к временным папкам или из-за ошибки в самом коде обработки обмена при работе в неинтерактивном режиме.

Итоги и рекомендации

Подводя итог, можно сказать: наиболее стабильный вариант для УТ 10.3 в файловом режиме — это либо выделенный компьютер (сервер), где сеанс 1С запущен круглосуточно под специальным пользователем-роботом, либо грамотно настроенный планировщик задач с использованием ключа /C и автоматическим завершением работы программы после завершения обмена. Помните о важности параметра «Бесконечно» в триггерах Windows и всегда проверяйте права доступа пользователя, от имени которого запускается служба планировщика.

← На главную