Периодическая загрузка событий из журналов регистрации в базу MS SQL Server (с исходниками)

06.06.14

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

Еще один вариант парсера файлов журнала регистрации для 8.2.
Преимущества:
1) Читает файлы напрямую, что дает высокую скорость.
2) Знает, где остановилось чтение в прошлый раз, и начинает с этого места при следующем запуске.
3) Может работать и как windows-служба, и как обычное приложение.

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

Наименование Файл Версия Размер
Приложение
.zip 314,56Kb
145
.zip 314,56Kb 145 Скачать
Исходники
.zip 1,88Mb
70
.zip 1,88Mb 70 Скачать

Приложение написано на .NET 2.0.

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

1) На сервере MS SQL создать пустую базу данных.

2) На сервере приложений 1С, из БД которого нужно грузить события, под административными правами запустить EventLogLoaderManager.exe

3) Указать строку соединения с базой.

Можно использовать шаблоны:
для windows-авторизации Data Source=MSSQL1;Server=имя сервера;Database=имя базы;Integrated Security=true;
для обычной авторизации  Data Source=MSSQL1;Server=имя сервера;Database=имя базы;Password=Пароль;User ID=Имя пользователя;

4) Указать интервал между циклами чтения событий из ЖР. Допустимо ставить несколько секунд - на производительности сервера не скажется.

5) Отметить те БД, события из которых необходимо периодически загружать в базу.

6) Нажать «Сохранить параметры», при этом в каталоге программы создается файл настроек setting.ini

7) Если нужна периодическая загрузка – нажимаем «Установить службу», ищем в списке служб «EventLog loader service» и исправляем аккаунт, от имени которого будет работать служба. Если строка соединения содержит логин и пароль, то можно ничего не менять, если нет, то службу нужно запускать от имени правильной учетной записи windows, которая имеет полные права на SQL-базу с событиями.

8) Если нужна разовая загрузка – запускаем из каталога программы EventLogLoader.exe. Следует учесть, что это приложение, как и служба, работает в бесконечном цикле (проверяет новые события, пишет их в базу, делает паузу, затем повторяет заново), поэтому прерывается она при нажатии любой кнопки мыши.

 

 

Некоторые особенности

1)      Для каждой ИБ журнал регистрации грузится в отдельном потоке. Если начнете грузить по сотне баз, то велика вероятность на начальном этапе повесить сервер. В дальнейшем, если проверять новые события достаточно часто (например, каждые 10 секунд), то служба быстро их записывает в базу без особой загрузки сервера.

2)      Если загрузку прервать, то при повторном запуске она продолжится с места остановки (позиция сохраняется в БД).

3)      Таблицы в БД создаются автоматически. Если вы удалили какая-нибудь таблицу - надо перезапустить службу.

4)      Все события по всем ИБ хранятся в одной таблице. Разделитель – колонка «Код информационной базы».

5)      Логи с ошибками хранятся в каталоге программы в папке «log».

6)      Работает только с платформой 8.2 (файлами lgf и lgp).

7)      В таблицах созданы только основные кластерные индексы по полю "Код информационной базы". Для ускорения запросов, которые вам требуются регулярно, нужно добавлять свои индексы.

8)      Несколько полей осталось нераспознанными (Field2, Field7, Field8). Если вам известно их назначение - сообщите, пожалуйста.

 

Описание таблиц

 

1) Infobases - список обрабатываемых ИБ. Код генерируется автоматически при добавлении новой базы в этот список. Эти же коды определяют принадлежность записей в определенной ИБ во всех других таблицах.

2) Params - хранит последние прочитанные файлы и позиции в них.

3) Назначение остальных таблиц понятно из их названия. Итоговая таблица  с событиями с присоединенными справочниками

SELECT     TOP (1000) Infobases.Name, Events.DateTime, Events.TransactionStatus, Events.TransactionStartTime, Events.TransactionMark,
                     
Users.Name AS [User], Computers.Name AS Computer, Applications.Name AS App, Events.Field2, EventsType.Name AS EventType,
                     
