Замер длительности проведения документов по журналу регистрации без изменения конфигурации

17.04.13

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

В журнале регистрации 1С есть интересная колонка - "Транзакция", которая содержит момент начала транзакции и ее идентификатор. Используя эти данные, можно вычислить статистику времени проведения документов за промежуток времени.

Скачать файл

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

Наименование По подписке [?] Купить один файл
Получение длительности проведения документов из ЖР
.epf 11,54Kb
49
49 Скачать (1 SM) Купить за 1 850 руб.

К сожалению, 1С дает информацию о транзакции в строковом виде, поэтому на разбор этой строки в дату и метку транзакции потребуется время.

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

Какие ограничения стоит учесть при выборке данных:

1) Нужно отсечь отмененные транзакции, а информация об отмене транзакции есть только в последней записи. Т.е., если в рамках одной отмененной транзакции в ЖР было записано 5 строк, то в 4 из них будет признак "Транзакция зафиксирована", а в последней строке уже "Транзакция отменена".

2) Нужно отсечь длинные транзакции, в рамках которых были перепроведены несколько документов. В этом случае нужна другая методика подсчета времени, которую мы здесь не рассматриваем.

Учитывая эти ограничения, запрос получается сложным:

SELECT
   
DateTime AS [DateTime],
   
DATEDIFF (SECOND,TransactionStartTime,DateTime) as [DIFF],
   
Users.Name as [UserName],
   
Metadata.Name as [MetadataName],
   
DataStructure  as [Data]
FROM
Events
    INNER JOIN Metadata ON Events.MetadataID = Metadata.Code
    INNER JOIN Users ON Events.UserName = Users.Code
Where
   
DataStructure like '{"R",%}'
   
AND EventID IN (SELECT Code FROM EventsType WHERE (Name = '_$Data$_.Post') AND (InfobaseCode = 1))
   
AND TransactionStatus = 'U'
   
AND DateTime >= '20130401'
   
AND DateTime <= '20130415'
   
AND Events.InfobaseCode = 1
   
AND NOT TransactionMark IN (SELECT TransactionMark FROM
     (SELECT
TransactionMark, SUM(1) AS Count
     
FROM Events
      WHERE (EventID IN (SELECT     Code
                        FROM       EventsType
                        WHERE      Name = '_$Data$_.Post'
                                   
AND InfobaseCode = 1))
           
AND DateTime >= '20130401'
           
AND DateTime <= '20130415'
           
AND InfobaseCode = 1
     
GROUP BY TransactionMark) AS T
      WHERE (Count > 1))
   
AND NOT TransactionMark IN (SELECT     TransactionMark
      FROM          Events
      WHERE      TransactionStatus = 'R'
     
AND DateTime >= '20130401'
     
AND DateTime <= '20130415'
     
AND Events.InfobaseCode = 1)
ORDER BY
DateTime desc

 

Выполняться он будет достаточно долго, поэтому лучше заблаговременно создать для него 2 индекса, которые предлагает MS SQL Server:

CREATE NONCLUSTERED INDEX [Missing Index 2] ON [dbo].[Events]
(
    [
InfobaseCode] ASC,
    [
EventID] ASC,
    [
DateTime] ASC
)
INCLUDE (   [TransactionMark],
    [
DataStructure])
GO
CREATE NONCLUSTERED INDEX [Missing Index 1] ON [dbo].[Events]
(
    [
InfobaseCode] ASC,
    [
TransactionStatus] ASC,
    [
DateTime] ASC
)
INCLUDE (   [TransactionMark])

 

Для удобства во вложении небольшая обработка, которая автоматизирует формирование и выполнение запроса:

Порядок работы:

1) Указать строку соединения: например, Driver={SQL Server};Server=SRV1007;Database=Eventlog;

2) Нажать "Обновить список ИБ" и выбрать из списку нужную информационую базу.

3) Указать период и нажать "Получить таблицу длительности проведения документов".

 

P.S. - Для преобразования строкового идентификатора в ссылку использован кусок кода из этой разработки - Анализ и редактирование файлов журнала регистрации 1С 8.1/8.2 - ELF/LOG/LGF/LGP (Антон Ширяев)

