Обычно бэкапами занимаются не программисты, а администраторы. Как правило, они тупо копируют каталог ИБ (в файловом варианте, хотя есть и такие, которые это же самое делают и с серверными базами 1с 7.7, как это не печально...), либо прописывают задание в sql-сервере. В принципе так делать можно (если все правильно сделано), но когда базы большие (не огромные, по 100 и более Гб, а просто большие), когда их много, когда вы не очень доверяете администраторам, или их просто нет, можно сделать по-другому.
Есть пакетный режим работы, как в 1с 7.7, так и в 1с 8. Есть WSH. Ничего не мешает написать скрипт и получить копии средствами 1с. Плюсы - копии компактнее, чем sql-ные, их можно использовать и для баз в файловом варианте, для баз 1с 7.7 их еще можно и запаролить. Минусы - в базах никто не должен сидеть в этот момент.
Пример скрипта для баз 1с 8 (нужно доделать для каждого конкретного применения):
var WshShell, BackUp;
var FSO,F,SFold,SFold2,SubFolders,s;
WshShell = WScript.CreateObject("WScript.Shell");
FSO=WScript.CreateObject("Scripting.FileSystemObject");
// 1-ая база
s = <Путь к исполняемому файлу 1с 8>+" CONFIG /S"+<Путь к базе или сервер и имя базы>+" /N"+<Юзер>+" /P"+<Пароль>+" /DumpIB"+<Путь к файлу бэкапа>;
BackUp = WshShell.Run(s,1,true);
// 2-ая база
...
// N-ая база
...
// а далее нужно в конец имени файла добавить дату создания, а чтобы
// можно было хранить в ней бэкапы от разных дат - меняем расширение
SFold=<Путь к папке с бэкапами>;
d = new Date();
Month = d.getMonth();
Date = d.getDate();
Year = d.getYear();
if (Date<10) {
Date="0"+Date;
} else {
Date=""+Date;
}
if (Month<9) {
Month="0"+(Month+1);
} else {
Month=""+(Month+1);
}
textDate = "_"+Date+""+Month+""+Year;
F=FSO.GetFolder(SFold);
Files= new Enumerator(F.Files);
for (; !Files.atEnd(); Files.moveNext()) {
if (FSO.GetExtensionName(Files.item())=="dt") {
FSO.MoveFile(Files.item(),FSO.GetParentFolderName(Files.item())+"\\"+FSO.GetBaseName(Files.item())+textDate+"._"+FSO.GetExtensionName(Files.item()));
}
}
SubFolders= new Enumerator(F.SubFolders);
for (; !SubFolders.atEnd(); SubFolders.moveNext()) {
FS=FSO.GetFolder(SubFolders.item());
Files= new Enumerator(FS.Files);
for (; !Files.atEnd(); Files.moveNext()) {
if (FSO.GetExtensionName(Files.item())=="dt") {
FSO.MoveFile(Files.item(),FSO.GetParentFolderName(Files.item())+"\\"+FSO.GetBaseName(Files.item())+textDate+"._"+FSO.GetExtensionName(Files.item()));
}
}
}
Вот и все, файл прописываем в планировщике, задаем расписание и получаем то, что желали.