Обработка сокращения журнала регистрации. Работает в режимах пакетного запуска (конфигуратор) и в режиме предприятия. Есть возможность подключения как регламентного задания.
Добрый день. Это моя первая публикация, так что если будете сильно избивать, то может последняя. 🙂
Но безусловно буду очень рад конструктивной критике.
История: Работаю на предприятии, базы и сервера которого расположены по всей стране. Обслуживают разные администраторы и программисты.
Проблема: Журналы регистрации никем и никак не контролируются во всех существующих информационных базах. Возможности сделать сводную задачу или информационную базу, которая делала бы резервные копии ЖР по расписанию, нет.
Решение: Написана обработка, которую я и публикую. Её цель дать возможность администраторам и программистам разной квалификации удобно настроить резервное копирование Журналов регистрации.
Все сокращения выполняются типовыми механизмами платформы. (Писалось на платформе 8.3.10.2561)
Как показала практика, скорость сокращения журнала регистрации примерно 6-8Gb в час при хороших условиях. (SSD или скоростной СХД). На условиях ниже среднего ~1-2Gb в час. Цифр не привожу, это просто мнение.
Для конфигураций, имеющих подсистему «ПодключаемыеОтчетыИОбработки», доступно подключение обработки в режиме регламентного задания типовым методом.
В случае запуска в режиме регламентного задания, пользователю, от имени которого запущен сервер 1с:Предприятия, должны быть доступны все указанные пути в настройках.
В обработке доступно два режима:
1. Выполнение в режиме предприятия:

В этом режиме происходит сокращение с помощью команд
СкопироватьЖурналРегистрации( <Параметр оставлен пустым, что бы обрабатывать журнал регистрации в текущей базе> , <Путь к журналу регистрации, в который следует поместить данные>, <ОтборКопирования>);
В случае, если в Информационной базе есть типовая обработка Журнал регистрации, то будет доступен отбор сохраняемых данных с помощью её функционала. В случае отсутствия отбор устанавливается только по датам.
Причем период, установленный с помощью обработки «Журнал регистрации» будет игнорироваться, Дата начала будет очищена, дата окончания будет вычисляться в зависимости от количества оставляемых дней в исходном ЖР)
ОчиститьЖурналРегистрации(<ОтборУдаления>);
Тут отбором удаления будет являться структура без отборов. Данные просто будут удаляться по вычисленную дату.
2. Выполнение в режиме конфигуратора

Будет осуществляться пакетный запуск в режиме конфигуратора с настройками, определенными в обработке.
С помощью конструктора можно сформировать строку запуска для любой информационной базы.
———————————
На этом, собственно, всё. Если будут вопросы или пожелания, а так же критика, то с удовольствием отвечу!
Описание ошибки:
Ошибка формата файла журнала регистрации
по причине:
sqlite3_step failed: database disk image is malformed
db: \192.168.1.111FileServer<каталог>1Cv8Log1Cv8.lgd
Ошибка формата файла журнала регистрации в 1С: Предприятие 8. Может возникнуть в любой конфигурации, на любом релизе платформы.
Найденные решения:
Ошибка может возникнуть в любой момент, для любой операции в базе данных. Из-за ошибки станет не возможным открыть список журнала в режиме 1С:Предприятие. Каждая попытка будет заканчиваться одной и той же ошибкой.

