Единый API трейсинга операций в 1С: трассировка спанов, распределённые трейсы и журнал регистрации как система наблюдения

09.10.26

Администрирование - Мониторинг

Готовый модуль трейсинга операций для 1С: создание спанов со стеком, наследование TraceID, поддержка распределённых трейсов (фоновые задания, HTTP, интеграции), гарантированное завершение спанов при любом исходе и граничный режим «отката» стека. Все данные пишутся в журнал регистрации в JSON-виде и визуализируются в отдельной обработке — с деревом спанов, длительностями, статусами, атрибутами и ошибками.

Файлы

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

Наименование Скачано Купить файл
Единый API трейсинга операций в 1С: трассировка спанов, распределённые трейсы и журнал регистрации как система наблюдения
.cf 1,02Mb
6 2 500 руб. Купить

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

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

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

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

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

Трейсинг операций в 1С: от журнала регистрации до временной шкалы

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

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

Какую задачу решает

При разборе медленной или завершившейся с ошибкой операции важно понять:

  • какие шаги выполнялись и в какой последовательности;
  • где возникла задержка или ошибка;
  • какие операции были вложенными, а какие пересекались по времени;
  • как связаны действия в разных сеансах, фоновых заданиях и внешних сервисах;
  • с какими параметрами выполнялся конкретный шаг.

Для этого используется трейс — набор связанных операций. Отдельный измеряемый шаг называется спаном. Поле trace_id объединяет спаны в один трейс, span_id идентифицирует шаг, а parent_span_id связывает его с родителем.

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

Что входит в решение

  • API трейсинга: начало и завершение спанов, статусы, дополнительные атрибуты.
  • Вложенные операции: связь с текущим родительским спаном через стек.
  • Передача контекста: продолжение трейса в другом сеансе по TraceID и ParentSpanID.
  • Граничное завершение: закрытие открытой цепочки до указанного спана включительно.
  • Выборочное включение: настройка трейсинга по подсистемам.
  • Просмотрщик: список трейсов, дерево спанов, временная шкала, поиск и атрибуты.
  • Демо-обработка: примеры использования, большой трейс и синтетические сценарии для знакомства с интерфейсом.

Пример использования

Откроем корневой спан и вложенную операцию. При ошибке закроем цепочку до корня и передадим исключение вызывающему коду.

Корень = трТрейсинг.НачатьСпан("Заказы", "Провести документ");

Попытка
    Если Корень <> Неопределено Тогда
        трТрейсинг.ДобавитьАтрибут("Документ", "Заказ клиента № 00482");
        Проверка = трТрейсинг.НачатьСпан("Заказы", "Проверить остатки");
    Иначе
        Проверка = Неопределено;
    КонецЕсли;

    // Проверка остатков выполняется независимо от включения трейсинга.

    Если Проверка <> Неопределено Тогда
        трТрейсинг.ЗавершитьСпан();
    КонецЕсли;

    // Остальная логика проведения документа.

    Если Корень <> Неопределено Тогда
        трТрейсинг.ЗавершитьСпан();
    КонецЕсли;
Исключение
    Если Корень <> Неопределено Тогда
        трТрейсинг.ЗавершитьСпан(
            трТрейсинг.СтатусERROR(), ОписаниеОшибки(), Корень);
    КонецЕсли;
    ВызватьИсключение;
КонецПопытки;

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

Без явно переданных идентификаторов новый спан наследует контекст текущего родителя. Если стек пуст, создаётся новый трейс.

Завершение при ошибках не происходит само по себе: вызов API должен быть предусмотрен в обработчике исключения. Аварийное завершение процесса может оставить запись о начале без записи о завершении.

Продолжение трейса в другом сеансе

Перед запуском фонового задания или HTTP-вызовом получите текущие идентификаторы и передайте их вместе с параметрами операции:

TraceID = трТрейсинг.ТекущийTraceID();
ParentSpanID = трТрейсинг.ТекущийSpanID();

// Передать TraceID и ParentSpanID в другой сеанс.

// В принимающем сеансе:
Спан = трТрейсинг.НачатьСпан(
    "Заказы", "Обработка фонового задания", TraceID, ParentSpanID);

Попытка
    // Логика фонового задания.
    Если Спан <> Неопределено Тогда
        трТрейсинг.ЗавершитьСпан();
    КонецЕсли;
Исключение
    Если Спан <> Неопределено Тогда
        трТрейсинг.ЗавершитьСпан(
            трТрейсинг.СтатусERROR(), ОписаниеОшибки(), Спан);
    КонецЕсли;
    ВызватьИсключение;
КонецПопытки;

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

Граничное завершение

Третий параметр ЗавершитьСпан задаёт границу: модуль снимает спаны с вершины стека до неё включительно. Верхний спан получает переданный статус, остальные принудительно завершаются со статусом ERROR. Если граница не найдена, закрывается весь стек и записывается предупреждение.

