Внешняя обработка для того, кто третий день смотрит на "Выполнено: N из M" в форме "Результаты обновления программы" и не знает, ждать или разбираться. Обработка отвечает одной цветной строкой: "Идёт, закончится около 17:00" или "Стоит обработчик X: попытки кончились, настоящая причина в журнале".
Зачем это нужно: на форуме Инфостарта база обновлялась 14 дней, и автор так и не понял, сломалось или просто долго. Штатная форма и отчёт БСП "Прогресс отложенного обновления" показывают число выполненных обработчиков, процент и остаток в объектах. Времени окончания, скорости и названного виновника с причиной там нет, хотя всё нужное для ответа БСП уже хранит у себя.
Что показывает
- Вердикт одной строкой. Зелёный "идёт, закончится около ...", жёлтый "внимание", красный "стоит" с причиной. Серым "завершено" или "механизм не найден" на старой БСП.
- Сводка очереди. Сколько обработчиков, выполнено, в работе, с ошибкой, ждут; остаток в объектах; скорость в объектах и в обработчиках в час; прогноз окончания.
- Таблица обработчиков с цветной колонкой "Оценка": красный "держит", жёлтый "внимание", зелёный "в порядке", серый "ждёт".
- Кто держит. По виновнику: попытки, полный текст последней ошибки, записи журнала регистрации по нему (сколько раз одна и та же причина), признак конфликта блокировок, самые долгие сеансы. Двойной клик по строке таблицы даёт то же по выбранному обработчику.
- Отчёт. Текст для администратора: вердикт, обработчики в работе и с проблемами, сводка ждущих и выполненных по очередям. Копируется целиком.
- Выгрузка в Markdown для нейросети. Один файл: вердикт, контекст базы, таблицы, тексты ошибок, журнал по виновнику, сеансы без имён пользователей. Паролей и строки соединения в файле нет.
Как считает
- Остаток - записи таблиц изменений плана обмена "Обновление информационной базы" по очереди каждого обработчика. Так же считает штатный отчёт БСП.
- Скорость двумя мерами: объекты по почасовой истории "Прогресс обновления" и завершённые обработчики за то же окно. Вторая нужна потому, что последовательные обработчики остатка в объектах не имеют.
- Прогноз - две даты, по объектам и по обработчикам, берётся более поздняя. Когда истории ещё нет, форма сама повторит замер через 10 минут.
- Кто держит, по порядку: задание отложенного обновления выключено или не запускается; обработчик исчерпал попытки; обработчик в ошибке и повторяет; час без движения.
- "Зацикливание" в регистре. Когда обработчик исчерпал попытки, БСП может записать "Произошло зацикливание процедуры обработки данных", хотя причина другая. Обработка так и пишет и показывает настоящую причину из журнала.
Ничего в базе не меняет: не перезапускает обработчики, не трогает приоритет, расписание и число потоков. Только читает регистры БСП, план обмена обновления, журнал регистрации и список сеансов. Запускать под администратором.
Частые вопросы
Сломалось или просто долго, как понять?
Если за последний час обрабатывались объекты или завершались обработчики и никто не исчерпал попытки, это просто долго, и обработка покажет время окончания. Если задание не запускается, обработчик исчерпал попытки или час нет никакого движения, это сломалось, и строка вердикта назовёт причину.
Почему после первого замера нет прогноза?
Скорость берётся из почасовой истории БСП и из времени завершения обработчиков. Когда истории нет (обновление только стартовало), нужен второй замер. Форма сделает его сама через 10 минут, если её не закрывать.
Насколько точен прогноз?
Это остаток, делённый на скорость последнего часа. На стенде очередь из 215 обработчиков шла 4 часа; прогноз за два часа до конца ошибся на 5 минут, за три часа - на 45. Пока один обработчик ждал блокировку, прогноз уезжал на часы вперёд: пока ничего не завершается, конец честно отодвигается.
Чем это лучше штатной формы и отчёта "Прогресс отложенного обновления"?
Штатные показывают число выполненных обработчиков, процент и остаток в объектах. Отчёт БСП пишет "возможно, другие обработчики держат его выполнение", а обработка называет, какой именно, и показывает причину из журнала, даже когда в регистре стоит "зацикливание".
Обработка что-нибудь пишет в базу?
Нет. На стенде замер занимал 0,14-0,18 с, "Кто держит" 0,11-0,14 с. Перезапуск обработчиков остаётся в штатной форме "Отложенные обработчики".
Какие нужны права?
Полные. Журнал регистрации и список сеансов доступны только администратору; без них "Кто держит" покажет данные регистра, но без журнала.
Почему попыток 4 при пределе 3?
Так считает БСП: попытка за исключение в обработчике плюс попытка за "зацикливание", если обработчик отработал и не обработал ни одного объекта.
На старой конфигурации заработает?
Нужен регистр "Обработчики обновления" из свежих версий БСП 3.1. На УТ для Казахстана 3.4 (БСП 2.4.6) и Бухгалтерии для Казахстана 3.0.40 (БСП 3.1.2) обработка пишет серым "механизм не найден" и не падает. Поэтому версии на обычных формах нет: в конфигурациях на обычных формах такого механизма нет.
На чём проверялась
Управление торговлей 11.5.22.67, БСП 3.1.11, платформа 8.3.27, клиент-серверный вариант. Настоящая очередь из 215 обработчиков типовой, перезапущенная штатным методом БСП на копии базы: идущая очередь с прогнозом против факта, задание, запрещённое в кластере, обработчик, уроненный блокировкой (сначала "ошибка, БСП повторит", потом "попытки кончились ... в регистре зацикливание"), завершённое обновление. Каждый вердикт сверен с журналом регистрации, константами БСП и флагом кластера. Рассчитана на актуальные релизы УТ 11.5, КА 2.5, ERP 2.5, БП 3.0, ЗУП 3.1.
Что в файле
Внешняя обработка (.epf) на управляемых формах, собрана на платформе 8.3.27. Открывается через "Файл - Открыть", встраивать в конфигурацию не нужно. Параметров нет, замер запускается сам при открытии. Код открыт.
Где БСП хранит очередь, почему скорость надо мерить двумя мерами и как отличить настоящую причину от записанного "зацикливания" - в статье-паровозе к этой обработке: "База обновлялась 14 дней: как понять, сломалось или просто долго".
Проверено на следующих конфигурациях и релизах:
- Управление торговлей, редакция 11, релизы 11.5.22.67
Вступайте в нашу телеграмм-группу Инфостарт