В этот момент возникает два варианта развития событий. Первый заключается в том, чтобы восстановить, исправить файл журнала регистрации с помощью соответствующей программы sqlite3. Но этот процесс может оказаться не таким быстрым, как его описывают в соответствующих публикациях. Не будем пересказывать содержание методики, оставив лишь для первого варианта полезные ссылки: Ошибка формата файла журнала регистрации, database disk image is malformed в обсуждении на форуме infostart.ru или Восстановление журнала регистрации на сайте ИТС 1С. Это был первый вариант.
Второй вариант проще и быстрее, но не значит, что он лучше. У каждого из вариантов свои плюсы и минусы. Так вот у второго варианта из плюсов — это его быстрота и простота, а из минусов — данные журнала регистрации будут утрачены. Но, кто-то из специалистов допускает данные вариант в силу его быстроты, когда необходимо вернуть работоспособность базы, если ошибка возникает не только в процессе попытки доступа к журналу регистрации. Надо понимать, какие данные хранятся в журнале регистрации, чтобы оценить критичность их потери в текущей ситуации. В общем случае журнал содержит информацию о базовых действиях пользователей базы: когда пользователь запускал/завершал сеансы работы с базой, основные действия с справочниками и документами базы (создание, изменение, сохранение, проведение, пометка на удаление и т.п.). Если можно отметить, что данные журнала регистрации для отслеживания активности пользователей и оценки их действий практически не используются, то и содержимым журнала с данными до текущего момента можно пожертвовать. Тем более, что после данной операции журнал будет пополняться новыми записями в рабочем режиме, будет создана его новый файл.
Итак, чтобы удалить файл журнала регистрации, необходимо перейти к каталогу, где он содержится. Текст ошибки может подсказать местонахождение файла журнала регистрации 1Cv8.lgd.

В текущем примере демонстрируется работа по удалению файла журнала регистрации файловой базы. Переходим в проводнике к содержимому каталога.

Удаляем файл журнала регистрации 1Cv8.lgd.

Остается дать окончательное согласие на удаление файла.

Если с базой работают пользователи, то небходимо завершить их работу, т.к. даже поврежденный файл журнала регистрации 1Cv8.lgd невозможно будет удалить.

Оцените, помогло ли Вам предоставленное описание решения ошибки?


© www.azhur-c.ru 2014-2020. Все права защищены. Использование текстов и изображений с данной страницы без письменного разрешения владельца запрещено. При использовании материалов с данной страницы обязательно указание ссылки на данную страницу.
10-03-2021
Журавлев А.С.
(Сайт azhur-c.ru)
Очистка кеша сервера 1с
Одной из многочисленных причин замедления работы сервера 1с, является кеш.
На одном из серверов 1с база вела себя очень странно. Периодически подтормаживала, хотя иногда бывали периоды когда она просто летала. Обновление конфигурации и платформы в моем случае результата не дали. По совету одного опытного коллеги решил почистить кеш сервера, и к моему удивлению именно это и стало ключом к решению проблемы.
Сделать это очень просто. Нужо остановить службу сервера 1с, сделать это можно в диспетчере задач.
Srvinfo reg_1541 — очистка журнала регистрации 1С
На сервере 1С со временем увеличивается в размерах папка
reg_1541, содержащая журналы регистрации 1С. Расположена эта папка в директории С:Program Files1cv82srvinfo. И как следствие может возникнуть проблема свободного пространства на системном жестком диске. Чтобы избежать роста папки srvinfo необходимо периодически очищать журнал регистрации 1С.
Удаление неиспользуемых журналов регистрации из папки Srvinfo
В журнале регистрации фиксируется все изменения объектов баз 1С — документы, справочники, регистры и т.д.
Для каждой базы данных 1С существует своя директория хранения журнала регистрации и выглядит она таким образом:
Папка <Имя кластера сервера> по-умолчанию называется reg_1541.
После удаления базы данных с сервера 1С папка журнала регистрации не удаляется из Srvinfo. Поэтому из множества папок в
Srvinfo могут находиться и те, которые давно не используются и просто занимают место на жестком диске.
Вычислить эти папки можно открыв файл 1CV8Clst.lst, который находится так же в reg_1541.
Копируем <Идентификатор базы на сервере> из папки Srvinfo и ищем в файле 1CV8Clst.lst. Если идентификатор в файле не найден, то папку можно удалять.

В директории Srvinfo находится папка с названием вида snccntx+<Идентификатор базы на сервере>. Эта папка содержит сеансовые данные и ее лучше не удалять без необходимости т.к. много места она не занимает.
Настройка и очистка журнала регистрации 1С
Запускаем 1С в режиме конфигуратора и переходим в меню «Администрирование/Настройка журнала регистрации»