После такого вызова отдельно закрывать спан-границу не нужно. Метод ЗавершитьСпанСОшибкой — сокращённый вариант завершения только верхнего спана с ERROR.

Что записывается в журнал регистрации

Основные события — Трейсинг.Начало и Трейсинг.Завершение. Данные спана сохраняются в JSON-комментарии. Просмотрщик использует события завершения:

{
  "trace_id": "6db6092d-0f9a-423e-990c-7377e2e577f9",
  "span_id": "883813ed-f512-4377-98ba-f05b63c22d81",
  "parent_span_id": "",
  "subsystem": "Заказы",
  "operation": "Провести документ",
  "started_at": 1731000000000,
  "time_format": "unix_ms",
  "status": "OK",
  "duration_ms": 12.34,
  "Attributes": {
    "Документ": "Заказ клиента № 00482",
    "Строк": 24
  }
}

started_at — время Unix в миллисекундах, duration_ms — длительность спана. Корневой спан не имеет родителя; просмотрщик принимает пустое значение или null. Поле time_format явно указывает формат времени.

При передаче текста ошибки в завершение добавляется поле error. Для спана с внешним TraceID также записывается событие Трейсинг.ВнешнийТрейс.

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

Просмотр трейсов в форме 1С

Обработка трПросмотрТрейсов использует одно рабочее пространство: слева находятся фильтры и список трейсов, справа — подробный разбор выбранного трейса.

Выбор данных

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

Список доступных подсистем задаётся через переопределяемый модуль. Некорректные записи журнала пропускаются, их количество учитывается при загрузке. Если период захватывает только часть операции, трейс может оказаться неполным.

После загрузки выберите трейс в списке слева. Справа появятся его спаны, временная шкала и подробности операций.

Дерево и временная шкала

  • Дерево спанов показывает вложенность операций и длительности.
  • Временная шкала показывает начало, продолжительность и пересечения операций.
  • Цвет определяется названием операции и сохраняется при смене трейса, фильтров и страниц. Палитра ограничена, поэтому разные операции могут иметь одинаковый цвет.
  • Спаны со статусом ERROR выделяются на шкале красным.
  • Выбор в дереве открывает нужную страницу шкалы и переводит её к выбранному спану без автоматического изменения масштаба.
  • Поиск спанов работает по операции, ID, подсистеме и атрибутам; дополнительно доступны отбор по подсистеме и переключатель «Только ошибки».
  • Размер страницы — 100, 200, 500 или 1000 спанов.

Колесо мыши прокручивает шкалу по вертикали, Ctrl + колесо меняет масштаб. Перетаскивание сдвигает видимый интервал времени, кнопка «Весь трейс» возвращает обзор.

Панель списка можно скрыть, а границы между панелями — перетащить. Дерево и шкала занимают свободную высоту окна; в небольшом окне остаётся прокрутка.

Вклад потомков и атрибуты

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

Доля рассчитывается как длительность дочерней операции, делённая на длительность выбранного спана. Параллельные операции могут дать суммарно больше 100%. Это сравнение длительностей, а не расчёт собственного времени или критического пути.

В блоке «Детали и атрибуты» доступны атрибуты, идентификаторы, статус, время начала, длительность и JSON выбранного спана.

Включение и внедрение

Объекты решения удобно объединить в подсистему трТрейсинг:

  • трТрейсинг — API спанов, сериализация и запись событий в журнал.
  • трТрейсингПовтИсп — получение стека и проверка разрешения трейсинга. При переносе важно сохранить настройки повторного использования возвращаемых значений.
  • трТрейсингПереопределяемый — список прикладных подсистем через ДобавитьПодсистемы.
  • трВключениеТрейсинга — регистр с полями Подсистема и Включен.
  • трПросмотрТрейсов — обработка просмотра с формой и макетом TraceViewerHTML.
  • _Демо — генератор примеров для проверки и знакомства с решением.
Процедура ДобавитьПодсистемы(МассивПодсистем) Экспорт
    МассивПодсистем.Добавить("Заказы");
    МассивПодсистем.Добавить("Доставка");
    МассивПодсистем.Добавить(Обработки._Демо.ИмяПодсистемы());
КонецПроцедуры

После переноса объектов включите нужные подсистемы в регистре, добавьте вызовы API в прикладной код и проверьте настройки журнала регистрации и права доступа к нему. Для успешных спанов используется уровень «Информация», для ERROR и FATAL — «Ошибка».

Демонстрационные сценарии

Обработка _Демо содержит обычные примеры работы с API, генератор одного трейса на 100 000 спанов и отдельную команду «Красивые трейсы · Checkout».

Checkout создаёт 3 синтетических трейса по 24 спана: API Gateway, корзина, расчёт цены, резервирование, антифрод, оплата, база данных и публикация события. Основной сценарий содержит неудачную попытку оплаты и успешный повтор. Длительности заданы для иллюстрации параллельных веток; это не результаты замера работы 1С.