Events.EventType, Events.Comment, Metadata.Name AS Metadata, Events.DataStructure, Events.DataString,
                     
Servers.Name AS [Server], MainPorts.Name AS MainPort, SecondPorts.Name AS SecondPort, Events.Seance
FROM         Events INNER JOIN
                     
Applications ON Events.InfobaseCode = Applications.InfobaseCode AND Events.AppName = Applications.Code INNER JOIN
                     
Computers ON Events.InfobaseCode = Computers.InfobaseCode AND Events.ComputerName = Computers.Code INNER JOIN
                     
EventsType ON Events.InfobaseCode = EventsType.InfobaseCode AND Events.EventID = EventsType.Code INNER JOIN
                     
Infobases ON Events.InfobaseCode = Infobases.Code INNER JOIN
                     
Users ON Events.InfobaseCode = Users.InfobaseCode AND Events.UserName = Users.Code INNER JOIN
                     
SecondPorts ON Events.InfobaseCode = SecondPorts.InfobaseCode AND Events.SecondPortID = SecondPorts.Code INNER JOIN
                     
Servers ON Events.ServerID = Servers.Code AND Events.InfobaseCode = Servers.InfobaseCode INNER JOIN
                     
MainPorts ON Events.InfobaseCode = MainPorts.InfobaseCode AND Events.MainPortID = MainPorts.Code INNER JOIN
                     
Metadata ON Events.InfobaseCode = Metadata.InfobaseCode AND Events.MetadataID = Metadata.Code

 

Объемы получаемой информации

Хранение структурированных данных более затратное с точки зрения требуемого места на дисках.
Иными словами - объем базы данных будет существенно больше суммы объемов всех ЖР, которые были обработаны и загружены.

Реальный пример:

2 информационные базы с объемом ЖР 2132 Мб (1192+971).  Время первичного разбора в 2 потока (т.к. базы 2) - около 1,5 часов.

Общее количество событий - 19'507'484 млн.

Объем базы на MS SQL Server - 12879 Мб, т.е. примерно в 6 раз больше!

НО - если применить сжатие таблиц, как, например, описано здесь, то получим 1610 Мб, т.е. даже меньше исходных данных.
К сожалению, не все версии MS SQL Server поддерживают сжатие.

 

См. также

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    30838    14    21    

65

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

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

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

4800 руб.

03.09.2016    42215    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    32257    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    2883    4    AlexSTAL    0    

42
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. aspirator23 339 17.04.13 07:22 Сейчас в теме
Спасибо, как всегда интересная нестандартная публикация.
Работа с журналами в больших базах - это всегда хлопотное дело.
2. Антон Ширяев 527 17.04.13 08:52 Сейчас в теме
Безусловно программа полезна, но считаю совсем некорректным не ссылаться на мои публикацию - http://infostart.ru/public/182061/ - Формат файлов журнала регистрации 1С 8.1/8.2 - ELF/LOG/LGF/LGP и http://infostart.ru/public/181455/ - Анализ и редактирование файлов журнала регистрации 1С 8.1/8.2 - ELF/LOG/LGF/LGP

Возможно конечно вы их вовсе не использовали в своей работе, но как минимум в них заходили и даже скачивали файл АнализФайловЖурналаРегистрации_1_0.epf, поэтому не знать о них не могли.
3. Aleksey.Bochkov 3659 17.04.13 10:06 Сейчас в теме
(2) - программа была разработана ранее ваших публикаций, но только сейчас дошли руки оформить ее в нормальном виде. Плюс - она же бесплатная.
Вот если бы я использовал ваши разработки для коммерческой версии, тогда претензия была бы обоснована.
Прикрепленные файлы:
farukshin; fristaller; Vyacheslide; ram3; michmich; Pavel_Vladivostok; hazyaka; +7 Ответить
4. cool.vlad4 2 17.04.13 10:31 Сейчас в теме
(3) с вашими знаниями вы вполне могли использовать File.SetCreationTime ;)
Прикрепленные файлы:
5. Aleksey.Bochkov 3659 17.04.13 10:51 Сейчас в теме
(4) вот предыстория. Так убедительнее? :)
Прикрепленные файлы:
kirillkr; +1 Ответить
6. Антон Ширяев 527 17.04.13 12:51 Сейчас в теме
(3)
тогда претензия была бы обоснована