настройка журнала регистрации 1С
В настройках журнала регистрации можно выбрать какие события будут регистрироваться:
Ошибки — информация о сбоях
Предупреждения — важные уведомления, не ошибки
Информация — все изменения базы данных
Примечания — все остальные уведомления
Для очистки журнала регистрации нажимаем кнопку «Сократить»

очистка журнала регистрации 1С
Здесь можно будет увидеть диапазон дат, за который хранятся данные.
В поле «Удалить события до:» выбираем дату до который будем очищать журнал регистрации.
Удаляемые события рекомендуется записать в файл, чтобы при необходимости можно было их восстановить
Автоматизация процесса очистки журнала регистрации
Автоматизация процесса через командную строку Windows выглядит таким образом:
[ConnectionString] — строка подключения к информационной базе. Т.к. речь идёт о серверном варианте, эта строка будет иметь вид «/S[ServerName][InfoBaseName] /N[UserName] /P[UserPassword]». Пользователь должен иметь право администрирования.
[PathToOperLog] — путь к файлу, в котором будут сохранены сообщения системы при выполнении этой операции.
[ShrinkDate] — дата, по которую будет укорочен журнал регистрации в формате yyyy-mm-dd
[BackUpedLog] — путь к файлу в формате *.elf, к которым можно будет обратиться в случае необходимости проводить расследования давних операций с информационной базой.
Операцию необходимо выполнять когда нет активных подключений к базе 1С.
Образец скрипта для PowerShell
Внимание! Данные для подключения к базе 1С обезличены. Необходимо заменить на свои.
Перенос журнала регистрации на другой диск
Чтобы избежать переполнения системного диска файлами журнала регистрации 1С папку SRVINFO можно перенести на другой диск. Выполнить это можно изменив параметры запуска службы «Агент сервера 1С:Предприятия 8.3» в реестре Windows.
В редакторе реестра переходим по ветке HKEY_LOCAL_MACHINESYSTEMCurrentControlSetservices1C:Enterprise 8.2 Server Agent и в параметре ImagePath изменяем значение «Агент сервера 1С:Предприятия 8.3» «C:Program Files (x86)1cv88.3.10.2667binragent.exe» -srvc -agent -regport 1541 -port 1540 -range 1560:1591 -d «C:Program Files (x86)1cv8srvinfo».
Вместо «C:Program Files (x86)1cv8srvinfo» указываем новую директорию нахождения журнала регистрации.

