1c lgd как уменьшить

Обновлено: 05.07.2024

Внимание!

Введение

В этом уроке мы научимся использовать обновлятор для однократного (или регулярного по расписанию) сокращения журнала регистрации в одной или группе баз.

При этом я покажу как сохранять и архивировать сокращаемую часть журнала на отдельный диск.

Пакетные скрипты

Все операции мы будем проводить на закладке обновлятора "Скрипты":

Если вы ещё не работали с пакетными скриптами в обновляторе, советую бегло пробежаться по их возможностям: ссылка.

Оговорка

Всю следующую практическую часть мы будем делать на примере одной базы и запускать этот скрипт вручную.

Но в реальных задачах ничего не помешает нам запускать скрипт для любого количества баз (в том числе параллельно) и сохранять этот скрипт в расписание с уведомлением на почту - обо всё этом здесь.

Простейший вариант скрипта

За сокращение журнала регистрации (для любых типов баз: файловых и серверных) отвечает ключ ReduceEventLogSize в пакетном режиме конфигуратора.

В качестве параметра он принимает новую (левую) границу журнала регистрации в формате ГГГГ-ММ-ДД.

И если мы, например, хотим сократить все записи в журнале регистрации до 1 января 2018 года, то простейший вариант скрипта будет таким:

Добавляем сохранение удаляемой части в архив

Но этого мало. Мы хотим не просто сокращать журнал регистрации (который обычно занимает непростительно много места на системном диске), но ещё и сохранять сокращаемую часть на другом диске (и желательно в сжатом архиватором виде). Чтобы в случае чего к ней можно было обратиться через меню "Файл-Открыть " в конфигураторе.

Предположим, что общим местом хранения архивов журналов регистрации (для всех баз) является папка "x:\Backups\1C\EventLogs".

Этот путь уже должен существовать.

Модифицируем наш скрипт, чтобы сокращаемая часть писалась в эту папку с правильным именем:

Сжимаем сокращаемую часть архиватором

Для этого файл выгрузки сокращаемой части упакуем архиватором 7z (он идёт вместе с обновлятором), а затем удалим сам файл.

Скрипт будет таким:

Всегда сокращаем журнал на текущую дату

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

Если бы не дата, которая жёстко прописана в скрипте, что делает бессмысленным многократный запуск этого скрипта в неизменном виде.

Давайте изменим скрипт так, чтобы при его запуске всегда подставлялась текущая дата. Это позволит нам поставить скрипт в планировщик на запуск, скажем раз в месяц, и забыть о ручном сокращении журнала регистрации раз и навсегда.

Задача получить текущую дату в скрипте в формате ГГГГ-ММ-ДД не такая простая, если рассматривать универсальное решение для всех случаев жизни.

Но для случая, когда представление даты на компьютере имеет вид ДД.ММ.ГГГГ (обычно это так по умолчанию), вытащить нужные числа и поставить их в нужном порядке можно вот так:

Обратите внимание, что мы здесь просто вытаскиваем по индексу и длине нужные части из даты, которая первоначально имеет вид ДД.ММ.ГГГГ, то есть переводим строку в формате ДД.ММ.ГГГГ в формат ГГГГ-ММ-ДД.

В итоге получим вот такой скрипт:

Удаляем неиспользуемые страницы из журнала регистрации

Вы удивитесь, но несмотря на все вышеописанные процедуры, размер файла в котором журнал физически хранится в формате sqllite не уменьшится совершенно.

То есть если он был 10 гигабайт до процедуры сокращения записей, то 10 гигабайт и останется.

Всё дело в том, что, после удаления записей из журнала регистрации, физически данные с диска не удаляются, а лишь помечаются как удаленные. Это сделано для повышения производительности.

За сжатие журнала регистрации отвечает команда Vacuum, она позволяет удалить все неиспользуемые страницы и дефрагментировать данные.

Выполнение этой команды требует остановки сервера 1с (если речь о серверной базе), чтобы получить монопольный доступ к файлу журнала регистрации.

Поэтому я рекомендую сделать эту операцию (если файл журнала регистрации уже сейчас очень сильно вырос) один раз и в дальнейшем регулярно выполнять сокращение через ключ конфигуратора ReduceEventLogSize (мы его рассмотрели выше). Это позволит удерживать размер журнала регистрации примерно на одном уровне.

Подготовительные работы

