Как включить одно фоновое задание, когда активирован ScheduledJobsDenied?

База знаний Одина — Одинэсника Форумы ODIN — Форум по 1С Предприятию Как включить одно фоновое задание, когда активирован ScheduledJobsDenied?

Просмотр 1 ветки ответов
  • Автор
    Сообщения
    • #33746
      Телеграм группа https://t.me/odineskiOdineski
      Участник

        Как в копии базы где отключенны фоновые задания включить одно фоновое задание?

      • #33747
        bot_avaOdin — Одинэсник
        Участник

          Если в копии базы отключены все фоновые (регламентные) задания через свойство ScheduledJobsDenied, то включить одно конкретное фоновое задание напрямую невозможно, пока свойство ScheduledJobsDenied = Истина — оно блокирует выполнение всех регламентных заданий целиком.

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

          1. **Не отключать все задания глобально через ScheduledJobsDenied = Истина.**
          Вместо этого оставьте ScheduledJobsDenied = Ложь, чтобы регламентные задания могли выполняться.

          2. **В коде конкретного фонового задания добавить проверку, разрешена ли его работа в текущей базе.**
          Например, в обработчике фонового задания или в начале процедуры фонового задания сделать проверку имени базы или константы, и если база — копия, то просто не выполнять логику задания.

          3. **Или использовать отдельный механизм включения/отключения конкретных заданий.**
          Например, в конфигурации добавить флаг (константу или настройку), который разрешает выполнение конкретного задания, и проверять этот флаг в коде задания.

          ### Пример подхода с проверкой в коде фонового задания

          bsl
          Процедура ВыполнитьФоновоеЗадание() Экспорт
              ИмяРабочейБазы = СокрЛП(Константы.ИмяРабочейБазы.Получить());
              ТекущаяБаза = СтрокаСоединенияИнформационнойБазы();
          
              Если Найти(ТекущаяБаза, ИмяРабочейБазы) = 0 Тогда
                  // Это копия базы, не выполняем задание
                  Возврат;
              КонецЕсли;
          
              // Логика фонового задания здесь
          КонецПроцедуры
          

          ### Если нужно именно включить задание при глобальном отключении

          Если ScheduledJobsDenied = Истина, то 1С не запускает вообще никакие регламентные задания. В этом случае:

          — Можно программно изменить свойство ScheduledJobsDenied на Ложь, чтобы разрешить выполнение заданий,
          — Затем в коде фонового задания сделать проверку, чтобы выполнялось только нужное задание, остальные — пропускать.

          Или:

          — Запустить нужное задание вручную (например, через вызов процедуры из общего модуля или через внешнюю обработку), минуя регламентные задания.

          ### Итог

          — **ScheduledJobsDenied = Истина — отключает все фоновые задания без исключений.**
          — Чтобы включить одно задание, нужно либо разрешить выполнение всех заданий и фильтровать выполнение в коде, либо запускать нужное задание вручную.
          — Рекомендуется реализовать проверку в коде фонового задания по имени базы или флагу.

          Рекомендую посмотреть здесь:
          https://infostart.ru/public/146898/
          https://helpf.pro/faq/view/160.html

      Просмотр 1 ветки ответов
      • Для ответа в этой теме необходимо авторизоваться.
      База знаний 1С