Претензии не было, было указано лишь на то, что некорректно не ссылаться на публикации которые перекликаются с вашей, т.к. до этого на Инфостарте не было публикаций где применялось прямое чтение файлов журнала регистрации.
Ну и конечно же это ваше дело, но раз уже был разобран формат файлов журнала регистрации, то могли бы и оставить свои комментарии к моим публикациям, например что в 8.2 значат справочники 11, 12 и 13, встречаются ли другие справочники, всегда ли последней колонке {0}, как корректно разбирать {"P",...
7. Valet 56 02.05.13 23:20 Сейчас в теме
(0)Приложите обработку для просмотра ЖР на SQL из 1С, тогда это будет законченное решение.
Да, многим не составит труда её саму написать, но лень/некогда/немогу(нужное подчеркнуть) и другие причины уменьшают количество потенциальных пользователей.
hazyaka; METAL; the_master; +3 Ответить
8. kiruha 388 06.06.14 09:53 Сейчас в теме
Насколько сказывается работа этой программы на производительности основной базы ?
Возможен ли вариант блокировок и т.п. ?
9. Aleksey.Bochkov 3659 06.06.14 11:39 Сейчас в теме
(8) kiruha,
Насколько сказывается работа этой программы на производительности основной базы ?

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

Нет.
10. adapter 417 06.06.14 15:23 Сейчас в теме
А что потом делать с этими данными в SQL ? как отобрать все записи об изменении приходной накладной №000345 ? или выбрать все что ввела за сегодня Маша Иванова? Сравнить с Таней Петровой? Информация имеет смысл если ее можно легко обработать.
11. Aleksey.Bochkov 3659 06.06.14 15:48 Сейчас в теме
(10) adapter,
Алгоритм тут будет очень похож на тот, который вы бы сделали для решения аналогичной задачи с журналом регистрации внутри 1С.
Идентификаторы пользователей и объектов метаданных есть. ГУИДы объектов также. Пишите правильный запрос и получите правильные данные :).
Вот тут есть хороший вариант применения - http://infostart.ru/public/182833/. Решается, казалось бы, легкая задача, но на самом деле совсем нетривиальная (т.к. в 1С до сих пор нет нормальных штатных инструментов для получения реальной длительности записи и проведения документов, точнее, длительности транзакций).

Но я бы сказал так - инструмент предназначен скорее всего для тех, кто понимает - что потом с этими данными в SQL делать :).
14. vis_tmp 32 05.02.15 11:56 Сейчас в теме
(11) Алексей, будет ли программа корректно отрабатывать в случае удаления файла журнала регистрации.
Ситуация следующая: имеем файл журнала регистрации большого объёма, начали пользоваться вашей программой.
Потом решили этот большой файл удалить, чтобы он начался заново.
Программа будет переносить записи уже из нового файла и добавлять их к уже имеющимся в SQL ?
15. Aleksey.Bochkov 3659 07.02.15 01:45 Сейчас в теме
(14) vis_tmp,
Позиция, с которой необходимо продолжать чтение в журнале регистрации, хранится в разрезе имен файлов.
Т.е. если файл будет удален то 1С создаст новый с новым именем, а чтение начнется с начала и записи будут добавляться к уже имеющимся.

Кстати, у меня уже новая версия есть.
- добавил загрузку из нового формата журнала регистрации 8.3 (SQLite)
- добавил возможность загрузки событий в MySQL базу данных.
- менеджер настроек теперь отображает файловые базы пользователя, также можно добавить путь вручную.
- исправил пару ошибок в загрузке событий.

Бинарники во вложении, публикацию обновлю позже.
Но я не тестировал на 32-разрядной системе..
Прикрепленные файлы:
1.1.2.1.zip
43. vis_tmp 32 29.01.20 05:50 Сейчас в теме
(15)Добрый день, Алексей
База была переведена с 8.2 на 8.3 (файл 1Cv8.lgd, SQLite).
Скачал и установил новую версию, настроил строку подключения к SQL и отметил нужную базу.
При попытке запуска EventLogLoader.exe фиксируется следующая ошибка:

29.01.2020 07:55:26 (INFO): Проверка таблиц в БД выполнена успешно!.
29.01.2020 07:55:27 (ERROR): Ошибка обработки файлов событий ИБ (UT83). System.Data.SqlClient.SqlException: Недопустимое имя столбца "LastEventID".
в System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection)
в System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj)
в System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj)
в System.Data.SqlClient.SqlDataReader.ConsumeMetaData()
в System.Data.SqlClient.SqlDataReader.get_MetaData()
в System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString)
в System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async)
в System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, DbAsyncResult result)
в System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method)
в System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior, String method)
в System.Data.SqlClient.SqlCommand.ExecuteReader()
в EventLogLoaderService.EventLogLoaderService.EventLogLoader.GetParamFromSQL()
в EventLogLoaderService.EventLogLoaderService.InfoBaseEventlog.Initialize()
в EventLogLoaderService.EventLogLoaderService.InfoBaseEventlog.DoWork()

Что нужно сделать чтобы заработало?
25. farukshin 120 01.09.16 12:00 Сейчас в теме
(10) adapter,
А что потом делать с этими данными в SQL ?


Как вариант - анализ и визуализация данных в ElasticSearch http://infostart.ru/public/545895/
12. chmv 27.06.14 15:12 Сейчас в теме
13. newgluk 87 24.09.14 09:54 Сейчас в теме
в MS SQL 2012: (ERROR): Ошибка получения ID ИБ из БД (mybase). System.Data.SqlClient.SqlException: Invalid object name 'dbo.Infobases'.
Или это я с правами не разобрался?
16. dimon_upi 06.04.15 08:36 Сейчас в теме
Спасибо большое. Очень полезно, давно сам хотел сделать, но уж больно много вкусностей вы положили в свою работу.
17. xinex 28.09.15 15:29 Сейчас в теме
Алексей, периодически останавливается загрузка данных ЖР в базу.
ПО EventLogLoader грузит ядро процессора на 100%, но данные в SQL не пишет.

Спасибо за данное ПО, сильно помогает в работе.

upd:

Нашел причину. EventLogLoader не может корректно обработать события, где очень большой коментарий:
{20140917161102,N,
{0,0},129,1377,4,5280,32,E,"{ОбщийМодуль.Название.Модуль(1467)}: {""#"",e199ca70-93cf-46ce-a54b-6edc88c3a296,
{#base64: здесь 323КБ символов в 9800 строках
}
}",0,
{"S","Расчет завершен."},"",1,14,2,10485,0,
{0}
}
18. milanse 38 19.11.15 16:23 Сейчас в теме
Привет.

У меня сейчас реализован сбор данных через ком, на основании местной же разработки, хотел переписывать через вебсервис, но это, походу не нужно ;)
Работает весьма и весьма шустро. не нужно парсить гигабайтные xml выгрузки журналов.
Сейчас тестирую параллельную загрузку журнала 1 базы из 3-х источников - работающая база, 2 файла журнала, которые в один прекрасный момент пришли в негодность. Пока все работает

Использую бинарник 1.1.2.1.zip т.к. журналы в формате sqlight - не заполняется колонка [MetadataID] видимо metadataCodes в базе там ид метаданных через запятую, а для связи используется таблица EventLogMetadata, не смотрел еще, но скорее всего когда в metadataCodes несколько кодов (типа события регистрации ошибок доступа) то в ней на каждую запись события несколько записей кодов метаданных.
сырцов нет, поправить особо возможности тоже, если есть возможность сделать в [MetadataID] первый по счету ИД - было бы здорово.

Со своей стороны выложу обработку для открытия событий по объекту с обращением к базе журнала. т.к. буду использовать сие в своих конфах.
19. Aleksey.Bochkov 3659 19.11.15 20:45 Сейчас в теме
20. nwomib 02.12.15 13:56 Сейчас в теме
Очень большая просьба, там же выкладывать скомпилированные варианты т.к. уже немного запарился компилировать, вечные ошибки.

