В базах 1С есть журнал регистрации, куда по умолчанию записывается вся информация и ошибки системы и действия пользователей с данными. Если вы активно работаете с программой 1С, выписываете счета, вносите, изменяете данные, то все эти действия отражаются в журнале регистрации и из-за этого журнал уже после года работы может вырасти более чем на 1Гб. Конечно, на данный момент 1Гб занимаемого дискового пространства не такая уж и большая величина, если учесть, что сейчас объем жестких дисков измеряется терабайтами. Но сейчас, все чаще мы начали использовать SSD (твердотельные) диски, в которых показатель свободного пространства достаточно существенен. Если с базой работает только вы, т.е. один пользователь, то журнал регистрации можно настроить только на запись ошибок или ошибок и предупреждений. Если в базе есть несколько пользователей, то тут уже на ваше усмотрение, включать полный учет всех действий или нет. Настроить работу журнала регистрации можно через конфигуратор. Войдите в базу 1С через конфигуратор с полными правами. Далее нажмите «Администрирование» -> «Настройка журнала регистрации…».
После этого появится окно, где можно будет выбрать режим работы журнала регистрации. Если у вас новая база и вы решили сразу настроить журнал регистрации, то после выбора можете сразу нажимать «OK» и продолжить работу с 1С.
Если у вас база существует давно и вы никогда не сокращали журнал регистрации, то я рекомендую это сделать. Сокращение позволит уменьшить размер файла журнала регистрации, тем самым освободить место на жестком диске. И если вы, например, делаете резервную копию базы копированием всей папки, то это позволит уменьшить размер резервной копии. Нажмите кнопку «Сократить» и откроется новое окно.
В этом окне вы можете выбрать до какой даты сократить журнал регистрации, если вы никогда не заглядывали в журнал регистрации, то можете смело выбирать текущую дату и сокращать весь журнал. Так же есть опция, которая позволяет сохранить удаляемые данные в отдельный файл на всякий случай. Пользоваться этой опцией или нет, это на ваше усмотрение. После выбора даты и выбора файла сохранения или только выбора даты нажимаем «ОК» и программа начнет сокращение журнала. Процесс может занять не которое время и на время сокращения журнала, работать с базой не получиться. Если вы выбрали сокращение журнала регистрации с сохранением удаляемых данных в отдельный файл, то этот процесс может занять значительное время, например, файл журнала размером 12Гб, сокращается 2 часа.
Если вы выбрали сокращение журнала регистрации с сохранением удаляемых данных в отдельный файл, то этот процесс может занять значительное время, например, файл журнала размером 12Гб, сокращается 2 часа.
Учитывайте это при планировании регламентных работ с базой 1С.
Журнал регистрации в базах 1С может храниться в старом и новом формате. Если используется старый формат, то в файловой базе 1С в папке «1Cv8Log» будут содержаться файлы с расширением *.lgf и *.lgp, если формат журнала новый, то расширение файла *.lgd
Если у вас старый формат журнала, то после сокращения размер файлов уменьшится самостоятельно, а вот с новым форматом журнала придется сделать еще одну процедуру, т.к. размер файла не меняется после сокращения журнала. Все дело в том, что новый формат журнала регистрации использует формат SQLite для хранения данных и программа 1С не сокращает файл журнала «1Cv8.lgd» самостоятельно, поэтому нужно в ручную выполнить команду vacuum для файла «1Cv8.lgd». Для этого нам понадобиться программа sqlite3.exe, её можно скачать с сайта sqlite.org. На странице загрузки находите раздел «Precompiled Binaries for Windows» и в нем скачиваете файл
«sqlite-tools-win32-x86-3260000.zip«, последние цифры в имени файла могут изменяться, когда меняется версия программы sqlite3.exe.
После того как скачали архив с программой распаковывайте его, например, в папку temp, которая располагается в корне диска C: (C: emp), для удобства переименовываете папку «sqlite-tools-win32-x86-3260000» в «sqlite». После этого открываете командную строку от имени «Администратора системы». Далее командой в консоли «cd C: empsqlite» переходите в папку с файлом sqlite3.exe. Теперь вы можете выполнить команду vacuum для файла «1Cv8.lgd». Формат команды будет примерно такой «sqlite3.exe C: 1Cv8.lgd vacuum»
И вот тут как раз есть одна проблема, если в пути к файлу «1Cv8.lgd» будут русские буквы, т.е. имена папок будут содержать русские буквы, то команда не выполниться и выдаст ошибку, что не может найти файл «1Cv8.lgd». Решение этой проблемы достаточно простое, нужно файл sqlite3.exe скопировать в папку «1Cv8Log», перейти в эту папку в командной строке и выполнить команду без указания пути «sqlite3.exe 1Cv8.lgd vacuum» , т.к. файл «1Cv8.lgd» находится в том же каталоге что и программа sqlite3.exe. Один важный момент, данную операцию нужно выполнять, когда программа 1С не запущена, т.е. ни кто не работает с базой, журнал которой вы сокращаете.
Получилось достаточно много шагов и нюансов для уменьшения размера файла «1Cv8.lgd», но для своего и вашего удобства я сделал bat файл, который выполнит нужную нам команду без открывания командной строки. Вам нужно скачать архив с bat файлом и программой sqlite3.exe с моего репозитория на GitHub по этой ссылке https://github.com/ProfAdmin/archive/raw/master/sqlite_for_1C.rar. После скачивания, распаковываете файлы, копируете их в папку «1Cv8Log» и запускаете файл «vacuum_1Cv8LGD.bat».
Откроется окно консоли, выполнится команда vacuum и вам нужно будет нажать на любую клавишу для закрытия окна, после этого файл «1Cv8.lgd» будет сокращен. После вы можете удалить скопированные файлы из папки «1Cv8Log», кроме «1Cv8.lgd» или оставить для будущего сокращения.
На сервере 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С:Предприятие версии 8.3
![]() | Для многих тема данной статьи является «избитой», однако для меня при попытке вникнуть в суть изложенной ниже проблемы нашлось много нюансов, которые я постараюсь раскрыть для заинтересованных. |
Как известно, работа с журналом регистрации в 1С:Предприятие версии 8.3 существенно отличается от того, что было в предыдущих версиях. А именно, по какой-то причине разработчики убрали возможность настройки автоматического разделения журнала по периодам, из-за чего хранящий данные записи файл может разрастаться до огромных размеров (в одной известной мне организации размер журнала регистрации достиг 150 гигабайт, из-за чего исчерпалось место на системном диске и существенно снизилась производительность работы с данной базой в кластере 1С).
В 1С:Предприятие версии 8.2 в режиме конфигуратора имелась возможность разделения файла журнала регистрации по периодам (пункт меню Администрирование -> Настройка журнала регистрации ):
И при такой настройке в папке данной базы в кластере 1С мы имели список усечённых файлов регистрации, которые мы могли перемещать и хранить в другом месте:
В режиме конфигуратора 1С:Предприятия версии 8.3 мы имеем возможность только ручного сокращения журнала регистрации по определённую дату с сохранением удаляемых записей в обозначенный нами файл. Согласитесь – это не слишком удобно:
В интернете находится много решений, чтобы автоматизировать этот процесс. Я остановился на способе с применением внешних обработок (изложенный в статье по ссылке, указанной в самом конце моей заметки):
Нам предлагалось воспользоваться внешними обработками:
- РаботаСЖурналомРегистрации83.epf — позволяющей из программы 1С сокращать журнал до даты, копировать его в указанное место и восстанавливать из файла;
- СократитьЖурналРегистрацииПериод.epf — позволяющей автоматически из командной строки обрезать файл журнала регистрации до указанного периода (День / Неделя / Месяц / Год).
Но, как оказалось, те внешние обработки имели существенный недостаток. При попытке загрузить, например, обработку РаботаСЖурналомРегистрации83.epf в базу 1С:Предприятие версии 8.3 появлялась следующая ошибка:
При нажатии на кнопку Подробнее. :
Как оказалось в той внешней обработке не была обозначена функция СведенияОВнешнейОбработке . Сам я не являюсь программистом 1С, но мне удалось добиться, чтобы эта обработка установилась и выполняла своё предназначение.
Предлагаю вам скачать исправленные внешние обработки:
Для исправления ошибок первоначальных файлов внешних обработок необходимо было в режиме конфигуратора открыть их (пункт меню Файл -> Открыть ) и в модуле объекта (пункт меню Действия -> Открыть модуль объекта ):
Прописать недостающую функцию СведенияОВнешнейОбработке() :
После сохранения данной внешней обработки, её следует подключить в необходимые базы. Делается это следующим образом. В режиме 1С:Предприятие, в меню Администрирование -> Печатные формы, отчеты и обработки (в примере используется интерфейс «Такси»):
Проследите, чтобы была установлена галочка напротив Дополнительные отчеты и обработки и загрузите нашу внешнюю обработку, нажав “Дополнительные отчеты и обработки”:
В открывшемся окне нажмите “Создать” и выберите необходимую внешнюю обработку:
После её загрузки настройте пункт меню, где она будет отображаться (я выбираю пункт “Администрирование”), и определите пользователей в колонке “Быстрый доступ”, которым будет разрешено запускать данную обработку:
Я сделал возможным доступ к данной внешней обработке пользователю “администратор”:
После выполнения данных настроек нажмите “Записать и закрыть”:
Теперь, перейдите в пункт меню, который вы обозначили (в примере – “Администрирование”, подменю “Поддержка и обслуживание -> Дополнительные обработки по администрированию”):
И запустите установленную внешнюю обработку:
В окне запущенной таким образом внешней обработки РаботаСЖурналомРегистрации83.epf вы можете увидеть весь функционал по работе с журналом регистрации:
Для примера, я скопировал и сократил журнал регистрации одной из баз в файл backup.lgd:
Операция занимает некоторое время, зависящее от производительности сервера и от объёма обрабатываемой информации из файла регистрации. После завершения работы внешней обработки (внизу вы увидите соответствующее информационное сообщение):
В папке, которую вы указали в строке “Скопировать в файл” вы увидите скопированный журнал регистрации:
Проверяем, что реальный файл журнала регистрации обрезан. Идём в меню Администрирование -> Поддержка и обслуживание -> Журнал регистрации и проконтролируем, что записей старше даты, по которую мы обрезали журнал регистрации, в нём не имеется:
Выше мы рассмотрели способ ручной обработки журнала регистрации 1С:Предприятие версии 8.3. Теперь изучим алгоритм автоматического сокращения журнала регистрации из командной строки.
В предыдущей версии данной статьи мной был описан довольно туманный способ с использованием внешней обработки СократитьЖурналРегистрацииПериод.epf . Теперь приведу полностью рабочий алгоритм автоматического (по расписанию) выполнения сокращения журнала регистрации в 1с версии 8.3:
Предлагаю небольшой скрипт, написанный на PowerShell (взят отсюда):
- C:Program Files (x86)1cv88.3.7.1860in1cv8.exe — путь до необходимой вам версии 1с;
- server:port — сервер 1С и порт (если кластер работает на отличном от 1541);
- basename — имя базы данных;
- user — имя пользователя с полными правами на указанную базу;
- passwd — пароль указанного пользователя;
- E:scriptslog1cshrink.log — путь до файла лога выполняемой операции;
- N — количество дней, по которым необходимо оставить данные в журнале (неделя – 7);
- E:scriptsjournal — путь до обрезаемой и сохраняемой части файла регистрации в формате .elf;
- в переменную $1clogfilename — заносится автоматически формируемое имя файла для обрезаемой и сохраняемой части файла регистрации в формате .elf (его вид – computer-1clog-basename-date.elf);
- $1clog — путь и автоматически сформированное имя файла для обрезаемой и сохраняемой части файла регистрации в формате .elf;
- следующей командой производится непосредственно обрезание и сохранение части файла регистрации.
P.S. вы можете так же скачать данный скрипт (размер – 804 байта; формат – PS1) и, изменив его под свои нужды, использовать в своих целях.
Сохраните данный скрипт с необходимыми вам изменениями в файл с расширением .ps1 . Для того, чтобы у вас была возможность исполнять данные файлы-скрипты на сервере, проделайте от имени администратора следующее: Win+R -> powershell -> ввод . В открывшемся окне наберите команду Set-ExecutionPolicy RemoteSigned , подразумевающую, что теперь вы можете запускать локальные не подписанные скрипты PowerShell, и подтвердите своё намерение, напечатав Y .
В результате отработки данного PowerShell скрипта в папке E:scriptsjournal вы получите файл с обрезанными данными из файла регистрации 1С вида computer-1clog-basename-date.elf , в папке E:scriptslog вы получите файл-лог 1cshrink.log с результатами работы скрипта:
Создайте теперь cmd файл и поместите туда следующие строки:
который осуществит вызов указанного скрипта (пропишите свои пути!). На основе данного cmd файла теперь можно создать задачу, которая будет выполняться в необходимое для вас время.
Как вы уже заметили, при сокращении журнала регистрации любым из описанных выше способов, высвобождающееся место не возвращается системе. Журнал регистрации хранится в файле 1Cv8.lgd и представляет собой базу данных формата sqlite. Чтобы уменьшить его размер, необходимо остановить службу агента соответствующего кластера, выполнить команду sqlite3 с ключом vacuum , а затем снова запустить службу агента кластера 1С.
Sqlite3 можно скачать с официального сайта: www.sqlite.org. Вам необходим zip архивы из секции Precompiled Binaries for Windows:
- sqlite-dll-win32-x86-3170000.zip — 32-х битная библиотека, если вы планируете запускать sqlite3 на х86 windows платформе;
- sqlite-dll-win64-x64-3170000.zip — 64-х битная библиотека, если вы планируете запускать sqlite3 на х64 windows платформе;
- sqlite-tools-win32-x86-3170000.zip — непосредственно средство sqlite3 для командной строки.
Цифры 3170000 в названиях архивов будут меняться разработчиками. Эти – означают последнюю на момент написания статьи версию – 3.17.0.
Разархивируйте библиотеку необходимой вам разрядности и положите в одну папку вместе с файлом sqlite3.exe из третьего архива. У вас должно получится что-то вроде этого:
Выполните последовательность команд (создайте cmd файл):
- 1С:Предприятие 8.3 Агент Сервера — наименование службы агента необходимого кластера 1С (не забудьте про один момент, что если ваша служба, как и у меня, написана русскими буквами, файл cmd надо сохранять в кодировке OEM 866);
- ping -n 30 -w 2000 localhost > null – команда, дающая вам 30-тисекундную задержку для того, чтобы подождать полного завершения работы 1С;
- e:scriptsjournalsqlite — папка с разархивированной утилитой sqlite3.exe и библиотекой dll необходимой разрядности;
- C:Program Files1cv8srvinfo
eg_1541cdf40893-c3a4-4665-8c64-ba6f6cde503c1Cv8Log — полный путь до журнала регистрации необходимой базы 1С подлежащего уменьшению.
Но основе данного cmd файла вы можете так же создать задачу и выполнять её по расписанию, или же объединить данные команды с предыдущими. Всё на ваше усмотрение.
На этом задачу по описанию процесса сокращения файла регистрации считаю завершённой.