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

28.09.26

База данных - Журнал регистрации

Регламентное задание бывает включено, с верным расписанием и без единой ошибки — и при этом не выполняется. Обработка берёт историю запусков из журнала регистрации и рисует диаграммой Ганта, когда каждое задание было в порядке, когда упало и когда молчало, хотя по расписанию должно было работать. По каждому заданию — вердикт «работает / молчит / ошибки», история запусков и полный текст ошибки; отдельно — фоновые задания, которые выполняются прямо сейчас. Управляемая форма, без БСП, только чтение. В статье разобран код: чтение журнала с отбором, склейка запуска с завершением по сеансу, вердикт «молчит» через ТребуетсяВыполнение и построение диаграммы Ганта.

Файлы

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование Скачано Купить файл
Контроль регламентных заданий, версия 1.0
.epf 23,32Kb ver:1.0
0 2 500 руб. Купить

Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний

Оформите подписку на компанию для решения рабочих задач

Оформить подписку и скачать решение со скидкой

Вы можете заказать платную доработку или адаптацию этой разработки под вашу конфигурацию на «Бирже заказов».

  • 0% комиссии — оплата напрямую исполнителю;
  • Исполнители любого масштаба — от отдельных специалистов до команд под проект;
  • Прямой обмен контактами между заказчиком и исполнителем;
  • Безопасная сделка — при необходимости;
  • Рейтинги, кейсы и прозрачная система откликов.

Регламентное задание бывает включено, расписание у него верное, ошибок в журнале ноль — а оно не выполняется. Ошибке неоткуда взяться, если код задания не запускался вовсе. Консоль заданий показывает настройки и дату последнего запуска, но не говорит, что задание давно должно было выполниться: она отвечает на вопрос «как задание настроено», а не «работает ли оно».

Обработка отвечает на второй вопрос. Историю запусков она берёт из журнала регистрации и рисует диаграммой Ганта, когда каждое задание было в порядке, когда упало и когда молчало, хотя по расписанию должно было работать. Форма управляемая, БСП не нужна — только методы платформы, поэтому обработка открывается и в типовой конфигурации, и в самописной. В базу она ничего не пишет.

 

Как это выглядит

График работы

Главная закладка. Каждая строка — регламентное задание, по горизонтали — период журнала. Зелёный — задание в порядке: последний запуск прошёл, и следующий по расписанию ещё не опоздал. Оранжевый — просрочено: расписание требовало запуска, а его не было. Красный — последний запуск упал. Серым закрыто время, о котором журнал ничего не знает: до его первой записи и после момента чтения.

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

График работы за неделю: у «Отправки серверных оповещений» в субботу днём — оранжевый участок, задание несколько часов не запускалось.

Наведите мышь на отрезок — подсказка покажет его состояние и точное время начала и конца.

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

 

Фактические запуски

Второй вид отвечает на вопрос, когда задание выполнялось на самом деле. Под строкой — синее окно, в которое расписание вообще разрешает запуск; над ним — клетки по часу. Зелёная клетка — в этот час были запуски без ошибок, красная — была ошибка, оранжевая — пропуск: в окне по расписанию запуска не было.

Фактические запуски на фоне окна по расписанию

Фактические запуски: синим — когда расписание разрешает запуск, красным — часы с ошибкой, оранжевым — пропуск.

Масштаб «Один день» показывает выбранные сутки с клетками по десять минут — видно каждый запуск частого задания.

 

Запуски за один день Один день: у «Отправки серверных оповещений» днём — часы пропусков, клетки по десять минут

 

Список заданий, история и текст ошибки

На первой закладке — все регламентные задания базы с одним словом о каждом: работает, молчит, ошибки, выключено. Отбор «Проблемные» оставляет молчащие и упавшие, у каждого положения отбора — число заданий. Под списком — история выбранного задания: каждый запуск с началом, концом, длительностью и результатом. Справа — полный текст последней ошибки, с модулем и строкой.