Качаем и распаковываем вот этот пункт:

Там 3 утилиты, из которых нам нужна sqlite3.exe.

Альтернативное место для скачивания этой же утилиты - мой сайт (я подписал её своей электронной подписью).

Распакуем эту утилиту, например, в папку "x:\work" и соответственно будем обращаться к ней из скриптов как "x:\work\sqlite3.exe".

Vacuum для файловых баз

Для файловых баз выполним команду Vacuum через новый пакетный скрипт обновлятора, полагая что журнал регистрации хранится в папке с базой в "1Cv8Log\1Cv8.lgd".

Ещё раз напомню, что команду Vacuum имеет смысл выполнять уже после сокращения журнала регистрации при помощи описанного выше ключа конфигуратора ReduceEventLogSize.

Vacuum для серверных баз

С серверными базами всё несколько сложнее, в том смысле что полной автоматизации выполнения команды Vacuum для избранных баз простым пакетным скриптом не достичь.

Не достичь хотя бы потому, что невозможно автоматически определять путь к журналу регистрации серверной базы. Это нужно делать разбором файла настроек сервера 1с (1CV8Clst.lst), который тоже ещё надо правильно обнаружить. Все эти возможности выходят за рамки пакетного скрипта.

Но так как мы изначально планируем сделать Vacuum только после первого сокращения журнала регистрации, то полной автоматизации нам здесь и не надо.

Я опишу лишь примерный порядок действий:

1. Находим папку с настройками кластера 1с. Обычно это что-то типа: "c:\Program Files\1cv8\srvinfo\reg_1541".

Например, так (указанный внутри скрипт пишется и запускается в командном файле vacuum.cmd без обновлятора):

Перед его выполнением нужно остановить службу сервера 1с.

А что если нам требуется определить какой папке соответствует какая база? Для этого открываем файл 1CV8Clst.lst в корне reg_1541 и из него находим, что, например, папке 0deaa216-26dd-4ae0-9483-51a85b38c093 соответствует база test:

То есть мы можем выполнить vacuum как для всех баз на сервере, так и для избранных.

С уважением, Владимир Милькин (преподаватель школы 1С программистов и разработчик обновлятора).

Как помочь сайту: расскажите (кнопки поделиться ниже) о нём своим друзьям и коллегам. Сделайте это один раз и вы внесете существенный вклад в развитие сайта. На сайте нет рекламы, но чем больше людей им пользуются, тем больше сил у меня для его поддержки.

enter
16+
rss

Сокращение журнала регистрации в 1С:Предприятие версии 8.3

1С logo
Для многих тема данной статьи является «избитой», однако для меня при попытке вникнуть в суть изложенной ниже проблемы нашлось много нюансов, которые я постараюсь раскрыть для заинтересованных.

Как известно, работа с журналом регистрации в 1С:Предприятие версии 8.3 существенно отличается от того, что было в предыдущих версиях. А именно, по какой-то причине разработчики убрали возможность настройки автоматического разделения журнала по периодам, из-за чего хранящий данные записи файл может разрастаться до огромных размеров (в одной известной мне организации размер журнала регистрации достиг 150 гигабайт, из-за чего исчерпалось место на системном диске и существенно снизилась производительность работы с данной базой в кластере 1С).

В 1С:Предприятие версии 8.2 в режиме конфигуратора имелась возможность разделения файла журнала регистрации по периодам (пункт меню Администрирование -> Настройка журнала регистрации ):

Настройка журнала регистрации 1С 8.2

И при такой настройке в папке данной базы в кластере 1С мы имели список усечённых файлов регистрации, которые мы могли перемещать и хранить в другом месте:

Файлы журнала регистрации 1С 8.2

Настройка журнала регистрации 1С 8.3

В интернете находится много решений, чтобы автоматизировать этот процесс. Я остановился на способе с применением внешних обработок (изложенный в статье по ссылке, указанной в самом конце моей заметки):

Нам предлагалось воспользоваться внешними обработками:

Но, как оказалось, те внешние обработки имели существенный недостаток. При попытке загрузить, например, обработку РаботаСЖурналомРегистрации83.epf в базу 1С:Предприятие версии 8.3 появлялась следующая ошибка:

Ошибка подключения внешней обработки

При нажатии на кнопку Подробнее. :

Ошибка подключения внешней обработки

Как оказалось в той внешней обработке не была обозначена функция СведенияОВнешнейОбработке . Сам я не являюсь программистом 1С, но мне удалось добиться, чтобы эта обработка установилась и выполняла своё предназначение.

Предлагаю вам скачать исправленные внешние обработки:

Для исправления ошибок первоначальных файлов внешних обработок необходимо было в режиме конфигуратора открыть их (пункт меню Файл -> Открыть ) и в модуле объекта (пункт меню Действия -> Открыть модуль объекта ):

Функция СведенияОВнешнейОбработке

Прописать недостающую функцию СведенияОВнешнейОбработке() :

Функция СведенияОВнешнейОбработке

После сохранения данной внешней обработки, её следует подключить в необходимые базы. Делается это следующим образом. В режиме 1С:Предприятие, в меню Администрирование -> Печатные формы, отчеты и обработки (в примере используется интерфейс «Такси»):

Дополнительные отчеты и обработки

Дополнительные отчеты и обработки

Загрузка внешней обработки

Настройка внешней обработки

Настройка внешней обработки

Настройка внешней обработки

Вызов внешней обработки

И запустите установленную внешнюю обработку:

Запуск внешней обработки

В окне запущенной таким образом внешней обработки РаботаСЖурналомРегистрации83.epf вы можете увидеть весь функционал по работе с журналом регистрации:

Внешняя обработка РаботаСЖурналомРегистрации83.epf

Для примера, я скопировал и сократил журнал регистрации одной из баз в файл backup.lgd:

Копирование и сокращение журнала регистрации

Копирование и сокращение журнала регистрации

Журнал регистрации

Проверяем, что реальный файл журнала регистрации обрезан. Идём в меню Администрирование -> Поддержка и обслуживание -> Журнал регистрации и проконтролируем, что записей старше даты, по которую мы обрезали журнал регистрации, в нём не имеется:

Журнал регистрации

Выше мы рассмотрели способ ручной обработки журнала регистрации 1С:Предприятие версии 8.3. Теперь изучим алгоритм автоматического сокращения журнала регистрации из командной строки.

В предыдущей версии данной статьи мной был описан довольно туманный способ с использованием внешней обработки СократитьЖурналРегистрацииПериод.epf . Теперь приведу полностью рабочий алгоритм автоматического (по расписанию) выполнения сокращения журнала регистрации в 1с версии 8.3:

Предлагаю небольшой скрипт, написанный на PowerShell (взят отсюда):

Сохраните данный скрипт с необходимыми вам изменениями в файл с расширением .ps1 . Для того, чтобы у вас была возможность исполнять данные файлы-скрипты на сервере, проделайте от имени администратора следующее: Win+R -> powershell -> ввод . В открывшемся окне наберите команду Set-ExecutionPolicy RemoteSigned , подразумевающую, что теперь вы можете запускать локальные не подписанные скрипты PowerShell, и подтвердите своё намерение, напечатав Y .

В результате отработки данного PowerShell скрипта в папке E:\scripts\journal\ вы получите файл с обрезанными данными из файла регистрации 1С вида computer-1clog-basename-date.elf , в папке E:\scripts\log\ вы получите файл-лог 1cshrink.log с результатами работы скрипта:

Создайте теперь cmd файл и поместите туда следующие строки:

который осуществит вызов указанного скрипта (пропишите свои пути!). На основе данного cmd файла теперь можно создать задачу, которая будет выполняться в необходимое для вас время.

Как вы уже заметили, при сокращении журнала регистрации любым из описанных выше способов, высвобождающееся место не возвращается системе. Журнал регистрации хранится в файле 1Cv8.lgd и представляет собой базу данных формата sqlite. Чтобы уменьшить его размер, необходимо остановить службу агента соответствующего кластера, выполнить команду sqlite3 с ключом vacuum , а затем снова запустить службу агента кластера 1С.

Разархивируйте библиотеку необходимой вам разрядности и положите в одну папку вместе с файлом sqlite3.exe из третьего архива. У вас должно получится что-то вроде этого:

Выполните последовательность команд (создайте cmd файл):

Но основе данного cmd файла вы можете так же создать задачу и выполнять её по расписанию, или же объединить данные команды с предыдущими. Всё на ваше усмотрение.

На этом задачу по описанию процесса сокращения файла регистрации считаю завершённой.

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

журнал регистрации

Настройка