Будет ли фича очистки за собой логов с настройкой глубины чистки?
21. nwomib 02.12.15 13:57 Сейчас в теме
Имеется в виду, прочёл лог 1ски , прошло 5 дней и почистил лог 1ски.
22. пользователь 13.05.16 16:04
Сообщение было скрыто модератором.
...
23. Aleksey.Bochkov 3659 10.06.16 08:26 Сейчас в теме
Попробовал собрать актуальную версию... не уверен, что все правильно сделал, т.к. давно не занимался.
Скачать можно здесь: https://github.com/alekseybochkov/EventLogLoader/releases/tag/1.0.0.2
Если будут проблемы - попробую поправить.
29. zzz_natali 61 26.07.17 16:18 Сейчас в теме
(23) Ваш запрос T-SQL не выводит данные. Формируются заголовки столбцов и всё. Данные в базе есть(ибо если ручками делать select top 1000, то выводит потроха). В чём может быть прикол? Спасибо.
30. JohnyDeath 301 26.07.17 23:07 Сейчас в теме
(29) какой формат лога? Текст?
31. zzz_natali 61 27.07.17 05:29 Сейчас в теме
(30) Формат lgf/lgp. Текст чего, запроса? - взят с публикации.
37. Noxie41 16.11.18 16:53 Сейчас в теме
(29) Проблема во внутреннем соединении в запросе по таблице дополнительного ip порта.
Исправленный запрос ниже:
SELECT TOP (1000) Infobases.Name,
       Events.DateTime,
       Events.TransactionStatus,
       Events.TransactionStartTime,
       Events.TransactionMark,
       Users.Name AS [User],
       Computers.Name AS Computer,
       Applications.Name AS App,
       Events.Field2,
       EventsType.Name AS EventType,
       Events.EventType,
       Events.Comment,
       Metadata.Name AS Metadata,
       Events.DataStructure,
       Events.DataString,
       Servers.Name AS [Server],
       MainPorts.Name AS MainPort,
       SecondPorts.Name AS SecondPort,
       Events.Seance
FROM EVENTS
INNER JOIN Applications ON Events.InfobaseCode = Applications.InfobaseCode
AND Events.AppName = Applications.Code
INNER JOIN Computers ON Events.InfobaseCode = Computers.InfobaseCode
AND Events.ComputerName = Computers.Code
INNER JOIN EventsType ON Events.InfobaseCode = EventsType.InfobaseCode
AND Events.EventID = EventsType.Code
INNER JOIN Infobases ON Events.InfobaseCode = Infobases.Code
INNER JOIN Users ON Events.InfobaseCode = Users.InfobaseCode
AND Events.UserName = Users.Code
LEFT JOIN SecondPorts ON Events.InfobaseCode = SecondPorts.InfobaseCode
AND Events.SecondPortID = SecondPorts.Code
INNER JOIN Servers ON Events.ServerID = Servers.Code
AND Events.InfobaseCode = Servers.InfobaseCode
INNER JOIN MainPorts ON Events.InfobaseCode = MainPorts.InfobaseCode
AND Events.MainPortID = MainPorts.Code
INNER JOIN Metadata ON Events.InfobaseCode = Metadata.InfobaseCode
AND Events.MetadataID = Metadata.Code
Показать
Aleksey.Bochkov; +1 Ответить
24. Oleg1978 19.07.16 12:36 Сейчас в теме
Алексей, добрый день!