См. также

Журнал регистрации Мониторинг Системный администратор Программист Бизнес-аналитик Руководитель проекта Платформа 1С v8.3 Платные (руб)

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

9000 руб.

28.08.2019    33924    22    21    

74

Журнал регистрации Системный администратор Платформа 1С v8.3 Конфигурации 1cv8 Платные (руб)

Конфигурация LogiCH эффективно решает проблему хранения и анализа записей журналов регистрации. Разработка использует столбцовую СУБД ClickHouse, одну из самых быстрых Big Data OLAP СУБД. Любой анализ журнала можно выполнить в одном отчете, в котором доступны все возможности СКД с учетом ограничений RLS. Количество подключаемых баз не ограничено и не влияет на скорость построения анализа.

5000 руб.

28.11.2018    20729    16    6    

41

Журнал регистрации Программист Россия Бесплатно (free)

В материале рассматривается сравнение двух инструментов для работы с журналом регистрации 1С: утилиты ibcmd и платформы Vector. Описаны их функциональные возможности, тестирование производительности и практическое применение для преобразования логов в формат JSON.

вчера в 15:30    509    user1913000    7    

14

Журнал регистрации Тестирование QA Программист Бесплатно (free)

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

21.10.2024    2782    leemuar    8    

22

Инструменты администратора БД Журнал регистрации Системный администратор Платформа 1С v8.3 1С:Управление торговлей 11 Абонемент ($m)

Внешняя обработка для регламентного сокращения журнала регистрации для конфигураций на базе БСП и платформы 8.3.20+

1 стартмани

29.12.2023    2154    31    dima_gsv    3    

13

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

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

1 стартмани

19.11.2023    1434    5    AlexSTAL    0    

8

Мониторинг Журнал регистрации Технологический журнал Системный администратор Программист Абонемент ($m)

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

1 стартмани

13.11.2023    4716    9    AlexSTAL    0    

47

Журнал регистрации Инструменты администратора БД Мониторинг Мессенджеры и боты Системный администратор Программист Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Управление холдингом 1С:Комплексная автоматизация 2.х Абонемент ($m)

Внешняя обработка для БСП-конфигураций с простым программным интерфейсом. Предназначена для мониторинга состояния системы. Базово реализована отправка ошибок из журнала регистрации, но можно легко добавить мониторинг других журналов, каких-либо действий пользователей, состояния системы (например закрытие месяца).

3 стартмани

26.09.2023    2824    19    doom2good    16    

14
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. squad 181 19.04.13 09:31 Сейчас в теме
Лучше будет добавить первой строчкой в запрос:
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
2. KroVladS 35 02.07.13 18:00 Сейчас в теме
(0)
<Зануда_Мод>
Было похожее, с меньшим функционалом, ещё и допиливать перед запуском пришлось, но всё таки добавьте в аналоги
</Зануда_Мод>

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

У вас с этим проблем нет?
3. y22-k 254 09.09.13 12:25 Сейчас в теме
{Форма.Форма.Форма(208)}: Ошибка при вызове метода контекста (Open)
АДО.Open(ТекстЗапроса);
по причине:
Произошла исключительная ситуация (Microsoft OLE DB Provider for ODBC Drivers): [Microsoft][ODBC SQL Server Driver][SQL Server]Недопустимое имя объекта "dbo.Infobases".

Из за чего такое может быть?
В поле сервер и имя базы ввел название сервера SQL и базы данных
unknown181538; +1 Ответить
4. php5 28 23.03.16 10:40 Сейчас в теме
5. zzz_natali 61 26.07.17 18:54 Сейчас в теме
А почему было не начать с простенького: просто соорудить вьювер журнала регистрации из базы SQL со всякими фильтрами/отборами и проч?
Спасибо.
6. unknown181538 158 21.10.20 18:51 Сейчас в теме
Т.е. если в ОбработкеПроведения() одного документа проводится другой, то эта транзакция вся полностью проигнорируется?
Оставьте свое сообщение