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

17.08.26

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

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

Бесплатные

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

Узнавайте о новых бесплатных решениях в нашей телеграм-группе Инфостарт БЕСПЛАТНО

Наименование Скачано Бесплатно
Единый API трейсинга операций в 1С: трассировка спанов, распределённые трейсы и журнал регистрации как система наблюдения
.cf 105,09Kb
0 Скачать бесплатно

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

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

Проблема

Каждая операция в 1С — это цепочка вложенных шагов: чтение данных, обработка, запись в справочник, вызов фонового задания, обращение к внешнему сервису. Когда что-то идёт не так, стандартных инструментов не хватает:

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

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

Что предлагает модуль

трТрейсинг — это:

  1. Единый API для создания и завершения спанов с записью в журнал регистрации.
  2. Стек спанов — автоматическое связывание вложенных операций в цепочку «родитель → ребёнок».
  3. Поддержка распределённых трейсов — связывание спанов между сеансами (фоновые задания, HTTP, интеграции) через внешний TraceID.
  4. Гарантированное завершение спанов при любом исходе.
  5. Граничный режим — «откат» стека до указанного спана.
  6. Обработка просмотра трейсов с построением дерева спанов в HTML.

Основные сценарии

1. Обычный режим (вложенные операции)

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


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

Как это работает:

  • если TraceID и ParentSpanID не переданы, родитель берётся из вершины стека;
  • TraceID наследуется от родителя, а если стек пуст — генерируется новый.

2. Распределённый трейс (внешний TraceID)

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


// Получаем текущий контекст
TraceID  = трТрейсинг.ТекущийTraceID();
SpanID   = трТрейсинг.ТекущийSpanID();
// Передаём их в параметры фонового задания / HTTP
// ...
// В фоновом задании связываемся с исходным спаном
Спан = трТрейсинг.НачатьСпан("Заказы",
        "Обработка фонового задания", TraceID, SpanID);
    // ...
трТрейсинг.ЗавершитьСпан(трТрейсинг.СтатусOK());

Так строится полная цепочка: корневой спан внешнего запроса → спан-обработчик → спан фонового задания.

3. Завершение при ошибках

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

4. Граничный режим (откат стека)

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


Граница = трТрейсинг.НачатьСпан("Доставка", "Расчёт стоимости");
    трТрейсинг.НачатьСпан("Доставка", "Шаг 1");
    трТрейсинг.НачатьСпан("Доставка", "Шаг 2");
    // Если здесь ошибка...
    трТрейсинг.ЗавершитьСпан(
        трТрейсинг.СтатусERROR(),
        "Не удалось рассчитать стоимость",
        Граница);   // закрываем всё до границы включительно

Поведение:

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

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

Каждый спан пишется в журнал в виде JSON. Начало спана:


{
  "trace_id": "...",
  "span_id": "...",
  "parent_span_id": "...",
  "subsystem": "Заказы",
  "operation": "Провести документ",
  "started_at": 1731000000000,
  "status": "STARTED"
}

Завершение спана (добавляются статус, длительность, атрибуты и ошибка):


{
  "trace_id": "...",
  "span_id": "...",
  "parent_span_id": "...",
  "subsystem": "Заказы",
  "operation": "Провести документ",
  "started_at": 1731000000000,
  "status": "OK",
  "duration_ms": 12.34,
  "Attributes": { "ключ": "значение" }
}

Для внешних (распределённых) трейсов дополнительно пишется отметка Трейсинг.ВнешнийТрейс с признаком "source": "external".

Регистр сведений для включения подсистем

Трейсинг включается выборочно, по подсистеме. Для этого используется регистр сведений трВключениеТрейсинга с реквизитами Подсистема и Включен. Реестр подсистем наполняется через переопределяемый модуль:


Процедура ДобавитьПодсистемы(МассивПодсистем) Экспорт
    МассивПодсистем.Добавить(Обработки._Демо.ИмяПодсистемы());
КонецПроцедуры

Это даёт гибкость: например, включить трейсинг только для «Заказов» и «Доставки», оставив остальные подсистемы на прежнем поведении.

Обработка просмотра трейсов

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

Страница 1 — «Получение спанов»

Здесь задаются фильтры и выгружаются спаны из журнала регистрации:

  • Подсистема — выбор из списка подсистем, для которых разрешён трейсинг (список наполняется автоматически через ДобавитьПодсистемы);
  • Стандартный период — диапазон дат, за который собираются данные (ДатаНачала / ДатаОкончания);
  • Кнопка «Получить спаны» — выполняет запрос к журналу регистрации по событию Трейсинг.Завершение;
  • Таблица спанов — наглядный список полученных записей: DurationMS, TraceID, SpanID, ParentSpanID, Operation, Status, Attributes, Error.

Полученные записи парсятся из JSON-комментария журнала и раскладываются по колонкам. Некорректные записи не «роняют» обработку — они пропускаются с сообщением в окно.

 

 

Страница 2 — «Просмотр спанов»

На этой странице выбранный трейс собирается в связное дерево и показывается в HTML-представлении:

  • Список трейсов — уникальные TraceID из выгруженных спанов (для быстрого выбора нужной операции);
  • Дерево спанов — вложенность отображается отступами и префиксом ^92;^72;, корневые спаны — без отступа;
  • Длительность — по каждому спану в отдельной колонке;
  • Статус — цветовая маркировка (OK — зелёный, ошибки — красный);
  • Атрибуты — значения, добавленные через ДобавитьАтрибут, в компактном виде ключ: значение;
  • Ошибка — текст ошибки для спанов со статусом ERROR / FATAL.

HTML-представление формируется на сервере по дереву спанов (массив корневых + соответствие «родитель → дети») и открывается интерактивно при выборе трейса. Атрибуты, включая вложенные структуры и массивы, компактно сериализуются, длинные значения обрезаются.

