1С:Парабэкапер — конфигурация для резервного копирования баз 1С




Конфигурация осуществляет резервное копирование баз данных 1С по расписанию в "dt" архив.
Запуск копирования осуществляется регламентным заданием, поэтому если использовать клиент-серверный вариант, то нет необходимости запускать отдельный сеанс 1С. Но файловый режим запуска так же поддерживается.
Парабэкапер может работать как с файловыми, так и клиент-серверными вариантами баз 1С.

Не найдя приемлимого ПО для резервирования и не найдя в себе силы вспоминать другие языки программирования, сделал небольшую конфигурацию в 1С. Может кому пригодится =)

Конфигурация осуществляет резервное копирование баз данных 1С по расписанию в «dt» архив.
Запуск копирования осуществляется регламентным заданием, поэтому если использовать клиент-серверный вариант, то нет необходимости запускать отдельный сеанс 1С. Но файловый режим запуска так же поддерживается.
Парабэкапер может работать как с файловыми, так и клиент-серверными вариантами баз 1С.

Особенности работы в разных режимах работы:

 — Клиент-серверный вариант: если в параметрах базы указано, то может закрывать все соединения с базой перед выгрузкой копии (что кстати не всегда гарантирует успешную выгрузку.. из-за разных зависших соединений с ИБ)

 — Файловый вариант: при неудаче выгрузки архива «dt» просто копирует файл базы данных «1cd» из папки с базой в указанную. Имя файла создается также согласно шаблону, только с расширением «1cd».

 

В любом режиме делает 5 попыток выгрузки базы. Все записывается в логе.

Есть возможность интерактивно создавать резервные копии каждой базы в отдельности и всех разом.

Автоматическое резрвное копирование производиться не будет для тех баз, где не поднят флаг «Активность».

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

Предложения по доработкам приветствуются, но ничего не обещаю))

В проекте:

1. Добавить оповещение по Email о результате копирования

2. Добавить возможность делать копии на FTP сервер

 

Изменения в версиях:

1.0.0.2 Убрал пробелы в строке запуска после ключей /S /F /DumpIB /Out (спасибо Tahallus)

1.0.0.3 Добавлена возможность удаления старых копий и создана форма для записей в логе (было не удобно смотреть сообщения).

16 Comments

  1. Tahallus

    Только после параметров /S /F /DumpIB /Out пробел не ставиться, иначе выгрузка не идет.

    СтрокаЗапуска1С = » DESIGNER /»+?(КлиентСервер,»S»,»F»)+»»»»+
    Местонахождение+»»» /N»»»+Результат.Имя+»»» /P»»»+Результат.Пароль+»»» /DumpIB»»»+
    ПапкаДляКопий+ИмяФайла+»»» /Out»»»+ВремФайл+»»»»;
    Reply
  2. shalex5

    (1) Tahallus, Не знаю почему, но у меня и так и так работает) но все равно спасибо, изменил.

    Reply
  3. aet

    1С не рекомендует для архивации использовать выгрузку в dt.

    http://its.1c.ru/db/metod81?db=metod81#content:2922:1

    Reply
  4. shalex5

    (3) aet, об этом можно дискутировать бесконечно) не будем и начинать. Каждый делает так как считает нужным.

    Reply
  5. Sergoninfostarru

    Что-то не заметил возможности отключать пользователей, которые «забыли» выйти на время архивации ? Это предусмотрено в конфигурации или все рассчитано на дисциплинированных бухгалтеров и операторов ?

    Reply
  6. shalex5

    (5) Sergoninfostarru, в описании это есть)

    — Клиент-серверный вариант: если в параметрах базы указано, то может закрывать все соединения с базой перед выгрузкой копии (что кстати не всегда гарантирует успешную выгрузку.. из-за разных зависших соединений с ИБ)

    — Файловый вариант: при неудаче выгрузки архива «dt» просто копирует файл базы данных «1cd» из папки с базой в указанную. Имя файла создается также согласно шаблону, только с расширением «1cd».

    на втором скриншоте есть галочка, но она работает только на клиент-серверными базами.

    Reply
  7. Sergoninfostarru

    (6) я спрашивал о корректном завершении работы пользователей в 1С, а не об остановке сервера и обрубывания соединения с базой данных. Процедура «ЗавершитьРаботу» используется при отключении ?

    Reply
  8. shalex5

    (7) Sergoninfostarru, нет. Делает только то, что описано.

    Кстати, сервер не останавливает, разрывает соединения пользователей только от той базы, бэкап которой пытается сделать.

    Reply
  9. Sergoninfostarru

    (8) В результате, у клиентов будет открыта 1С на локльной машине и сообщение об утрате связи с сервером !!!

    Reply
  10. shalex5

    (9) Sergoninfostarru, именно так. Тут уже каждый сам решает что важнее — сделать бэкап или сохранить забытые на ночь подключения пользователей.

    Reply
  11. Dethmond

    Не создают бэкапы базы, а если вручную запускать создание бэкапа, то вываливается ошибка

    Недопустимая строка с указанием класса

    Конфа развернута в к-с варианте. Все базы так же в к-с.

    Reply
  12. shalex5

    (11) Dethmond, это глюк с регистрацией comcntr.dll

    нагуглил

    Такая ошибка обычно появляется после установки новой платформы.

    Надо заново зарегистрировать dll comcntr.dll утилитой regsvr32

    Меню «Пуск->выполнить»

    regsvr32 «c:Program Files1cv828.х.хх.хххincomcntr.dll»
    Reply
  13. Tahallus

    Еще ошибка есть! (у меня по крайней мере проявляется)

    ПутьДо1С = КаталогПрограммы()+»1cv8.exe»;

    Вот если база будет серверная и сервер при этом установлен в папке

    отличной от той где установлена платформа то программы 1cv8.exe там не будет.

    Пример:

    Сервер 64-х разрядный стоит в папке «C:Program Files1cv82»

    Платформа стоит в папке «C:Program Files (x86)1cv82»

    Вызов функции КаталогПрограммы() вернет «C:Program Files1cv82»,

    а для выгрузки необходим путь «C:Program Files (x86)1cv82»

    Reply
  14. shalex5

    (13) Tahallus, спасибо, принято.

    Я думаю тогда в каждой базе добавить ещё реквизит ПутьДо1С, который автоматом заполняется из функции КаталогПрограммы(), но если нужно может быть интерактивно исправлен пользователем. Как вам такое решение?

    Reply
  15. Tahallus

    (14) Я думаю проще сделать 2 константы указывающие на пути до сервера и платформы

    причем без версии чтобы постоянно их не менять,

    и уже в коде проверять существует ли такой файл и если нет то менять пути.

    Reply
  16. quares

    Респект!

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *