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

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

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

22800 руб.

22.02.2018    36047    60    54    

57

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

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

6000 руб.

28.11.2018    21439    18    7    

44

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

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

20.11.2024    2129    user1913000    13    

20

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

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

21.10.2024    4205    leemuar    8    

24

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

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

1 стартмани

29.12.2023    2714    44    dima_gsv    3    

14

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

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

1 стартмани

19.11.2023    1899    6    AlexSTAL    0    

8

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

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

1 стартмани

13.11.2023    5797    11    AlexSTAL    0    

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