История запусков задания и текст ошибки «Проверка кэша состояний ФНС»: пять ошибок за неделю, последний запуск прошёл — вердикт «работает», а текст ошибки справа

Фоновые задания сейчас

Что выполняется в базе прямо сейчас, сколько идёт и что упало. Отборы «Выполняются» и «С ошибкой», текст ошибки выбранного задания справа.

Фоновые задания сейчас Фоновые задания: что выполняется и сколько идёт

 

Как устроено

История — из журнала регистрации, с отбором

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

Читать весь журнал и фильтровать в цикле незачем — у ВыгрузитьЖурналРегистрации есть отбор. Обработка передаёт в него события заданий и массив метаданных всех регламентных заданий конфигурации:

События = СтрРазделить("_$Job$_.Start,_$Job$_.Finish,_$Job$_.Error,_$Job$_.Cancel,_$Job$_.Terminate", ",");

ЗаданияМД = Новый Массив;
Для Каждого ЗаданиеМД Из Метаданные.РегламентныеЗадания Цикл
    ЗаданияМД.Добавить(ЗаданиеМД);
КонецЦикла;

Отбор = Новый Структура;
Отбор.Вставить("Событие", События);
Отбор.Вставить("Метаданные", ЗаданияМД);
Отбор.Вставить("ДатаНачала", Период.ДатаНачала);

Журнал = Новый ТаблицаЗначений;
ВыгрузитьЖурналРегистрации(Журнал, Отбор, "Дата,Событие,Метаданные,Комментарий,Сеанс");
Журнал.Сортировать("Дата");

Отбор по метаданным важен не меньше, чем по событиям. Те же пять событий пишут и фоновые задания, запущенные кодом без регламентного, и на живой базе их бывает больше, чем регламентных. С массивом метаданных платформа их просто не отдаёт. Журнал.Сортировать("Дата") тоже нужен: в облачной базе записи приходят не строго по времени, а на порядок опирается всё дальнейшее.

 

Запуск и его завершение

В журнале запуск и завершение — две отдельные записи. Связывает их номер сеанса: у каждого выполнения задания он свой. Обработка идёт по журналу от старых записей к новым, запуск открывает строку, а завершение того же сеанса её закрывает:

Открытые = Новый Соответствие;
Для Каждого Запись Из Журнал Цикл

    ИмяЗадания = Сред(Запись.Метаданные, СтрНайти(Запись.Метаданные, ".") + 1);

    Если Запись.Событие = "_$Job$_.Start" Тогда
        Запуск = Запуски.Добавить();
        Запуск.Задание = ИмяЗадания;
        Запуск.Начало = Запись.Дата;
        Запуск.Итог = "идёт";
        Открытые.Вставить(Запись.Сеанс, Запуск);
    Иначе
        Запуск = Открытые[Запись.Сеанс];
        Если Запуск <> Неопределено Тогда
            Открытые.Удалить(Запись.Сеанс);
            Запуск.Конец = Запись.Дата;
            Запуск.Итог = ?(Запись.Событие = "_$Job$_.Error" ИЛИ Запись.Событие = "_$Job$_.Terminate",
                "ошибка", "успех");
        КонецЕсли;
    КонецЕсли;

КонецЦикла;

Имя задания — всё после точки в колонке метаданных: там лежит строка вида «РегламентноеЗадание.ОбработкаБотов». Запуск без пары остаётся «идёт»: задание ещё выполняется или его сеанс оборвался. Таблицу запусков обработка кладёт во временное хранилище формы, и при переключении видов и отборов журнал заново не читается.

 

«Молчит»: спрашиваем само расписание

Сравнивать дату последнего запуска с расписанием вручную — значит разбирать дни недели, месяцы, повторы внутри дня и время окончания. У платформы на это есть готовый метод: РасписаниеРегламентногоЗадания.ТребуетсяВыполнение отвечает, должно ли задание выполниться на указанную дату с учётом последнего запуска.