Как внедрить

 

 

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

Создайте подсистему трТрейсинг и включите в неё следующие объекты:

Общие модули

  • трТрейсингосновной API трейсинга. Содержит весь набор экспортных методов для работы со спанами: НачатьСпан, ЗавершитьСпан, ЗавершитьСпанСОшибкой, ДобавитьАтрибут, ТекущийTraceID, ТекущийSpanID, а также функции статусов (СтатусOK, СтатусERROR, СтатусFATAL, СтатусSTARTED). Отсюда вызывается весь остальной код приложения.
  • трТрейсингПовтИспповторное использование. Здесь живёт стек спанов текущего сеанса (ссылка на массив, который модифицируется добавлением/удалением спанов), вспомогательные механизмы и запись трейсинга в журнал регистрации.
  • трТрейсингПереопределяемыйпереопределяемый модуль. Точка расширения: через метод ДобавитьПодсистемы наполняет реестр подсистем, для которых разрешён трейсинг. Адаптируется под конкретную конфигурацию без изменения основного модуля.

Обработка

  • трПросмотрТрейсовобработка просмотра трейсов. Рабочее место аналитика/разработчика для разбора операций. Состоит из двух страниц: «Получение спанов» (фильтры и выгрузка записей из журнала регистрации) и «Просмотр спанов» (выбранный трейс собирается в дерево и выводится в HTML-представлении).

Регистр сведений

  • трВключениеТрейсингарегистр сведений с реквизитами Подсистема и Включен. Позволяет выборочно включать и выключать трейсинг по каждой подсистеме независимо.

Заключение

Модуль трТрейсинг даёт компактный и предсказуемый способ наблюдать за операциями в 1С. Главные плюсы:

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

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

  • Бухгалтерия предприятия, редакция 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    89503    67    44    

75

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

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

6100 руб.

11.06.2026    652    2    0    

4

HighLoad оптимизация Мониторинг Системный администратор Программист 1С 8.3 Бесплатно (free)

Мониторинг блокировок сам оказался старейшей открытой транзакцией в базе: сеанс спит, блокировок по нему ноль, транзакция висит четверо с половиной суток. Порог в его собственном запросе - пять секунд, свою транзакцию он продержал порядка восьмидесяти тысяч таких порогов и себя ни разу не заметил. Ни в один отчёт "кто кого блокирует" такой сеанс не попадает: никто никого не ждёт. Это четвёртый из четырёх механизмов, разобранных в статье. Остальные три: один текст ошибки на две совершенно разные причины, из-за которого уходят в разбор графов вместо одной правки обработчика; кольцевой буфер диагностики, обнуляемый переключением основного узла; события, записанные под чужим именем базы, из-за чего запрос отдаёт ноль строк там, где данные лежат. По каждому разобрано, как он выглядит, чем отличается от настоящей пустоты и что с ним делать.

21.08.2026    575    nedomolkov.ivan    0    

1

HighLoad оптимизация Мониторинг Системный администратор Программист 1С 8.3 Бесплатно (free)

Если в журнале регулярно всплывает deadlock, а пользователь жалуется на документ, которого в отчёте о взаимоблокировке вообще нет, эта статья про то, как искать настоящего виновника. Главный вывод: разбирать один deadlock бесполезно. Один случай не отличить от совпадения, а картину даёт только частота: какие объекты повторяются во всех отчётах сразу. Внутри готовый SQL-запрос, который разворачивает список ресурсов в таблицу частот, и три грабли на нём. Плюс четыре ложных следа, на которые мы потратили часы, и объяснение, почему объект из жалобы виноват не был. Чем закончилось: помогла одна галочка на реквизите, а замер до и после показал разницу на два порядка по логическим чтениям. Есть и раздел про цену этого решения, которую мы не измерили.

18.08.2026    693    nedomolkov.ivan    0    

0

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

Если у вас интеграционная шина и обмены иногда встают непонятно почему, эта статья про то, где искать. Главный вывод за год эксплуатации: очереди самой шины виноваты редко. Отставание копится на стороне 1С, и обычный мониторинг длины очереди его не ловит совсем: очередь короткая, всё зелёное, а канал стоит сутки. Внутри пять поломок, которые не воспроизводятся на тестовом стенде и вылезают только на длинном непрерывном аптайме, и три случая, когда шина отчиталась «доставлено», а данные в базу не приехали. По каждой: симптом, куда мы полезли сначала и почему мимо, настоящая причина и что помогло. Отдельно история про то, как врал наш мониторинг, и как проверить свой за полчаса. В конце чеклист на двадцать пунктов: что задать в контейнере до первого запуска, что мониторить кроме длины очереди и чем рестарт шины отзовётся в базах-приёмниках.

17.08.2026    1003    nedomolkov.ivan    4    

1

Мониторинг Программист 1С 8.3 Россия Бесплатно (free)

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

17.08.2026    1259    206    AleksandrEvplov    15    

22

Перенос данных 1C Мониторинг Программист Бесплатно (free)

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

21.07.2026    2171    Sibars    12    

4

Регламентированный учет и отчетность Мониторинг Бухгалтер 1C:Бухгалтерия Россия Бухгалтерский учет Платные (руб)

Проверка корректности данных складского учета множества баз. Целевая система "1С:Предприятие 8.3". Прямой прямой доступ к базам (файловым и серверным) без нарушения регламента фирмы 1С. Выполняет массовую проверку без запуска клиентского приложения 1С. Обеспечивает выявление ошибок складского учета без использования интерфейса 1С. Наиболее эффективен в условиях аутсорсинговых бухгалтерий. Обязательно: требуется регистрация компонента ComConnector.

35380 руб.

03.07.2026    520    0    0    

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