Зачем это надо, и что помогает решить:
- Если один ЖР пишет на несколько серверов, то при просмотре ЖР будут видны записи только текущего активного файла.
- Если ЖР большой и случайно сделали что-то не то на рабочей базе, есть вероятность, что рабочий сервер зависнет. Реализация дает возможность выгружать ЖР на тестовый сервер и запускать с тестовых баз.
- При необходимости можно добавить/изменить индексы для быстрого поиска, в отличие от типового журнала.
- В cf выложен удобный отчет на СКД. Есть возможность группировать записи и анализировать проблемные места.
Скорость переноса в базу SQL зависит от мощности сервера. Например, на рабочем сервере 150000 записей обрабатывает около 1м 30секунд. На домашнем ноутбуке 150000 записей обрабатывает около 4м.
Описание
Можно загружать в одну базу сразу несколько журналов регистрации. Для этого нужно указывать уникальное ИмяИнформационнойБазы. При запуске ищем информационную базу по имени, если ее нет, то добавляем ИмяИнформационнойБазы с ПредставлениеИнформационнойБазы и ОписаниеИнформационнойБазы, иначе просто работаем с уже существующей.
ПредставлениеИнформационнойБазы и ОписаниеИнформационнойБазы заполняется только при создании(если база с таким именем уже создана не обновляет поля), если нужно изменить то через sql.
Отслеживать несколько баз - запустить несколько exe. При ошибке можно отправлять письмо на почту.
В дополнительно есть cf с внешним источником и отчетом. Отчет сделан на подобии ЖР БСП.
При завершении чтения и запуске снова продолжается с последней записи (при соответствующих настройках).
Порядок работы
В 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 и журнале регистрации. После чего проходим все таблицы по очереди загружая новые записи. После этого пауза на указанное время перед новой итерацией.
"ВыводитьЛог": "Истина" - Если истина выводится информация по количеству итераций, загрузке таблиц.
}
Для windows. Тестировалось на платформе 8.3.21.1393.
Используются библиотеки:
- https://github.com/oscript-library/sql
- https://github.com/Tavalik/TLog
- https://github.com/Tavalik/TMail/tree/master
Утилита реализована через OneScript. Добавлен файл exe, который достаточно запустить, указав настройки.
Navakouski/Zhurnal-Registracii: Загрузка журнала регистрации 1С (lgd) в базу SQL (github.com)
Утилита и ее исходники выложены на github -Для работы с готовым exe необходимо скопировать папку "ГотоваяСборка".