Точечная очистка событий из журнала регистрации по примитивному фильтру

21.08.26

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

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

Бесплатные

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Узнавайте о новых бесплатных решениях в нашей телеграм-группе Инфостарт БЕСПЛАТНО

Наименование Скачано Бесплатно
Точечная очистка событий из журнала регистрации по примитивному фильтру
.epf 9,60Kb
17 Скачать бесплатно

Вы можете заказать платную доработку или адаптацию этой разработки под вашу конфигурацию на «Бирже заказов».

  • 0% комиссии — оплата напрямую исполнителю;
  • Исполнители любого масштаба — от отдельных специалистов до команд под проект;
  • Прямой обмен контактами между заказчиком и исполнителем;
  • Безопасная сделка — при необходимости;
  • Рейтинги, кейсы и прозрачная система откликов.

По описанию формата журнала //infostart.ru/1c/articles/182061/#message3287208 создал простенький скрипт удаления части событий из журнала регистрации по примитивному текстовому фильтру, накладываемому на кадр журнала регистрации (запись).

Выкладываю код формального серверного метода ПолучитьПутьКопииФайлаЖурналаРегистрацииСЗаписямиТолькоПрошедшимиУСловие() и фильтрующего кадр метода ПолучитьСтрокуПоУсловию(). Если потребуется фильтровать по более сложному условия, например, по конкретному событию, то придется делать методы чтения файла .lgf, где они хранятся и сопоставлять. Пока этим не занимался. Если есть идеи, пишите.

Перед использованием метода необходимо убедиться (Условия использования метода**):

-в наличии свободного места на диске для сохранения копии файла журнала ПутьКФайлуЖурналаНаСервере

-в том, что ПутьКФайлуЖурналаНаСервере НЕ является текущим файлом, в который платформа пишет данные, то есть разделение журнала регистрации по периодам должно быть включено, и чем меньше период разделения, тем меньше файлы и их проще обрабатывать.

Приложил обработку. 

Обработка - интерфейс для использования описанных методов пакетно: указываем путь к каталогу файлов журнала, нажимаем "Заполнить файлы журнала из каталога". Выбираем нужные файлы (строго по (Условия использования метода**)) , жмем "Обработать выбранные файлы".

Обработка будет длительной. Длительность зависит от размера файла. Я обрабатывал файлы и по 1 ГБ размером - не проблема.

После завершения обработки, если исходный файл требуется удалить, нужно нажать "Удалить выбранные исходные(только обработанные)" - это действие необратимо.

Далее, чтобы созданные файлы могла читать платформа, переименовываем нажатием на "Переименовать новые в исходные"
 
// Считывает последовательно текст из файла ПутьКФайлуЖурнала и последовательно записывает в новый файл с суффиксом "_1" 
// Параметры:
// ПутьКФайлуЖурнала - Строка: путь к файлу журнала регистрации относительно сервера приложения
Функция ПолучитьПутьКопииФайлаЖурналаРегистрацииСЗаписямиТолькоПрошедшимиУСловие(ПутьКФайлуЖурналаНаСервере="")      
    Разделитель = "},"+символы.ПС;
    ПутьКФайлуЗаписи = СтрЗаменить(ПутьКФайлуЖурналаНаСервере,".lgp","_1.lgp"); 
    Поток = Новый ФайловыйПоток(ПутьКФайлуЗаписи, РежимОткрытияФайла.Создать);
    ЗаписьТекста = новый ЗаписьТекста(Поток,,"");    
    
    ЧтениеТекста =  Новый ЧтениеТекста(ПутьКФайлуЖурналаНаСервере,,Разделитель,,);
    СтрокаЧтенияПерваяИлиРазделитель = ЧтениеТекста.ПрочитатьСтроку();
    Если СтрокаЧтенияПерваяИлиРазделитель = Неопределено Тогда 
        ПолныйТекст = ЧтениеТекста.Прочитать();
        Если ПолныйТекст <> Неопределено Тогда 
            ЗаписьТекста.Записать(ПолныйТекст);
        КонецЕсли;
        ЗаписьТекста.Закрыть();
        Возврат ПутьКФайлуЗаписи;
    КонецЕсли;
      
    ПрошлаяСтрока = "";
    Пока Истина Цикл  //читаем по две строки за цикл, чтобы проверять не конец ли файла, если конец, не ппишем разделительв конец    
        СтрокаЧтения = ЧтениеТекста.ПрочитатьСтроку(); 
         
        Если СтрокаЧтения = Неопределено Тогда 
            ЗаписьТекста.Закрыть(); 
            ЗаписьТекста = Неопределено;
            Поток.Закрыть(); 
            Поток = Неопределено;
            Прервать;          
        КонецЕсли; 
        
        Если ЗначениеЗаполнено(СтрокаЧтенияПерваяИлиРазделитель) тогда //первый обход
            СтрокаЧтенияПерваяИлиРазделитель = СтрокаЧтенияПерваяИлиРазделитель + Разделитель;
        Иначе
            СтрокаЧтенияПерваяИлиРазделитель = Разделитель;
        КонецЕсли;  
        
        СтрокаЧтенияСледующая = ЧтениеТекста.ПрочитатьСтроку();   
                   
        Если СтрокаЧтенияСледующая = Неопределено Тогда //разделитель не добавляем, строку вторую не пишем     
            СтрокаЧтения = ПолучитьСтрокуПоУсловию(СтрокаЧтенияПерваяИлиРазделитель + СтрокаЧтения);    
        Иначе //пишем также как и первую и добавляем разделитель к первой
            СтрокаЧтения = ПолучитьСтрокуПоУсловию(СтрокаЧтенияПерваяИлиРазделитель + СтрокаЧтения) + ПолучитьСтрокуПоУсловию(Разделитель + СтрокаЧтенияСледующая);
        КонецЕсли;
        Если ЗначениеЗаполнено(СтрокаЧтения) Тогда //<<--УСЛОВИЕ
            ЗаписьТекста.ЗаписатьСтроку(СтрокаЧтения);
        КонецЕсли;            

        СтрокаЧтенияПерваяИлиРазделитель = "";//Очищается после первого цикла
        ПрошлаяСтрока = СтрокаЧтения;
    КонецЦикла;         
    
    возврат ПутьКФайлуЗаписи;
