Как добавить произвольные файлы для архивации

  оглавление  Формируем список баз 1с из разных источников

Сокращаем журнал регистрации в базах 1с при помощи обновлятора

Введение

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

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

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

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

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

Оговорка

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

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

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

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

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

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

Текст скрипта

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

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

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

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

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

Текст скрипта

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

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

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

Текст скрипта

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

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

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

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

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

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

set current_date=%date:~6,4%-%date:~3,2%-%date:~0,2%

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

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

Текст скрипта