Получение запросом данных журнала регистрации хранящегося в SQLite

03.11.15

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

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

Скачать файлы

Наименование Файл Версия Размер
ЖР.cf
.cf 20,90Kb
256
.cf 20,90Kb 256 Скачать

Начиная с версии платформы 8.3.5.1068 журнал регистрации хранится в файловой базе данных SQLite.

Вспоминаем про функциональность внешних источников данных.

Соединяем два механизма и получаем такой вот результат:

ПараметрыСоединения = Новый ПараметрыСоединенияВнешнегоИсточникаДанных;
ПараметрыСоединения.СтрокаСоединения = "DRIVER=SQLite3 ODBC Driver;Database=" + ФайлЖурналаРегистрации + ";BigInt=1;";
ВнешниеИсточникиДанных.ЖурналРегистрации.УстановитьОбщиеПараметрыСоединения(ПараметрыСоединения);
ВнешниеИсточникиДанных.ЖурналРегистрации.УстановитьСоединение();

Запрос = Новый Запрос();
Запрос.Текст = "ВЫБРАТЬ
               |	ЗаписиЖурнала.Код,
               |	ЗаписиЖурнала.Важность,
               |	ЗаписиЖурнала.Дата,
               |	ЗаписиЖурнала.СтатусТранзакции,
               |	ЗаписиЖурнала.ДатаТранзакции,
               |	ЗаписиЖурнала.ИдентификаторТранзакции,
               |	ЗаписиЖурнала.Пользователь,
               |	ЗаписиЖурнала.Пользователь.Код,
               |	ЗаписиЖурнала.Пользователь.Наименование,
               |	ЗаписиЖурнала.Компьютер.Код,
               |	ЗаписиЖурнала.Компьютер.Наименование,
               |	ЗаписиЖурнала.Приложение.Код,
               |	ЗаписиЖурнала.Приложение.Наименование,
               |	ЗаписиЖурнала.Событие.Код,
               |	ЗаписиЖурнала.Событие.Наименование,
               |	ЗаписиЖурнала.Комментарий,
               |	ЗаписиЖурнала.Данные,
               |	ЗаписиЖурнала.ПредставлениеДанных,
               |	ЗаписиЖурнала.РабочийСервер,
               |	ЗаписиЖурнала.РабочийСервер.Код,
               |	ЗаписиЖурнала.РабочийСервер.Наименование,
               |	ЗаписиЖурнала.ОсновнойПорт,
               |	ЗаписиЖурнала.ВспомогательныйПорт
               |ИЗ
               |	ВнешнийИсточникДанных.ЖурналРегистрации.Таблица.ЗаписиЖурнала КАК ЗаписиЖурнала";
				   
ТаблицаДанных = Запрос.Выполнить().Выгрузить();
ВнешниеИсточникиДанных.ЖурналРегистрации.РазорватьСоединение();

Не забываем скачать и установить ODBC-драйвер для SQLite нужной разрядности.

Обращаю внимание на параметр в строке подключения "BigInt=1", только так, поле хранящее дату будет возвращать корректный результат. Кстати, дата хранится как целое число. Например, если дата равна 635453673444260, то чтобы перевести в привычный тип Дата, нужно сделать так:

ОбычнаяДата = '00010101000000' + 635453673444260/10000; //03.09.2014 18:55:44

Если остались вопросы, просто посмотрите ЖР.cf и встроенную обработку "Пример".

Спасибо за внимание.

журнал регистрации sqlite

См. также

Журнал изменений с восстановлением состояния ссылочных объектов и архивацией по HTTP / COM (расширение + конфигурация, 8.3.14+, ЛЮБАЯ конфигурация)

Архивирование (backup) Журнал регистрации Поиск данных Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 1С:Управление торговлей 11 Платные (руб)

База данных «сама» меняет данные в документах/справочниках? Тогда данный журнал изменений для Вас! Практически не влияет на скорость записи объектов за счет быстрого алгоритма! Скорость работы почти в 2 раза выше типового механизма "История изменений"! Позволяет следить за изменениями и удалением в любых ссылочных объектах конфигурации, с возможностью архивации по HTTP(!) или COM, и сверткой данных. А так же, может восстановить состояние реквизитов (значения) до момента изменения или удаления объекта из базы. Есть ДЕМО-база где можно самостоятельно протестировать часть функционала! Работает на любых платформах выше 8.3.14+ и любых конфигурациях! Версия 3.1 от 24.08.2023!

19200 руб.

15.05.2017    42515    10    24    

38

Версионирование объектов для Альфа-авто, ред 4 и 5.

Оптовая торговля Розничная торговля Журнал регистрации Платформа 1С v8.3 Конфигурации 1cv8 Автомобили, автосервисы Управленческий учет Платные (руб)

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