НачалоОтсчёта = ?(ЗначениеЗаполнено(ПоследнийЗапуск), ПоследнийЗапуск, ПерваяЗаписьЖурнала);
КонецОтсчёта = Макс(ПоследнийУспех, ДатаОшибки);

// Допуск: задание раз в минуту между двумя запусками не должно числиться молчащим
ДатаПроверки = ТекущаяДата() - 600;

Если НачалоОтсчёта < ДатаПроверки
    И Расписание.ТребуетсяВыполнение(ДатаПроверки, НачалоОтсчёта, КонецОтсчёта) Тогда
    Возврат "молчит";
КонецЕсли;

Если запусков в журнале нет, отсчёт идёт от первой записи журнала, а не от начала периода: журнал бывает моложе выбранной недели, и «не запускалось за неделю» было бы неправдой. Вердикт «ошибки» проще: последнее завершение — ошибка, и успеха после неё не было.

 

Состояние по времени, как в сервисах мониторинга

Для диаграммы нужно состояние в каждый момент. Правило — как у сервисов мониторинга cron-задач: после успешного запуска задание в порядке до следующего ожидаемого запуска плюс льгота; не дождались — просрочено до следующего фактического запуска; упало — ошибка до следующего запуска.

Момент просрочки обработка находит тем же ТребуетсяВыполнение: шагает от последнего запуска вперёд, пока расписание не скажет «пора», и прибавляет льготу:

Льгота = 600;
Проверка = НачалоЗапуска + 600;
Пока Проверка + Льгота < Граница Цикл
    Если Расписание.ТребуетсяВыполнение(Проверка, НачалоЗапуска, КонецЗапуска) Тогда
        Возврат Проверка + Льгота;
    КонецЕсли;
    Проверка = Проверка + 600;
КонецЦикла;
Возврат Неопределено;   // до границы задание не опоздало

В обработке функция ещё уточняет найденную десятиминутку до минуты тем же вопросом к расписанию. Граница — момент, когда обработка прочитала журнал, а не текущее время: запусков после чтения в данных нет, и хвост до «сейчас» выглядел бы ложной просрочкой. Из запусков задания и этих моментов функция СостоянияЗадания собирает отрезки «в порядке», «просрочено» и «ошибка» и сливает соседние отрезки одного вида в один.

 

Диаграмма Ганта в управляемой форме

Диаграмма — реквизит формы типа ДиаграммаГанта и поле вида ПолеДиаграммыГанта. Строка — точка, отрезок состояния — интервал со своим цветом и текстом, который и показывается подсказкой:

Точка = Диаграмма.УстановитьТочку(ИмяЗадания);
Точка.Текст = Синоним + " — " + Вердикт;

Для Каждого Отрезок Из Отрезки Цикл
    Интервал = Диаграмма.ПолучитьЗначение(Точка, Серия).Добавить();
    Интервал.Начало = Отрезок.Начало;
    Интервал.Конец = Отрезок.Конец;
    Интервал.Цвет = ЦветСостояния(Отрезок.Вид);
    Интервал.Текст = Отрезок.Вид + ": " + Формат(Отрезок.Начало, "ДФ='дд.ММ ЧЧ:мм'")
        + " – " + Формат(Отрезок.Конец, "ДФ='дд.ММ ЧЧ:мм'");
КонецЦикла;

Обработка задаёт период шкалы явно, подписывает строки сама и выключает встроенную легенду: та показывает серии, а цвет здесь у интервалов. Свою легенду обработка рисует надписью с ФорматированнаяСтрока:

Диаграмма.АвтоОпределениеПолногоИнтервала = Ложь;
Диаграмма.УстановитьПолныйИнтервал(ОтМомента, ДоМомента);
Диаграмма.АвтоУстановкаТекстаТочек = Ложь;
Диаграмма.ОбластьЛегенды.Расположение = РасположениеЛегендыДиаграммы.Нет;