редактирование запуска службы «Агент сервера 1С:Предприятия 8.3» в реестре Windows
1cv8 srvinfo reg 1541 очистка
При работе в клиент-серверном варианте со временем разрастается журнал регистрации. Сжатие его типовыми средствами результата не дают, будем удалять.
Различия данной операции на Linux и Windows минимальны, и обусловлены только различиями ОС. Ближе и роднее конечно Debian, потому основное описание и команды будут для него.
Для Windows отличается только размещения каталога кластера серверов(смотри по тексту), а остановить и запустить службу можно из соответствующего раздела в панели администирования.
Сервер с Debian x64 на борту и установленным сервером 1С:Предприятие 8.3.10.2580 x64. Со временем разросся журнал регистрации и занимает более 40 Гб, а терять такой объем на SSD не выгодно.
Решение
Первым делом необходимо остановить службу сервера 1С:Предприятие.
Для этого выполним команду /etc/init.d/srv1cv83 stop на которую получим ответ
Теперь переходим в каталог кластера, в Debian по умолчанию каталог находится в каталоге пользователя, от которого запущена служба
Для Windows по умолчанию это каталог %programfiles%1cv8srvinfo
eg_1541
Теперь проверим, что лежит в данном каталоге
Посмотрим на содержимое файла 1CV8Clst.lst, в нем хранится соответствие ИБ и вложенных каталогов. Файл имеет следующий вид (привожу только начальную часть текста с описанием первой ИБ)
В данном случае нас интересует строка 5b53ab74-e4a5-11e6-4f8a-80ee7336f1fc,trade,Управление торговлей…, где
- 5b53ab74-e4a5-11e6-4f8a-80ee7336f1fc — Название каталога в котором расположен ЖР ИБ;
- trade — Имя указываемое в строке подключения к ИБ;
- Управление торговлей — Описание ИБ указанное в консоли серверов.
А необходимо это знание, чтобы удалить безвозвратно ЖР для тестовых ИБ, а от рабочей отломить и положить на полку переместить и сжать в архив.
Теперь знаем, в каких каталогах необходимо удалить ЖР. Собственно переходим в нужный каталог, находим каталог 1Cv8Log, а в нем файл 1Cv8.lgd или 1Cv8.lgf, удаляем или переносим его
Остается запустить службу сервера обратно, файл ЖР создастся автоматически
На этом операция по удалению журнала регистрации завершена, все заняло не более 10 минут.
На сервере 1С со временем увеличивается в размерах папка
reg_1541, содержащая журналы регистрации 1С. Расположена эта папка в директории С:Program Files1cv82srvinfo. И как следствие может возникнуть проблема свободного пространства на системном жестком диске. Чтобы избежать роста папки srvinfo необходимо периодически очищать журнал регистрации 1С.
Удаление неиспользуемых журналов регистрации из папки Srvinfo
В журнале регистрации фиксируется все изменения объектов баз 1С — документы, справочники, регистры и т.д.
Для каждой базы данных 1С существует своя директория хранения журнала регистрации и выглядит она таким образом:
Папка по-умолчанию называется reg_1541.
После удаления базы данных с сервера 1С папка журнала регистрации не удаляется из Srvinfo. Поэтому из множества папок в
Srvinfo могут находиться и те, которые давно не используются и просто занимают место на жестком диске.
Вычислить эти папки можно открыв файл 1CV8Clst.lst, который находится так же в reg_1541.
Копируем из папки Srvinfo и ищем в файле 1CV8Clst.lst. Если идентификатор в файле не найден, то папку можно удалять.
1CV8Clst.lst
В директории Srvinfo находится папка с названием вида snccntx+ . Эта папка содержит сеансовые данные и ее лучше не удалять без необходимости т.к. много места она не занимает.
Настройка и очистка журнала регистрации 1С
Запускаем 1С в режиме конфигуратора и переходим в меню «Администрирование/Настройка журнала регистрации»
В настройках журнала регистрации можно выбрать какие события будут регистрироваться:
Ошибки — информация о сбоях
Предупреждения — важные уведомления, не ошибки
Информация — все изменения базы данных
Примечания — все остальные уведомления
Для очистки журнала регистрации нажимаем кнопку «Сократить»
Здесь можно будет увидеть диапазон дат, за который хранятся данные.
В поле «Удалить события до:» выбираем дату до который будем очищать журнал регистрации.
Удаляемые события рекомендуется записать в файл, чтобы при необходимости можно было их восстановить
Автоматизация процесса очистки журнала регистрации
Автоматизация процесса через командную строку Windows выглядит таким образом:
[ConnectionString] — строка подключения к информационной базе. Т.к. речь идёт о серверном варианте, эта строка будет иметь вид «/S[ServerName][InfoBaseName] /N[UserName] /P[UserPassword]». Пользователь должен иметь право администрирования.
[PathToOperLog] — путь к файлу, в котором будут сохранены сообщения системы при выполнении этой операции.
[ShrinkDate] — дата, по которую будет укорочен журнал регистрации в формате yyyy-mm-dd
[BackUpedLog] — путь к файлу в формате *.elf, к которым можно будет обратиться в случае необходимости проводить расследования давних операций с информационной базой.
Операцию необходимо выполнять когда нет активных подключений к базе 1С.
Образец скрипта для PowerShell
Внимание! Данные для подключения к базе 1С обезличены. Необходимо заменить на свои.
Перенос журнала регистрации на другой диск
Чтобы избежать переполнения системного диска файлами журнала регистрации 1С папку SRVINFO можно перенести на другой диск. Выполнить это можно изменив параметры запуска службы «Агент сервера 1С:Предприятия 8.3» в реестре Windows.
личный блог

