Skip to content

Загрузка журнала регистрации 1С (lgd) в базу SQL

Notifications You must be signed in to change notification settings

Navakouski/Zhurnal-Registracii

Repository files navigation

Выгрузка журнала регистрации lgd в базу SQL

https://infostart.ru/1c/tools/2177724/ Image alt

Для windows. Тестировалось на платформе 8.3.21.1393.

Используются библиотека: https://github.com/oscript-library/sql https://github.com/Tavalik/TLog https://github.com/Tavalik/TMail/tree/master

Выложен исходник который можно доработать и готовый exe.

Зачем это надо и что помогает решить:

  1. Если один ЖР пишет на несколько серверов то при просмотре ЖР будут видны записи только текущего активного файла.
  2. Если ЖР большой и случайно сделали что-то не то на рабочей базе, есть вероятность что рабочий сервер зависнет. Реализация дает возможность выгружать ЖР на тестовый сервер и запускать с тестовых баз
  3. При необходимости можно добавить изменить индексы для быстрого поиска в отличии от типового журнала
  4. В cf выложен удобный отчет на скд. Есть возможность группировать записи и анализировать проблемные места

Описание

Скорость переноса в базу SQL зависит от мощности сервера. Например на рабочем сервере 150000 записей обрабатывает около 1м 30секунд. На домашнем ноутбуке 150000 записей обрабатывает около 4м.

Можно загружать в одну базу сразу несколько журналов регистрации. Для этого нужно указывать уникальное ИмяИнформационнойБазы. При запуске ищем информационную базу по имени, если ее нет то добавляем ИмяИнформационнойБазы с ПредставлениеИнформационнойБазы и ОписаниеИнформационнойБазы иначе просто работаем с уже существующей. ПредставлениеИнформационнойБазы и ОписаниеИнформационнойБазы заполняется только при создании(если база с таким именем уже создана не обновляет поля), если нужно изменить то через sql.

Отслеживать несколько баз - запустить несколько exe. При ошибке можно отправлять письмо на почту.

В дополнительно есть cf с внешним источником и отчетом. Отборы в отчете сделаны на подобии ЖР БСП.

При завершении чтения и запуске снова продолжается с последней записи(при соответствующих настройках).

Для работы с готовом exe необходимо скопировать папку "ГотоваяСборка".

В sql создать новую базу данных. Скопировать скрипт из файла "SQL Server. Скрипт создания базы для хранения данных журнала регистрации.sql" и запустить его для созданной базы. Открыть файл "setting.Json" и установить настройки.

"НастройкиПочты": {
    "ОтправитьТестовоеПисьмо": "Ложь", При запуске пробуем отправить письмо, можно использовать один раз для проверки
    "ОтправлятьПисьмоПриОшибке": "Истина", Отпарвляет письмо если что-то пошло не так
    "АдресSMTP": "smtp.gmail.com",
    "ПортSMTP": 465,
    "ПользовательSMTP": "test@gmail.com",
    "ПарольSMTP": "test",
    "ИспользоватьSSL": "Истина",
    "АдресЭлектроннойПочтыПолучателя": "test@gmail.com;"
},

"НастройкиЧтенияЖурнала": {
    "ЧитатьЖурнал": "Истина", - Нужно ли читать журнал. Первый раз можно указать ОтправитьТестовоеПисьмо истина и ЧитатьЖурнал ложь для проверки работы с почтой
    "ПутьКВнешнейКомпонентеSqlLite": "sql.dll", - путь к файлу. Лежит в папке. По умолчанию менять не нужно.
     "ПутьКSqlLite": "1Cv8.lgd", - Путь к файлу журнала регистрации. Пример "C:/Program Files/1cv8/srvinfo/reg_1541/9b6f817a-404b-43f4-9fb2-41d33022db41/1Cv8Log/1Cv8.lgd"
    "СтрокаСоединенияСSQL": "server=ИмяСервера;uid=ПользовательСервера;pwd=ПарольСервера;database=ИмяБазыДанныхДляЗагрузки", - подключение к sql
   "ИмяИнформационнойБазы": "МойПервыйТест", 
     "ПредставлениеИнформационнойБазы": "Мой первый тест", 
     "ОписаниеИнформационнойБазы": "моя база для тестов",
     "ЧислоСтрокДляЗаписи": 1000, - число строк которые будет переносить за один запрос к sql. Максимум 1000. Например если за паузу между загрузкой успели создать в журнале только 500 новых записей, то загрузит 500, не дожидаясь полного пакета.
     "НачатьСПервойВSQLLite": "Ложь", - Если мы загружаем базу первый раз, то Истина. Например есть журнал который сокращался и сейчас хранятся записи с id от 500 до 10000. Мы получим минимальный айди и начнем загрузку с него. Для таблицы ЗаписиДанных.
    "ОбрабатываемаяСтрокаСобытий": 0, - Если по какой то причине у нас затерлись данные или пропустили часть строк то можно начать загрузку с конкретного айди что бы догрузить. Для таблицы ЗаписиДанных.
    "ПаузаСекунд": 60, - Пауза между обращением к базам. Мы получаем таблицы последних айди для каждой таблицы в SQL и журнале регистрации. После чего проходим все   таблицы по очереди загружая новые записи. После этого пауза на указанное время перед новой итерацией.
    "ВыводитьЛог": "Истина", - Если истина выводится информация по количеству итераций, загрузке таблиц.     
    "ПродолжатьПриОшибке": "Ложь", - Если истина не прекратит работу при ошибке. Автоматически попробует еще раз через таймаут.  
    "ПаузаСекундПриОшибке": 1800 - Пауза до повторного запуска если произошла ошибка 
}

About

Загрузка журнала регистрации 1С (lgd) в базу SQL

Topics

Resources

Stars

Watchers

Forks

Packages

No packages published