gifts2017

Разделение единого файла журнала регистрации 1С:8.2 на отдельные файлы по дням (v1.01)

Опубликовал Алексей Хромов (Фоур) в раздел Администрирование - Журнал регистрации

Единый (в одном файле) журнал регистрации может вырасти до нескольких гигабайт, а потом вдруг дать сбой. Допустим, решение о сохранении журнала по дням принято, но что делать с тем единым файлом, что уже успел прилично вырасти? Предлагаемая обработка "порежет" его на отдельные файлы по дням.

На форме обработки выбирается исходный (единый, большой) файл и каталог, куда сохранять отдельные файлы по дням. После "нарезки" исходный файл можно удалить. Подходит и для файловых и для клиент-серверных баз данных. Напомню, что в файловом варианте журнал регистрации хранится в подкаталоге базы данных, а в клиент-серверном - в каталоге программы, куда установлен сервер 1С (путь примерно такой: C:\Program Files\1cv82\srvinfo\reg_1541\бла-бла-бла\1Cv8Log\)

 

UPD: v1.01

Исправлено: При определении границ записи по символам "{" и "}" теперь игнорируются эти символы внутри строковых значений (комментарии, примечания, и т.п.)

 

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

Наименование Файл Версия Размер Кол. Скачив.
РазделениеЖурналаРегистрации.epf
.epf 7,39Kb
26.07.13
32
.epf 7,39Kb 32 Скачать

См. также

Подписаться Добавить вознаграждение

Комментарии

1. Антон Ширяев (Антон Ширяев) 26.07.13 12:25
Расскажите алгоритм пожалуйста.
Моя обработка (Анализ и редактирование файлов журнала регистрации 1С 8.1/8.2 - ELF/LOG/LGF/LGP) тоже такое умеет, но в более расширенном варианте - год, месяц, неделя, день, час. Причем как разделять, так и объединять.
Было замечено что после разделения завершенные транзакции проходящие через границу разделения помечались как незавершенные. В вашем алгоритме это как-то учитывается?
2. Алексей Хромов (Фоур) 26.07.13 12:38
Алгоритм простой:

1. Берем из файла заголовок (3 строки)
2. Открываем ЧтениеТекста и ЗаписьТекста. Читаем и пишем записи по одной. Записью считается блок, в котором количество "{" равно количеству "}"
3. Если видим, что изменилась дата (без учета времени), закрываем текущий файл и открываем новый, с названием равным дате, пишем в него заголовок, затем записи до следующей даты

Проблема с незавершенными транзакциями не обходится. Если подскажете, как выявить "границу разделения", доработаю алгоритм таким образом, чтобы в ранее закрытые файлы добавлялась эта самая граница.
help1Ckr; +1 Ответить
3. Антон Ширяев (Антон Ширяев) 26.07.13 12:54
По сути это сверхсильное упрощение моей обработки под конкретную узкую задачу.
Все ошибки получается переехали, а именно
1) Внутри кавычек можно размещать непарные {} и 1С это проглотит, а обработки - нет
2) Граница транзакции при переходе через день будет установлена неправильно. Как показала практика 1С это проглатывает, но помечает транзакцию незавершенной. Как делать правильно у меня руки еще не дошли. Скорее всего просто начатую транзакцию надо оставлять в предыдущем дне.

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

Стоит добавить, что здесь не любят когда при наличии универсальной обработки покрывающей потребности пишется узкоспециализированная...
4. Алексей Хромов (Фоур) 26.07.13 13:05
Возможно, я не внимательно исследовал функционал Вашей обработки, но, насколько я понял, для того, чтобы ЗАПИСАТЬ файл с разделением по дням, Вашей обработке требуется сначала его ПРОЧИТАТЬ. А это абсолютно не реально для файла, размером в 12 ГБ, ради которого, собственно, была написана моя обработка.

Специализация моей обработки: потоковое онлайн разделение журнала без предварительного чтения и анализа, именно для очень больших файлов журнала.
5. Алексей Хромов (Фоур) 26.07.13 14:02
(3) Антон Ширяев,
>1) Внутри кавычек можно размещать непарные {} и 1С это проглотит, а обработки - нет
Спасибо за подсказку. Исправлено.
6. Саша Безымяный (help1Ckr) 31.07.13 12:50
Спасибо, вот берусь за журнал регистрации. Спасибо за подсказку алгоритма
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа