Slonster
Newbie | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору B0B Нужно настроить резервное копирование базы данных по графику, так же можно ежедневно вручную выгружать базу данных при помощи конфигуратора. Вот рецепт для автоматизирования (не мой, сам уже пользовался) "Наиболее простым показалось использование bat-файла: одна строчка и всё работает, НО при условии, что в базе никого нет. Наложение данного условия значительно усложнило задачу (можно, конечно, было перезапускать кластер, добавив ragent.exe -stop, ragent.exe -start в bat-файл, но это грубый способ, а хотелось корректного отключения пользователей). Задача архивирования с отключением пользователей решалась использованием vbs-файла, но при этом соответствующий скриптовый код уже не отличался простотой понимания и объемом содержания, что вызывало определенные трудности. В общем, я пришел к следующему (по-моему простому) способу автоматического бэкапа: 1. Создание "выгонялки" средствами 1С. 2. Создание bat-файла, с параметрами запуска "выгонялки", а затем архивирования базы. 3. Добавление bat-файла в планировщик событий Windows. Итак: 1. В типовых конфигурациях в общем модуле ГлобальныйМодуль есть процедура отключения пользователей ЗавершитьРаботуПользователей() (в УТ, БП, ЗУП, УПП есть точно). Вот её нам и необходимо запустить перед архивацией. Для этого в конфигураторе создаем обработку, для обработки создаем форму и в модуль формы вставляем следующий текст: Процедура ПриОткрытии() ТекущийРежим = ПолучитьБлокировкуУстановкиСоединений(); ТекущийРежим.КодРазрешения = "КодРазрешения"; ТекущийРежим.Начало = ТекущаяДата(); ТекущийРежим.Конец = ТекущаяДата() + 300; ТекущийРежим.Установлена = Истина; УстановитьБлокировкуУстановкиСоединений(ТекущийРежим); ЗавершитьРаботуПользователей(); КонецПроцедуры Здесь перед вызовом процедуры ЗавершитьРаботуПользователей() необходимо установить блокировку соединений с базой, иначе она просто не сработает. Число 300 в ТекущийРежим.Конец означает 300 секунд, получается блокировка базы будет установлена на 5 мин с момента запуска обработки - вполне достаточно, чтобы отключить всех пользователей от базы. Сохраним обработку (у меня Epf81.epf). Для 8.1 и 8.2 код идентичен, достаточно переконвертировать обработку для 8.1. 2. Запустим блокнот и вставим следующий текст: chcp 1251 @echo off "C:\Program Files\1cv81\bin\1cv8.exe" ENTERPRISE /F"D:\Base" /NПользователь /PПароль /DisableStartupMessages /Execute Epf81.epf "C:\Program Files\1cv81\bin\1cv8.exe" CONFIG /F"D:\Base" /NПользователь /PПароль /UCКодРазрешения /DisableStartupMessages /DumpIB"D:\Backup\backup_%date%.dt" Сохраним как backup81.dat Первой строчкой мы запускаем обработку Epf81.epf от имени Пользователь (подставляете своего с администраторскими правами) с соответствующим паролем. Затем после того, как все пользователи будут отключены (отключаются и те, у которых стоит запрос на выход из программы, только чуть дольше) отработает вторая строчка, которая запускает систему 1С в режиме конфигуратора под тем же пользователем и создает dt-шник в папке D:\Backup, в имя файла будет подставлена текущая дата. Путь к исполняемому фалу "C:\Program Files\1cv81\bin\1cv8.exe" заменяете, если у вас другой. Соответственно меняете путь к базе "D:\Base". Во второй строчке, для того, чтобы база нас пустила, в параметре /UC указывается код блокировки ТекущийРежим.КодРазрешения = "КодРазрешения", заданный в обработке Epf81.epf. 3. Добавляем в планировщик Windows или любой другой. (Можно посмотреть здесь http://www.ithowto.ru/376-kak-sozdat-naznachennoe-zadanie-pri-pomoshhi-planirovshhika-zadanij-windows.html) P.S. В описании, с целью простоты понимания, текст bat-файла урезан. В том, который во вложении, добавлено создание лога процесса архивирования, дата создания dt-шника указывается с точностью до секунды и пути к исполняемому файлу, базе и архиву вынесены в переменные. Лог создается в той же дирректории, где находится сам bat-файл. Данный способ тестировался только на файловых базах типовых УТ, ЗУП, БП 8.1 и 8.2, как работает на клиент-серверных не знаю." |