Две ловушки веб-клиента. Шкалу времени без явного формата веб-клиент оставляет без подписей, поэтому формат нужно задать каждому элементу шкалы. А интервал фона, упёртый ровно в правую границу шкалы, веб-клиент не рисует, и обработка ставит его конец на секунду раньше:

ЭлементыШкалы[0].Единица = ТипЕдиницыШкалыВремени.День;
ЭлементыШкалы[0].Формат = "ДФ='ддд дд.ММ'";
Часы = ЭлементыШкалы.Добавить();
Часы.Единица = ТипЕдиницыШкалыВремени.Час;
Часы.Формат = "ДФ=ЧЧ";

Фон = Диаграмма.ИнтервалыФона.Добавить(МоментЧтения, ДоМомента - 1);
Фон.Цвет = WebЦвета.Серебряный;

 

Окно по расписанию и клетки запусков

Окно на виде «Запуски» обработка получает тем же методом, но без последнего запуска: Расписание.ТребуетсяВыполнение(Дата) отвечает, подходит ли дата под расписание вообще. Обработка спрашивает его о середине каждой клетки и склеивает подряд идущие «да» в один синий интервал. Запуски она раскладывает по клеткам одним проходом, а пропуском помечает клетки внутри отрезков «просрочено» — там, где расписание разрешает запуск.

 

История выбранного задания

По заданию из списка обработка читает журнал ещё раз, уже с отбором по его метаданным, и склеивает запуски так же, по сеансу. Последний параметр выгрузки ограничивает её последними событиями: у задания раз в минуту за неделю записей многие тысячи, а человеку нужны свежие.

Отбор.Вставить("Метаданные", ЗаданиеМД);
ВыгрузитьЖурналРегистрации(Журнал, Отбор, "Дата,Событие,Комментарий,Сеанс", , 1000);

Текст ошибки лежит в комментарии записи журнала — целиком, с модулем и номером строки.

 

Фоновые задания без тормозов

Консоль, которая у каждого фонового задания обращается к его регламентному, на нагруженной базе открывает список долго. Обработка берёт только свойства самого фонового задания:

Для Каждого Задание Из ФоновыеЗадания.ПолучитьФоновыеЗадания() Цикл
    // Состояние сравниваем значением: строкой оно на языке интерфейса
    Идёт = (Задание.Состояние = СостояниеФоновогоЗадания.Активно);
    Упало = (Задание.Состояние = СостояниеФоновогоЗадания.ЗавершеноАварийно);
    ...
    Если Задание.ИнформацияОбОшибке <> Неопределено Тогда
        Запись.ТекстОшибки = ПодробноеПредставлениеОшибки(Задание.ИнформацияОбОшибке);
    КонецЕсли;
КонецЦикла;

Историю эта закладка не заменяет: платформа хранит только последние фоновые задания. За историей — на первую закладку, к журналу.

 

Сценарии

  • Задание «вроде работает», а данные не обновляются: на графике работы видно, с какого момента оно молчит.
  • Задание падает через раз: в списке видно, сколько было запусков и сколько с ошибкой, в истории — какие запуски упали, справа — текст ошибки с модулем и строкой.
  • После обновления или переноса базы — отбор «Проблемные» показывает, что не запустилось.
  • Пользователи жалуются на тормоза: на закладке фоновых видно, что выполняется прямо сейчас и сколько идёт.

 

Поставка

KontrolReglamentnykhZadaniy.epf — внешняя обработка. Код открыт и лежит в модуле формы. Список заданий и журнал регистрации платформа отдаёт только администратору, поэтому открывать обработку нужно под пользователем с правом «Администрирование».

Проверено на следующих конфигурациях и релизах:

  • Управление нашей фирмой, редакция 3.0, релизы 3.0.14.159

Вступайте в нашу телеграмм-группу Инфостарт

регламентные задания фоновые задания журнал регистрации ВыгрузитьЖурналРегистрации диаграмма Ганта ТребуетсяВыполнение РасписаниеРегламентногоЗадания мониторинг заданий без БСП