Одной из многочисленных причин замедления работы сервера 1с, является кеш.
На одном из серверов 1с база вела себя очень странно. Периодически подтормаживала, хотя иногда бывали периоды когда она просто летала. Обновление конфигурации и платформы в моем случае результата не дали. По совету одного опытного коллеги решил почистить кеш сервера, и к моему удивлению именно это и стало ключом к решению проблемы.
Сделать это очень просто. Нужо остановить службу сервера 1с, сделать это можно в диспетчере задач.
Содержание:
1. Где хранится информация о событиях в информационной базе 1С Предприятия?
2. Очистка временных файлов и подключение команды ClearCache
3. Причины ошибки в журнале регистрации 1С 8.3 при открытии
1. Где хранится информация о событиях в информационной базе 1С Предприятия?
Информация о произошедших событиях хранится в информационной базе 1С Предприятия (ИБ). Ошибки, фоновые, регламентные задания, действия пользователей записываются в журнал регистрации 1С 8.3 (ЖР). С течением времени количество записей в журнал регистрации 1С 8.3 растет, т.к. в него записывается каждая произведенная операция (чем больше база, количество пользователей, регламентных заданий, тем быстрее будет расти журнал регистрации 1С 8.3).
Перед любыми манипуляциями с журналом регистрации обязательно нужно сохранить файл, в котором он хранится.
ЖР хранится вне информационной базы и имеет два вида: старый и новый. В случае использования нового формата *.lgd нужно удалять файл 1С полностью и потерять записи ЖР, так как все данные хранятся в одном документе. Рекомендуется использовать старый формат *.lgf – для контроля, разделения по периодам и своевременного удаления устаревших данных.
В некоторых случаях антивирусные программы влияют на ошибки при открытии журнала регистрации, поэтому их необходимо отключить.
2. Очистка временных файлов и подключение команды ClearCache
Следующим шагом будет очистка временных файлов в папке temp, и включение команды ClearCache в настройках подключения базы.
Если база файловая и расположена на локальном диске, то стоит проверить управление квотами и увеличить место для записей.
3. Причины ошибки в журнале регистрации 1С 8.3 при открытии
Если возникла ошибка в журнале регистрации при открытии (или другие ошибки, связанные с sqlite):
sqlite3_step failed: database disk image is malformed
db: C:bd1Cv8Log1Cv8.lgd
…то ее причиной могут быть повреждения данных в файле ЖР.
17:14.504002-0,EXCP,0,process=rmngr,Exception=EventLogException,Descr=’sqlite3_exec failed: database disk image is malformed
db: C:Program Files1cv8srvinforeg_154150b80b42-24a3-4f33-8508-5672acb806211Cv8Log1Cv8.lgd sql: PRAGMA journal_mode = OFF’
Для ее устранения необходимо скачать утилиту командной строки sqlite. В первую очередь нужно остановить службу «Агент сервера 1С» (предварительно попросить всех пользователей завершить работу, т.к. сеансы автоматически завершатся, и может произойти потеря данных).
Далее копируем поврежденный файл 1Cv8.lgd в отдельную папку (например, «C:Log») и распаковываем в нее скачанный архив с утилитой командной строки sqlite.
В командной строке переходим в «C:Log» и выполняем команду: sqlite3 1Cv8.lgd .dump >> backup.sql .
В текстовом редакторе открываем файл backup.sql и заменяем последнюю строку «ROLLBACK;» на «COMMIT;», переименовываем ранее скопированный файл «1Сv8.lgd» в «1Cv8-orig.lgd».
Далее выполняем команду: sqlite3 1Cv8.lgd < backup.sql.
Открываем ранее скопированный файл «1Сv8.lgd» в конфигураторе новой чистой файловой базы, проверяем целостность ЖР.
На последнем этапе заменяем оригинальный файл скопированным в исходной папке.
Специалист компании ООО «Кодерлайн»
Шашков Дмитрий Геннадьевич