Настройка журнала регистрации производится в режиме конфигуратора. В меню «Администрирование» выберите пункт «Настройка журнала регистрации».

Настройка журнала регистрации в конфигураторе

Здесь настраиваются те события, которые будут отображаться в журнале регистрации.

список регистрируемых ошибок

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

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

Просмотр и поиск записей

Когда вы откроете сам журнал регистрации, на первый взгляд может показаться, что та очень много информации и найти ее просто нереально. На самом деле это не так.

Получите понятные самоучители по 1С бесплатно:

По умолчанию в журнал регистрации выводится по 200 записей. Отображение большого количества записей может негативно сказаться на работоспособности вашей программы или попросту она зависнет.

В форме списка журнала регистрации можно установить отбор и воспользоваться поиском. Поиск накладывается только на записи, которые уже отображаются (в данном случае последние 200 событий). Отбор же применяется ко всем записям.

количество событий к просмотру

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

поиск по дате

Отбор позволяет отобрать данные по конкретным пользователям, именам компьютеров, событиям и т. п. Так же у вас есть возможность вывести записи журнала регистрации только по конкретным метаданным, данным (указывается ссылка на нужный объект, например, конкретный документ) и прочие настройки.

В данном примере приведены настройки журнала регистрации для отбора всех событий пользователя «Admin», начиная с 20.06.2017.

настройка отборов

Где хранится файл журнала 1cv8.lgd

Файловая база

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

расположение базы данных 1С

Если перейти по данному адресу, вы найдете папку с именем «1Cv8Log». Именно тут расположены данные журнала регистрации в файле 1Cv8.lgd.

логи 1С

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

При удалении данного каталога, журнал регистрации очистится.

Клиент-серверная база

В таком режиме все так же, как и в предыдущем, только данные журнала регистрации 1С хранятся на сервере. Чаще всего его место расположения следующее:

  • C:\Program Files\1cv8\srvinfo\<место расположения информационной базы>\1Cv8Log

Оптимизация

Журнал регистрации при необходимости можно оптимизировать, особенно когда в базе происходит большое количество событий.

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

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

Начиная с версии платформы 1С 8.3.5.1068, журнал регистрации хранится в файле базы данных sqlite с расширением *.lgd, и данная настройка стала недоступна. Данный способ хранения журнала регистрации значительно производительнее, чем старый.

Как уменьшить или удалить журнал регистрации в 1С

В случае необходимости частичной, либо полной очистки записей журнала регистрации в окне настроек нажмите на кнопку «Сократить». В появившемся окне укажите дату, до которой все записи должны удалиться. Так же удаляемые записи можно сохранить в файл на всякий случай.

По существу информации по данному вопросу в сети предостаточно. Нет смысла заниматься copy-paste. Лишь укажу ссылку на достаточно содержательную статью по теме уменьшения журнала регистрации базы 1С 8.

1С 8 как уменьшить, удалить, очистить, сократить журнал регистрации, удаление записей журнала регистрации


, т.е. интересует файл, содержащий в названии "sqlite-tools-win32-x86"

Скачиваем. Распаковываем архив в удобное место. Далее остается либо в командной строке выполнить команду vacuum: sqlite3.exe "C:\<путь к файлу>\1Cv8.lgd" vacuum, если путь к файлу не содержит русских символов, либо скопировать файл sqlite3.exe в папку с файлом журнала регистрации и выполнить команду vacuum без указания пути "sqlite3.exe 1Cv8.lgd vacuum", скрин-пример первого варианта:

Если база серверная, то перезапустите сервер 1С:Предприятия (Агент сервера 1С:Предприятия в службах), но не отключайте на время выполнении команды vacuum, иначе получите ошибку: "Error: database is locked"

1C 8 ошибка Error: database is locked при сокращении файла журнала регистрации SQLite3

Если на жестком диске окажется меньше места, чем текущий размер файла журнала регистрации, то при выполнении можно получить ошибку (не сразу): "Error: disk I/O error" - то это говорит о том, что файл журнала регистрации поврежден. Можно в крайнем случае (чтобы сэкономить время, если оно ограничено) удалить журнал регистрации, для этого необходимо:

1С 8 ошибка Error: disk I/O error при сокращении журнала регистрации .lgd с помощью SQLite3

Если не будет ошибок, то в результате журнал регистрации уменьшится в объеме.

Читайте также: