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

22.12.19

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

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

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

Наименование Файл Версия Размер
Журнал регистрации SQLite
.cf 116,58Kb
4
.cf 116,58Kb 4 Скачать

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

Публикация предназначена для работы только с журналом регистрации в формате 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 кластер метаданные

См. также

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

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

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

10000 руб.

23.05.2014    55416    52    16    

47

Версионирование справочников, документов и регистров сведений на SQL-сервере

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

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

22800 руб.

22.02.2018    35117    58    53    

55

Журнал изменений с восстановлением состояния ссылочных объектов и архивацией по 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    42470    10    24    

38

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

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

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

9000 руб.

28.08.2019    30837    14    21    

65

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

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

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

4800 руб.

03.09.2016    42213    32    24    

36

Уведомления на почту по событиям журнала регистрации на email и в Telegram (для УНФ, УТ 11, БП 3.0, ЗУП 3.0, ERP)

Мессенджеры и боты Журнал регистрации Мониторинг Email рассылки Платформа 1С v8.3 Управляемые формы 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Комплексная автоматизация 2.х 1С:Зарплата и Управление Персоналом 3.x Платные (руб)

Рассылка уведомлений о событиях журнала регистрации на электронную почту и в Телеграмм. Программа позволяет анализировать журнал регистрации по заданным критериям, находить в нём интересующие события, и отправлять уведомления об этих событиях на электронную почту (одного или нескольких получателей) или в телеграмм. Может работать и как внешняя обработка, и как регламентное задание. Для УНФ, УТ 11, БП 3.0, ЗУП 3.0, ERP.

10800 руб.

18.06.2017    32255    3    2    

15

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

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

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

1 стартмани

29.12.2023    1216    11    dima_gsv    1    

12

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

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

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

1 стартмани

13.11.2023    2880    4    AlexSTAL    0    

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

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

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