4800 руб.

03.09.2016    42252    33    24    

37

LogManager - Внешний журнал регистрации в SQL

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

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

10000 руб.

23.05.2014    55463    52    16    

47

Мониторинг баз и серверов 1С

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

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

9000 руб.

28.08.2019    30945    14    21    

66

LogiCH - хранение и анализ журнала регистрации в сверхбыстрой СУБД ClickHouse

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

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

5000 руб.

28.11.2018    19542    13    6    

36

Регламентное сокращение журнала регистрации

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

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

1 стартмани

29.12.2023    1240    12    dima_gsv    1    

12

Магия преобразований: ЖР, ТЖ, RAS/RAC, логи - универсальное решение Vector

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

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

1 стартмани

13.11.2023    2962    4    AlexSTAL    0    

42

Мониторинг состояния с отправкой в telegram

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

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

3 стартмани

26.09.2023    1752    11    doom2good    10    

13
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. petrov_al 10 18.09.14 09:43 Сейчас в теме
Очень интересный подход через внешниии источники данных. По сути можно иметь it-базу и там анализировать журналы разных баз.
idjumatov; bidond; Makushimo; demkonst; rtnm; +5 Ответить
15. adapter 417 25.09.14 09:38 Сейчас в теме
(1) petrov_al, тоже самое можно было делать и на 8.2. Без sqlLite, но суть та же. Вот смотри
http://infostart.ru/public/283362/