См. также

Инструментарий разработчика Чистка данных Свертка базы Инструменты администратора БД Системный администратор Разработчик Руководитель проекта 1С:Предприятие 8 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 Россия Платные (руб)

Инструмент представляет собой обработку для проведения свёртки или обрезки баз данных. Работает на ЛЮБЫХ конфигурациях (УТ, БП, ERP, УНФ, КА и т.д.). Поддерживаются серверные и файловые базы, управляемые и обычные формы, интерфейс 8.5. Может выполнять свертку одновременно в несколько потоков, а также без непосредственного участия пользователя. Решение в Реестре отечественного ПО.

24900 руб.

20.08.2024    80001    409    171    

343

Работа с интерфейсом Анализ учета Мониторинг 1С:Предприятие 8 1С 8.3 1C:Бухгалтерия 1С:Бухгалтерия 3.0 1С:ERP Управление предприятием 2 1С:Управление холдингом 1С:Зарплата и Управление Персоналом 3.x 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Управление торговлей 11 Платные (руб)

Создайте свой функциональный интерфейс в любой конфигурации 1С с помощью расширения Infostart Dashboard. Настраивайте панели виджетов с метриками, индикаторами и показателями на начальном экране. Узнайте возможность внедрения подсистемы у себя в конфигурации с помощью бесплатной обработки "Анализ внедрения подсистемы 1С Infostart Dashboard"!

31720 руб.

27.03.2025    90902    67    44    

77

Закрытие периода Инструменты администратора БД Корректировка данных Бухгалтер Пользователь 1С:Предприятие 8 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Платные (руб)

Расширение «Оперативное проведение» в 4 раза уменьшает время проведения документов и закрытия месяца. Является комплексным решением проблем 62 и 60 счетов. Оптимизирует проведение при включенной функциональной опции «Раздельный учет НДС». Используется в более 10 организациях уже 2 года. Совместимо с конфигурацией Бухгалтерия 3.0 (+КОРП).

14640 руб.

29.04.2020    52287    142    164    

96

Инструменты администратора БД Инструментарий разработчика Роли и права Разработчик 1С:Предприятие 8 1C:Бухгалтерия Россия Платные (руб)

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

17000 руб.

10.11.2023    27931    101    46    

107

Информационная безопасность Инструменты администратора БД Инструментарий разработчика Учет документов Системный администратор Разработчик Аналитик Бухгалтер Пользователь Руководитель проекта 1С 8.3 1С 8.5 Розничная и сетевая торговля (FMCG) Платные (руб)

Контроль ввода данных в 1С: проверка заполнения реквизитов, обязательные поля, контроль перед записью и проведением, запрет проведения документа. Позволяет настраивать любые проверки данных в 1С 8.3/8.5 от обязательных полей до сложных условий – без открытия конфигуратора и написания кода. Готовое расширение, которое подключается и работает сразу.

6000 руб.

15.04.2026    3717    9    0    

23

Инструменты администратора БД Роли и права Системный администратор Разработчик Пользователь 1С 8.3 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:Документооборот 1С:Зарплата и кадры государственного учреждения 3 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Зарплата и Управление Персоналом 3.x 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Платные (руб)

Роли… Вы тратите много времени и сил на подбор ролей среди около 2400 в ERP или 1500 в Рознице 2, пытаясь понять какими правами они обладают? Вы все время смотрите права в конфигураторе или отчетах чтоб создать нормальные профили доступа? Вы хотите наглядно видеть какие права дает профиль и редактировать все в простом виде? А может хотите просто указать подсистему и дать права на просмотр и добавление на объекты и не лезть в дебри прав и чтоб обработка сама подобрала нужные роли? Все это теперь стало возможно! Обновление от 17.04.2026, версия 1.4.1, работает в 1С:ФРЕШ!

23180 руб.

06.12.2023    24532    83    14    

116
Для отправки сообщения требуется регистрация/авторизация