При каждом запуске создаются новые идентификаторы и актуальное время. Для просмотра обновите конец периода, оставьте «Все подсистемы» и найдите checkout.

Совместимость и объём данных

Для больших журналов ограничивайте выборку нужным периодом и подсистемой. На шкале можно выбрать число спанов на странице. Скорость загрузки зависит от объёма данных и ресурсов рабочей среды; наличие генератора на 100 000 спанов не означает одинаковой производительности на любой базе.

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

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

  • Бухгалтерия предприятия, редакция 3.0, релизы 3.0.44.123

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

трейсинг трейсинг в 1С спаны TraceID SpanID распределённый трейс журнал регистрации API трейсинга просмотр трейсов мониторинг 1С

См. также

Работа с интерфейсом Анализ учета Мониторинг 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    92190    69    44    

77

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

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

6100 руб.

11.06.2026    1047    2    0    

4

Журнал регистрации Мониторинг Системный администратор Разработчик 1С 8.3 Абонемент ($m)

Мониторинг журнала регистрации - расширение, которое визуализирует ошибки из журнала регистрации в разрезе приложений. Расширение позволит выявить всплеск ошибок, подсветит динамические обновления и покажет картину рабочего процесса.

1 стартмани

07.11.2026    285    1    mrcamomile    7    

4

Мониторинг Сервера Системный администратор 1С 8.3 Бесплатно (free)

Шесть блоков технического отчёта по кластеру 1С: площадка, процессы, нагрузка, диск, копии, журналы за названный период — и открытые вопросы. Цифры из двух реальных прогонов на Windows Server 2019 (srvinfo 119 ГБ, 444 бэкапа и ни одного по нужной базе, висящий сеанс с лицензией). Что собирать, чего не делать, и где агент ошибся.

02.11.2026    222    netbka    0    

1

Журнал регистрации Инструменты администратора БД Технологический журнал Мониторинг Системный администратор Разработчик 1С 8.3 1С 8.5 1С:Управление торговлей 11 Абонемент ($m)

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

3 стартмани

19.10.2026    405    6    windsurf    0    

3

Мониторинг Системный администратор Абонемент ($m)

Небольшая программа для рабочих мест и серверов: следит за выбранными службами Windows (сервер 1С, СУБД, УТМ, лицензии) и сама запускает их, если служба остановилась или зависла. Полная редакция вдобавок не даёт пользователям запускать программы не из списка разрешённых или из списка запрещённых.

1 стартмани

08.10.2026    365    4    IronCAT09    0    

1

Мониторинг Обновление 1С Системный администратор Разработчик 1С 8.3 Бесплатно (free)

Отложенное обновление идёт третий день, штатная форма пишет "Выполнено: N из M", и непонятно, ждать или разбираться. Проверьте у себя: в БСП 3.1 почасовая история обработанных объектов, время завершения каждого обработчика, попытки и текст ошибки уже лежат в регистрах, не хватает только деления. Разобрал, где это хранится, как считать прогноз двумя скоростями (по объектам и по обработчикам) и как найти обработчик, который держит очередь, в том числе когда БСП записала ему "зацикливание", а держала его блокировка. Проверено на копии УТ 11.5 с 215 настоящими обработчиками типовой: очередь шла 4 часа, прогноз за 2 часа до конца ошибся на 5 минут. В конце обработка, которая отвечает одной строкой.

30.09.2026    812    nedomolkov.ivan    0    

1

Мониторинг Обновление 1С Системный администратор Разработчик 1С 8.3 Абонемент ($m)

Внешняя обработка одной строкой говорит, идёт отложенное обновление или стоит, когда закончится и какой обработчик держит очередь. Скорость по почасовой истории БСП и по завершённым обработчикам, остаток по плану обмена обновления, виновник по регистру обработчиков и журналу регистрации. Выгрузка состояния в Markdown для нейросети. Только чтение. Нужен регистр "Обработчики обновления" из свежих версий БСП 3.1 (проверено на УТ 11.5.22).

10 стартмани

30.09.2026    490    0    nedomolkov.ivan    0    

0
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. artbear 1590 09.09.26 18:41 Сейчас в теме
Очень интересно, спасибо!

недавно пришел к подобному подходу. пробовал выгружать, интегрироваться с подходами OpenTelemetry и связанными инструментами?
2. van_za 333 11.09.26 05:12 Сейчас в теме
(1) держу это в голове, по идее данных для выгрузки достаточно, возможно доделаю
3. van_za 333 09.10.26 23:14 Сейчас в теме
Переделал отчет под большие объемы, и в целом он теперь очень крутой, если кто скачал ранее напишите в личку отправлю новую версию
Для отправки сообщения требуется регистрация/авторизация