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

17.04.13

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

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

Файлы

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

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

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

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

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

К сожалению, 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 Управляемые формы 1C:Бухгалтерия Россия Платные (руб)

История изменений реквизитов и табличных частей справочников, документов, независимых регистров сведений, возможность отката изменения, восстановление удаленных объектов, сбор статистики использования базы 1С. Альтернативный журнал регистрации.

22800 руб.

22.02.2018    37114    61    55    

58

Журнал регистрации Системный администратор Программист 1С v8.3 1C:Бухгалтерия Платные (руб)

Журнал регистрации платформы 1С в SQL. Общая база хранения всех журналов. Через com-подключение регламентным заданием периодически догружает журналы регистраций из рабочих баз. Предоставляет настраиваемый доступ к журналам по правам подразделений. Формирует отчеты по пользователям и данным.

12000 руб.

23.05.2014    57767    53    17    

48

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

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

20.11.2024    4103    user1913000    13    

22

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

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

21.10.2024    5890    leemuar    8    

24

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

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

1 стартмани

29.12.2023    3643    51    dima_gsv    4    

14

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

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

1 стартмани

19.11.2023    2771    7    AlexSTAL    0    

8

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

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

1 стартмани

13.11.2023    7360    12    AlexSTAL    0    

48

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

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

3 стартмани

26.09.2023    4314    28    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 255 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 29 23.03.16 10:40 Сейчас в теме
5. zzz_natali 61 26.07.17 18:54 Сейчас в теме
А почему было не начать с простенького: просто соорудить вьювер журнала регистрации из базы SQL со всякими фильтрами/отборами и проч?
Спасибо.
6. unknown181538 163 21.10.20 18:51 Сейчас в теме
Т.е. если в ОбработкеПроведения() одного документа проводится другой, то эта транзакция вся полностью проигнорируется?
Для отправки сообщения требуется регистрация/авторизация