Я правильно понимаю, что журнал регистрации 1С отображать на Microsoft SQL Server штатными настройками невозможно (по аналогии со всеми другими таблицами информационной базы)? А Ваша обработка как раз и формирует на SQL необходимые таблицы и загружает в нее данные из файла ? Подскажите, пожалуйста, Ваша обработка может работать с версией Предприятия 1С 8.3.7 и файлом .lgf ? Спасибо!
26. zarucheisky 07.09.16 13:53 Сейчас в теме
(24) Oleg1978, с версией Предприятия 1С 8.3.7 ЖР хранится в формате SQLite - можно поставить ODBC драйвер.
27. alyaev.a.v 08.11.16 13:00 Сейчас в теме
Хорошо бы кто поправил ошибку при загрузке, например такая запись останавливает загрузку и сервис тупо висит:
{20160418154655,N,
{0,0},63,1,4,113934,75,E,"",98,
{"S","{ОбщийМодуль.ОбщегоНазначения.Модуль(6907)}: Не удалось записать ""Документ 0001834 от 07.11.2015 13:45:11""!(ТУТ ПЕРЕВОД НА СЛЕД СТРОКУ)
Для документа договор обязательно должен быть заполнен!!!(ТУТ ПЕРЕВОД НА СЛЕД СТРОКУ)
ВызватьИсключение СокрЛП(КраткоеПредставлениеОшибки(Информация) + Символы.ПС + СокрЛП(ТекстИсключения));"},"",1,8,0,21665,0,
{2,1,1,2,1}
}

если в тексте убрать перевод строки и сделать так(удалить переводы строк в описании сообщения)то все работает :
{20160418154655,N,
{0,0},63,1,4,113934,75,E,"",98,
{"S","{ОбщийМодуль.ОбщегоНазначения.Модуль(6907)}: Не удалось записать ""Документ 0001834 от 07.11.2015 13:45:11""!Для документа договор обязательно должен быть заполнен!!! ВызватьИсключение СокрЛП(КраткоеПредставлениеОшибки(Информация) + Символы.ПС + СокрЛП(ТекстИсключения));"},"",1,8,0,21665,0,
{2,1,1,2,1}
}
Aleksey.Bochkov; +1 Ответить
28. dmpas 417 11.01.17 13:42 Сейчас в теме
32. SashkaIvanov 06.03.18 13:54 Сейчас в теме
Произошел какой-то сбой, в таблице Events выдаются записи которые не от этой базы, не к тому пользователю. Если сравнивать файловый, и то что в БД, имеется запись с датой и id но пользователь не тот, и событие не то. как будто что-то перепуталось (сервис работает сразу с 3 базами) и чать данных от одной базы, а часть от другой. Если ли возможность как-то исправить данную ошибку. И есть ли возможность например вызвать что-то чтобы удалить записи по последнему лог файлу, и запустить повторный экспорт.(Пойдет ли вариант удаления в params и зачистка всех таблиц от данного кода Infobases?)
33. SashkaIvanov 06.03.18 14:45 Сейчас в теме
Новая версия к старой базе БД не создает колонку в params LastEventID из-за этого запись не создается
34. SashkaIvanov 19.03.18 08:55 Сейчас в теме
Сейчас пытаюсь все таки понять что произошло, произошло что-то с бд. Таблица User заполнена криво, то есть коды пользователей в таблице EVENTS соответствуют кодам USER, но в таблице USER какие-то левые пользователи под этими кодами. Пробовал по ГУИДУ искать пользователей в базе,(Гуид который указан в колонке GUIS , ничего не находит.) откуда тогда они взялись. Сразу скажу в базе Гуиды не поменялись, ну даже если и поменялись, ведь загрузка должна была создать новую строку, чего не произошло. В общем на текущий момент пока что ошибка в том что таблица USER кривая, и не понятно как ее перезаполнить, ведь удалив из таблицы все, и затем запустив загрузчик, User приедут с новыми кодами, и все предыдущие логи будут утерены!
35. пользователь 21.06.18 12:36
Сообщение было скрыто модератором.
...
36. alyaev.a.v 21.06.18 13:37 Сейчас в теме
Предыдущий коммент не правильно описал исправить нет возможности, вот так правильно:

1.Если винда где стоит сервер 1с русская и файл в новом формате, в базу с логами попадает не читаемый текст.
2.Если настроено на онлайн чтение лога(база активно работает логи в старом формате, режутся по дням) периодически загрузка логов останавливается, хотя база активно пишет в файл и получается что часть данных до окончания текущего дня теряется, на след день создается новый файл лога, программа считает что старый файл прочитан полностью и начинает чтение нового файла. Выяснить удалось что номер последнего символа который сохранен в файле загрузчика указывает на конец строки, хотя в процессе чтения обычно указывает на начало строки например:



{20180515000000,C,
{2430080b7a000,2cf},101,161,3,235565,1,I,"",0,
{"U"},"",2,10,0,4885,0,
{2,1,1,2,1}
},КОГДА СЛУЧАЕТСЯ ОСТАНОВКА И ЧТЕНИЕ ПРЕКРАЩАЕТСЯ НОМЕР ПОЗИЦИИ УКАЗЫВАЕТ СЮДА
ОБЫЧНО НОМЕР ПОЗИЦИИ УКАЗЫВАЕТ СЮДА И ВСЕ РАБОТАЕТ ХОРОШО{20180515000000,C,
{2430080b7a000,2cf},101,161,3,235565,2,I,"",0,
{"U"},"",2,10,0,4885,0,
{2,1,1,2,1}
},

Если руками в файле поправить позицию, установить на начало строки то чтение возобновляется и файл дочитывается нормально.
38. dimkakopylow001 7 14.06.19 16:32 Сейчас в теме
Откуда подтягивается список баз данных ?
39. Aleksey.Bochkov 3659 15.06.19 08:05 Сейчас в теме
(38) Список баз читается из конфигурационных файлов кластера 1С (1CV8Reg.lst для 8.2, 1CV8Clst.lst для 8.3) - будут отображены все текущие рабочие базы.
40. _KUL 05.07.19 10:42 Сейчас в теме
Алексей, здравствуйте!
Подскажите пожалуйста, как вы получаете данные о именах пользователей, компьютерах и т.д., для ассоциации с id номерами в логах? Или укажите ссылочку на блоки кода на гитхабе. В таком масштабном проекте для такой маленькой задачи и на таком не особо популярном ЯП написано, тяжко вникать ... :)
41. Aleksey.Bochkov 3659 12.07.19 10:20 Сейчас в теме
(40) если ЖР в файловом формате, то справочники хранятся в отдельном файле. Парсер тут - https://github.com/alekseybochkov/EventLogLoader/blob/master/EventLogLoader­Service/EventLogProcessor.vb#L1168
В SQLite формате для каждого справочника создана отдельная таблица. Запросы тут - https://github.com/alekseybochkov/EventLogLoader/blob/master/EventLogLoader­Service/EventLogProcessor.vb#L1095
А вообще вопрос не очень понятен...
serge_focus; acanta; +2 Ответить
42. _KUL 24.07.19 04:15 Сейчас в теме
(41)
Большое Вам спасибо за ответ! Как то упустил из виду файлик 1Cv8.lgf ... Делаю распределённую систему с хранением в SQL, пока для 8.2, ваши исходники как "библия" :), но логику всё равно немного по другому сделал ...
44. alexlx 110 05.02.20 14:23 Сейчас в теме
Случайно никто на java не делал подобного?
45. D_E_S131 4 26.02.20 14:41 Сейчас в теме
К сожалению, за последние годы структура ЖР изменилась и конвертер более не работает. :(
46. triviumfan 91 31.01.22 10:08 Сейчас в теме
(45) спасибо, что отговорили, а то я уже собирался парсить через сию поделку.
47. user737574 18.07.22 10:34 Сейчас в теме
Почему не использовали ScyllaDB (распределённая отказоустойчивая колоночная СУБД с открытым исходным кодом), или CEPH (Распределенная система хранения. Позволяет организовать отказоустойчивое и масштабируемое хранилище очень большого размера) или MariaDB ( система управления реляционными базами данных. Является преемницей СУБД MySQL и практически полностью совместима с ней. Лицензируется по свободной лицензии GNU GPL) ?
48. JohnyDeath 301 18.07.22 10:37 Сейчас в теме
(47) может потому что публикация от 2013 года?
49. user737574 18.07.22 11:00 Сейчас в теме
Извиняюсь. Не посмотрел.
Оставьте свое сообщение