Журнал регистрации SQLite, кластер, метаданные

22.12.19

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

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

Файлы

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

Наименование Скачано Купить файл
Журнал регистрации SQLite
.cf 116,58Kb
6 2 500 руб. Купить

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

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

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

Так родилась задача - агрегировать ЖР в кластере и при этом не потерять функционал его фильтрации.

Публикация предназначена для работы только с журналом регистрации в формате SQLite (.lgd).

Для запуска необходимо установить драйвер, скачивать здесь: http://www.ch-werner.de/sqliteodbc/

Тестировалось на платформах 8.3.14.1944 и 8.3.16.1063, но должно работать на любой.

Сначала я попробовал использовать штатный функционал - процедуру ВыгрузитьЖурналРегистрации(). Но столкнулся с рядом проблем:

  • необходим был доступ на запись к файлам ЖР
  • после выполнения процедуры последний ЖР оставался захваченным монопольно (можно решить холостым вызовом процедуры)
  • во время выполнения процедуры параллельное выполнение было не возможным (ошибка разделения доступа)

Тогда я поискал на infostart/mista информацию, кто и как работает с ЖР.
За основу я изначально взял идею с внешним источником данных. Некоторые другие полезные мысли подчерпнул из других статей.

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

  • ПолучитьЗначенияОтбораЖурналаРегистрации()
  • ВыгрузитьЖурналРегистрации()

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

Но практически сразу столкнулся с проблемой, что синтаксис SQLite не поддерживается в полном объёме. Не работает в запросе "ВЫБРАТЬ ПЕРВЫЕ X" (это фатально, когда для большого ЖР вызвать метод без отбора - память моментально кончится), поэтому пришлось переписать на прямые запросы.

С чем пришлось столкнуться и какие есть ограничения:

  • после реструктуризации конфигурации с изменением названий объекта/ов метаданных на неактивных узлах ЖР они изменяться только после переключения на этот узел. Это проблема. Так же есть родственная проблема, что для события "_$User$_.Update" (и аналогичных) нет возможности получить Метаданные.Роли, так как для не объектных метаданных нет возможности получить их внутренний идентификатор. Решил их с помощью разработанного для других целей решения (хеш-контроль конфигурации) - отдельный справочник "МетаданныеСистемы", который автоматически заполняется обработкой парсинга выгруженной в файлы конфигурации.
  • никак не оптимизировал по производительности вспомогательную функцию _КонвертироватьВДерево
  • не реализовывал функционал, связанный с "Разделением данных сеанса"
  • не реализовывал парсинг некоторых типов событий (к примеру, _$Access$_.*)

Основные процедуры в общем модуле ЖурналРегистрацииКластер:

  • функция ИспользоватьЖурналРегистрацииSQLite - переопределяемая, позволяет управлять, используется ли данная обработка или штатная БСП
  • функция ВернутьИменаЖурналовРегистрации - переопределяемая, возвращает пути ЖР в вашей разработке
  • функция ПолучитьЗначенияОтбораЖурналаРегистрацииКластер - полный аналог штатной функции ПолучитьЗначенияОтбораЖурналаРегистрации
  • функция ВыгрузитьЖурналРегистрацииКластер - полный аналог штатной функции ВыгрузитьЖурналРегистрации, добавлена только коррекция времени

Основные процедуры в общем модуле ХешКонтроль:

  • функция КаталогВыгрузкиМетаданных - переопределяемая
  • функция ПараметрыКоманднойСтрокиДляВыгрузкиКонфигурации - переопределяемая
  • функция ХешКонтрольСистемы - основная экспортируемая функция

Работают все отборы, которые изображены на 3-ем скриншоте из обработки БСП (не входит в публикацию).

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

  • определяетесь, будете ли использовать подсистему работы с метаданными (если не будете работать - удаляете не нужные модули и справочники)
  • переопределяете все переопределяемые функции
  • для работы с подсистемой работы с метаданными - командой/вызовом выполняете первичное заполнение вспомогательного справочника (1 раз), первично обновляете метаданные (конфигуратор должен быть естественно закрыт)

Это моя первая публикация, прошу сильно не критиковать!

Обо всех ошибках, необходимости доработок, пожеланиях пишите пожалуйста в комментариях, я на связи.

Вступайте в нашу телеграмм-группу Инфостарт

Журнал регистрации SQLite кластер метаданные

См. также

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

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

23180 руб.

22.02.2018    38214    62    56    

58

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

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

6100 руб.

28.11.2018    23826    22    9    

49

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

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

28.02.2026    1685    julia96_07    0    

7

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

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

20.11.2024    6415    user1913000    13    

25

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

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

21.10.2024    7753    leemuar    8    

24

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

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

1 стартмани

29.12.2023    4783    55    dima_gsv    5    

14

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

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

1 стартмани

19.11.2023    3951    9    AlexSTAL    0    

8

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

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

1 стартмани

13.11.2023    8932    15    AlexSTAL    0    

48
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. bpc222 2145 23.12.19 08:28 Сейчас в теме
Поздравляю с первой статьей! Молодец!

если у вас несколько серверов 1С (кластер), то ЖР в конкретный момент пишется только на один из узлов

Это не так. Все зависит от использования деления по ИБ: https://its.1c.ru/db/v8316doc#bookmark:cs:TI000000024
2. AlexSTAL 126 23.12.19 08:35 Сейчас в теме
(1) Спасибо! Имелось ввиду для одной ИБ
3. Medvedik 14.11.23 08:01 Сейчас в теме
Работает только в среде Windows?
4. AlexSTAL 126 14.11.23 08:06 Сейчас в теме
(3) Да, не указал, использует COMОбъект("ADODB.Connection")
Но я думаю легко переписать на Внешние источники данных. ODBC драйвер SQLite есть для Linux
Для отправки сообщения требуется регистрация/авторизация