18. AllexSoft 06.10.14 14:07 Сейчас в теме
(15) adapter, разница только в 10тыс рублей ;) сейчас тоже самое но из коробки бесплатно
user1619761; Dizel; buganov; unduty; +4 Ответить
2. AlX0id 19.09.14 15:31 Сейчас в теме
Но есть один нюанс. Единожды переключив журнал в новый формат - обратно не вернешься. А текущие версии КИПа не поддерживают новый журнал регистрации в принципе %)
3. metmetmet 81 21.09.14 13:00 Сейчас в теме
А что можно сказать по производительность в сравнении со старым механизмом?
4. awk 741 21.09.14 13:36 Сейчас в теме
(3) metmetmet, Ускорилось...
artichoke; +1 Ответить
6. kiruha 388 22.09.14 10:02 Сейчас в теме
(4) awk,
То что это ускоряет чтение не надо быть 7 пядей во лбу
Интересно как запись , есть ли блокировки из за этого - т.к. стандартно 1С пишет каждый чих пользователя,
SQLLite при записи блокируют всю таблицу
7. BabySG 22.09.14 10:04 Сейчас в теме
(6) kiruha, очевидно, что пользователь БД в этом случае один и блокировки не страшны в принципе :)
24. awk 741 06.10.14 18:12 Сейчас в теме
(7) BabySG, В SQLite нет блокировок таблиц. Есть блокировка баз. Только один пользователь может писать. Остальные только читают.
9. AlX0id 22.09.14 15:47 Сейчас в теме
(6) kiruha, Сомнительно, что там вообще накладываются блокировки - ибо нафига? Кого может волновать грязное чтение журнала регистрации?
10. JohnyDeath 301 22.09.14 17:26 Сейчас в теме
(9) AlX0id, так устроен SQLite из коробки. Когда пишем - блокируем всё.
11. AlX0id 23.09.14 11:46 Сейчас в теме
(10) JohnyDeath,
Почитал - да, так и есть.. В лучшем случае можно включить WAL как я понимаю.
25. AlexO 135 14.01.15 23:18 Сейчас в теме
(10) JohnyDeath,
так устроен SQLite из коробки
Причем тут устройство или неустройство SQLlite? Так устроен любой SQL - если запись в таблицу, то блокируется вся таблица. А журнал - это практически одна основная таблица.
5. cool.vlad4 2 21.09.14 18:38 Сейчас в теме
о мой бог, неужели все таки додумались сделали на sqlite. это ж какой ад и кошмар был
1cmax; bulpi; Yashazz; +3 Ответить
8. kiruha 388 22.09.14 10:52 Сейчас в теме
На каждого пользователя своя база SQLLIte ?
12. maxx 991 24.09.14 10:19 Сейчас в теме
Классно. Интересно, если базы с более старой платформы 1С переводить на 8.3, то к уже имеющийся журнал регистрации как перегнать в SQLLite?
16. AlX0id 29.09.14 14:09 Сейчас в теме
(12) maxx,
Автоматом вроде конвертится..
17. ediks 335 06.10.14 13:44 Сейчас в теме
(16) Что-то мне кажется, что автоматом не конвертится.
Прикрепленные файлы:
19. AlX0id 06.10.14 15:37 Сейчас в теме
(17) ediks,
Ну вот ток что на тестовой базе перевел на новый формат, старые файлы журнала поудалял - вся старая информация осталась.
20. ediks 335 06.10.14 16:20 Сейчас в теме
(19) Не, я предполагал, что не нужно нажимать никакие кнопки. Типа само, без участия оператора все происходит.
А так я тоже конвертнул - появился новый файл 1Cv8.lgd. Скачал конфигу и посмотрел, что получается.
Вот только вопрос - сколько будет конвертироваться журнал размером 120 Гб (все, что нажито нелегким трудом за много лет)?
И какой будет размер базы данных журнала? У меня после конвертации тестового журнала размером 10 Мб получилась база размером 17 Мб.
22. AlX0id 06.10.14 17:06 Сейчас в теме
(20) ediks,
Режьте его серпом по корень ) Все равно в старом журнале разобраться в 120 гигах практически нереально )
23. ediks 335 06.10.14 18:10 Сейчас в теме
(22) Пока только вопрос стоит об архивировании этого гигантского журнала. Вопрос о конвертации такого журнала был поставлен с чисто теоретической, познавательной целью.
У нас и мальчика-то 1С 8.3.5 нет :)
13. zombi81 8 24.09.14 13:06 Сейчас в теме
А скриншот есть что на выходе получаем? Так как таблица есть EventLog там все поля по -английски называются и информация в таблице невнятная.
14. rtnm 614 25.09.14 08:57 Сейчас в теме
(13) zombi81, Да, имена таблиц и полей используют английские названия. В своем примере, я как раз частично их перевел для внешнего источника, используя в основном устоявшиеся термины. Можете изучить ЖР.cf и я думаю станет понятнее.
21. AllexSoft 06.10.14 16:34 Сейчас в теме
зачем держать такие журналы? они все равно не используемы.. забэкапил то что нажито и ничего переносить не надо. ИМХО
26. JohnyDeath 301 24.01.15 22:36 Сейчас в теме
(26) Вы это серьезно? Или просто пытаетесь так толсто протроллить?
27. AlexO 135 25.01.15 18:25 Сейчас в теме
(26) JohnyDeath, по теме есть что? Или только троллить зашел?
28. pepe 62 12.11.15 16:12 Сейчас в теме
Для файловой базы все работает, а вот для серверной версии не работает. Хочу вытянуть список документов которые изменял пользователь. Даже через режим "Конфигуратор" не могу подключится для получение структуры. В файловой все ок.
29. pepe 62 12.11.15 16:48 Сейчас в теме
С вопросом разобрался. Нужно ставить SQLite на сервер 1С и у сервера должен быть доступ к файлу.
30. orefkov 1152 18.11.15 10:04 Сейчас в теме
К вопросу о блокировках в sqlite.
Для начала отмечу, что блокировки в sqlite накладываются на всю базу.
Когда и как они накладываются, зависит от способа обращения к файлу базы данных sqlite.
Независимо от способа - писать в базу sqlite в один момент времени может только один писатель.
А вот насчет читателей - есть нюансы.
В случае, если к файлу идут обращения только с одного компьютера, есть возможность включить режим WAL.
В этом режиме писатель блокирует только других писателей, но не блокирует читателей, также как и наличие читателей не блокируют писателя.
Просто каждый читатель видит то состояние базы данных, какое оно было на момент начала чтения, и не видит изменений, вносимых в этот момент писателем.
Отмечу, что в этом режиме изменения записываются в отдельный файл, и периодически наступает "чекпоинт", когда данные из дополнительного файла переносятся в основной.
В этот момент блокируются все - и читатели, и писатель.
Если режим WAL для данной базы данных не включен, наличие читателей не дает писать, а наличие писателя - не дает читать.
То есть при начале записи сначала блокируется подключение читателей, потом дожидается окончание чтение существующих читателей, потом делается запись, и только потом из базы снова можно читать.
Режим WAL нельзя использовать, если обращение к файлу базы данных выполняется одновременно с разных компьютеров.
При многопоточном обращении к файлу БД из одного процесса есть возможность установить несколько соединений с одним файлом БД.
В этом случае для читающего соединения можно установить режим "read uncommited", когда одно соединение сразу видит изменения, вносимые другим соединением еще до завершения транзакции. Если и читать и писать через одно соединение, то там всегда сразу видно вносимые изменения.
Вот так вот коротенько о блокировках в sqlite.

А вот сама идея вести лог сразу в базу данных sqlite - мне кажется, 1С облажалась, как всегда, пытаясь выдумать свой велосипед.
Во всём мире журналы логов пишутся максимально быстро в обычные текстовые файлы, которые уже потом периодически засасываются в различные конвертеры и анализаторы.
Задача стоит только в том, чтобы реализовать возможность инкрементальной перекачки из текстовых файлов в анализатор. Самое простое - каждые сутки/час/неделю заводить новый файл.
Нет необходимости "на лету" писать в формате, пригодном для анализа. Тем более, что sqlite - не самый быстрый способ писать в файлы.
Например, apache, ngnix спокойно и не парясь ведет лог в текстовые файлы. Хотя, о чём это я - nginix быстрый, ему так надо. А для 1С наверняка запись в журнал регистрации не является "бутылочным горлышком" платформы, и ускорять запись в этом месте нет особого смысла, потому что это копейки по сравнению с другими тормозными местами.
freeek; Pawlick; dj_serega; sergathome; LsrGroup; VladC#; endym; marochkin; JohnyDeath; +9 Ответить
32. awk 741 25.01.16 14:24 Сейчас в теме
(30) orefkov,
29.10.2013 Как мы улучшили журнал регистрации

Реализовано в версии 8.3.5.1068.

Мы значительно переработали журнал регистрации для того, чтобы увеличить скорость выполнения запросов к журналу и повысить надёжность хранения данных.

Для этого, в том числе, потребовалось изменить формат хранения журнала регистрации. Теперь он хранится в одном файле базы данных SQLite. Этот файл имеет расширение lgd.

Наши тесты показывают, что практически по всем условиям отбора выборка данных ускорилась. При некоторых условиях выборка ускорилась существенно. Например, в случае отбора по пользователю, разделителям и по данным, представленным одним значением. Что касается записи, то скорость однопоточной записи тоже немного ускорилась. А вот скорость многопоточной записи возросла почти в полтора раза. Как в файловом варианте, так и в клиент-серверном.

Создавая новую реализацию журнала, мы стремились учесть пожелания по архивированию журнала и сокращению его размера. Теперь во встроенном языке есть два метода, которые позволяют копировать данные журнала регистрации или удалять их, используя условия фильтрации. Это методы СкопироватьЖурналРегистрации() и ОчиститьЖурналРегистрации(). С их помощью архивирование или очистку журнала можно выполнять автоматически, регламентными заданиями, в период наименьшей загрузки системы.

Также мы ввели в журнале ещё одно изменение. Время событий хранится теперь в формате всемирного координированного времени (UTC). Это позволят избежать проблем, связанных с работой в разных часовых поясах.
Показать
http://v8.1c.ru/o7/201310log/index.htm

Это как писать надо было, что бы дозапись в файл тормазила.... :))))
sergathome; +1 Ответить
31. swwb 18 22.01.16 11:54 Сейчас в теме
Кто может подсказать?. Есть большой журнал регистраций ~ 30 Gb, пользователей много+ работает автоматическая выгрузка из другой системы. В общем, в лог постоянно что-то пишется.
Посмотреть историю изменений по документу просто нереально, журнал повисает и вешает за собой базу. Есть какие то пути решения? Хочется смотреть журнал на горячую при работающей базе.
33. adapter 417 28.01.16 09:24 Сейчас в теме
(31) swwb, решение уже сказали выше:
orefkov
быстро писать в текст и медленно инкрементировать в удобную для анализа систему
.
logManager так и работает (http://infostart.ru/public/283362/)
34. progr-2008 118 04.01.17 08:56 Сейчас в теме
При сокращении журнала не всегда срабатывает корректно запись в файл.
35. sergathome 4 29.08.18 16:41 Сейчас в теме
При попытке читать лог ОДНОЙ БАЗЫ блокируется запись в него, что приводит к остановке работы rmngr, что в свою очередь, приводит к остановке обслуживания ВСЕХ БАЗ СЕРВЕРА.
Дадад, это не баг, это фича...

ЗЫ Неудача нового формата для крупных масштабов признана 1С фактом с версии 8.3.12 возможности интерактивно выбирать формат журнала регистрации (т.е. опытные люди выбирают старый формат). (http://www.gilev.ru/oldjr/)
lapat; dj_serega; Windsor77; +3 Ответить
36. ipoloskov 162 04.05.20 21:29 Сейчас в теме
Что находится в поле 'Данные" для регистра сведений? Ключ набора записей?
37. ipoloskov 162 05.05.20 21:22 Сейчас в теме
(36) в случае регистров сведений там пусто...
38. Slypower 2 07.05.20 15:57 Сейчас в теме
Почему она не срабатывает? Куда капать? ODBC-драйвер для SQLite установил

{Обработка.Пример.Форма.Форма.Форма(48)}: Ошибка при вызове метода контекста (Выполнить)
	Таблица = Запрос.Выполнить().Выгрузить();
по причине:
Ошибка выполнения запроса
по причине:
Ошибка внешней базы данных:
ошибка при выполнении запроса
по причине:
Ошибка ODBC. SQLSTATE: HY000
Номер ошибки: 11
Описание: database disk image is malformed (11)
Показать
Оставьте свое сообщение