КонецФункции 

// <Описание функции>
//
// Параметры:
//  <Параметр1>  - <Тип.Вид> - <описание параметра>
//                 <продолжение описания параметра>
//  <Параметр2>  - <Тип.Вид> - <описание параметра>
//                 <продолжение описания параметра>
//
// Возвращаемое значение:
//   <Тип.Вид>   - <описание возвращаемого значения>
//
Функция ПолучитьСтрокуПоУсловию(СтрокаЧтения)
    Результат = "";
    Если СтрНайти(СтрокаЧтения,"{""U""}") = 0 Тогда //<<--УСЛОВИЕ Можно здесь определить свой текстовый фильтр на запись журнала
        Результат = СтрокаЧтения; 
    Иначе 
        
    КонецЕсли; 
    Возврат Результат;
КонецФункции // ПолучитьСтрокуПоУсловию()

 

Проверено на следующих конфигурациях и релизах:

  • 1С:Управление холдингом 3.2 (русский и английский интерфейсы), релизы 3.2.6.113

Вступайте в нашу телеграмм-группу Инфостарт

См. также

Журнал регистрации WEB-интеграция Программист 1С 8.3 1С:Библиотека стандартных подсистем Абонемент ($m)

Долго отлаживали интеграции через сообщения, журнал регистрации и чужие прокси. На проде это не взлетело. Собрали простой инструмент внутри платформы — смотришь запрос/ответ, повторяешь, выгружаешь curl.

1 стартмани

07.08.2026    640    2    Viktor_Ermakov    7    

11

Администрирование СУБД Журнал регистрации Системный администратор Программист 1С 8.3 Бесплатно (free)

Журнал регистрации на нагруженной базе перестаёт открываться: файлы растут на гигабайты в день, просмотр виснет, история недоступна. Рассказываю, как мы вынесли журнал трёх продуктивных баз в ClickHouse: 35 млрд событий, поиск всех ошибок за сутки — 0,11 секунды, привычная форма журнала для пользователей и падение числа ошибок в проде в 23 раза за полгода. Архитектура, схема таблицы, грабли интеграции и все цифры с прода.

04.08.2026    1250    nedomolkov.ivan    0    

8

Журнал регистрации Бесплатно (free)

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

28.02.2026    4975    julia96_07    0    

13

Журнал регистрации Программист Россия Бесплатно (free)

В материале рассматривается сравнение двух инструментов для работы с журналом регистрации 1С: утилиты ibcmd и платформы Vector. Описаны их функциональные возможности, тестирование производительности и практическое применение для преобразования логов в формат JSON.

20.11.2024    8704    user1913000    13    

26

Журнал регистрации Тестирование QA Программист Бесплатно (free)

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

21.10.2024    9588    leemuar    8    

25

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

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

1 стартмани

29.12.2023    5693    63    dima_gsv    6    

15

Журнал регистрации Мониторинг Системный администратор Программист Абонемент ($m)

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

1 стартмани

19.11.2023    4773    10    AlexSTAL    0    

8

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

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

1 стартмани

13.11.2023    10188    15    AlexSTAL    0    

48
Для отправки сообщения требуется регистрация/авторизация