Backup-ы средствами 1с

09.01.09

База данных - Архивирование (backup)

Как прописать backup-ы ИБ средствами 1с

Обычно бэкапами занимаются не программисты, а администраторы. Как правило, они тупо копируют каталог ИБ (в файловом варианте, хотя есть и такие, которые это же самое делают и с серверными базами 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()));
  }
 }
}

Вот и все, файл прописываем в планировщике, задаем расписание и получаем то, что желали.

См. также

Журнал изменений с восстановлением состояния ссылочных объектов и архивацией по HTTP / COM (расширение + конфигурация, 8.3.14+, ЛЮБАЯ конфигурация)

Архивирование (backup) Журнал регистрации Поиск данных Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 1С:Управление торговлей 11 Платные (руб)

База данных «сама» меняет данные в документах/справочниках? Тогда данный журнал изменений для Вас! Практически не влияет на скорость записи объектов за счет быстрого алгоритма! Скорость работы почти в 2 раза выше типового механизма "История изменений"! Позволяет следить за изменениями и удалением в любых ссылочных объектах конфигурации, с возможностью архивации по HTTP(!) или COM, и сверткой данных. А так же, может восстановить состояние реквизитов (значения) до момента изменения или удаления объекта из базы. Есть ДЕМО-база где можно самостоятельно протестировать часть функционала! Работает на любых платформах выше 8.3.14+ и любых конфигурациях! Версия 3.1 от 24.08.2023!

19200 руб.

15.05.2017    42522    10    24    

38

BackUPv8 - система резервного копирования баз 1С

Архивирование (backup) Платформа 1С v8.3 Конфигурации 1cv8 Платные (руб)

Автоматическое создание копий файловых и серверных информационных баз 1С Предприятие 8 и размещение копий в облаке Яндекс.Диск, локальном или сетевом ресурсе.

1200 руб.

03.09.2014    14733    13    6    

18

Резервное копирование журнала транзакций, наконец-то!

Архивирование (backup) Администрирование СУБД Россия Бесплатно (free)

Постараюсь объяснить, зачем нужно резервное копирование именно журнала транзакций, а не только базы данных, и почему я словно сбросил груз, настроив его - как, покажу, естественно. Кстати, будут скрипты T-SQL (с подробными комментариями) - отличный способ сделать администрирование базы более уютным.

04.12.2023    5873    n_mezentsev    15    

25

Резервное копирование и восстановление 1С баз на PostgreSQL в Windows с помощью pgAdmin, bat-файлов и планировщика

Архивирование (backup) Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

В данной инструкции будет описано, как с помощью pgAdmin, bat-файлов и планировщика заданий Windows организовать резервное копирование, восстановление и хранение копий баз данных.

07.10.2022    19827    sapervodichka    36    

142

Архивирование базы в dt и дамп postgres

Архивирование (backup) Платформа 1С v8.3 Конфигурации 1cv8 Россия Абонемент ($m)

Захотелось клиентам выгрузку архива баз, и выгрузку в дт, готовые скрипты с сети не заработали. Может, кому-то поможет. Релиз 8.3.18.1741.

1 стартмани

25.08.2022    4718    2    Gnom-Gluck    6    

6

Утилита копирования баз данных 1С

Архивирование (backup) Платформа 1С v8.3 Абонемент ($m)

Небольшая утилита для копирования файловых баз данных 1С.

1 стартмани

02.06.2022    4236    3    Giblarium    12    

5
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. brr 182 09.01.09 21:08 Сейчас в теме
Было бы неплохо и в планировщик прописаться "средствами 1С" :)
2. coder1cv8 3468 11.01.09 09:05 Сейчас в теме
(1) Я такое делал :) Ничего сложного...
ЗЫ: Советую использовать "Конструктор параметров командной строки", первую часть скрипта он генерит автоматом, мог бы генерить и вторую (с датой создания), если бы не лень :)
3. brr 182 11.01.09 15:38 Сейчас в теме
(2) Код в студию :), я например не знаю как это делать.
4. coder1cv8 3468 11.01.09 16:19 Сейчас в теме
(3) Легко! ) Что-то типа этого:
Код
СИМ=ПолучитьCOMОбъект("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2");
Планировщик=СИМ.Get("Win32_ScheduledJob");
СтрДатаВремя="********"+Формат(ТекущаяДата(),"ДФ=ЧЧммсс")+".000000+180";
КодВозвр=Планировщик.Create(ПутьКЗадаче,СтрДатаВремя,Ложь,,,Истина);
Показать полностью
5. coder1cv8 3468 11.01.09 16:21 Сейчас в теме
(4) Как всегда движок сайта код испоганил! ( Но принцип, я думаю, ясен...
7. brr 182 11.01.09 16:32 Сейчас в теме
(5) А у класса Win32_ScheduledJob точно есть метод Create?
8. brr 182 11.01.09 16:33 Сейчас в теме
+(7) Есть, извиняюсь, в Код Креаторе не ту закладку выбрал.
9. Душелов 4014 11.01.09 16:34 Сейчас в теме
10. brr 182 11.01.09 16:44 Сейчас в теме
6. brr 182 11.01.09 16:28 Сейчас в теме
11. brr 182 11.01.09 17:27 Сейчас в теме
Гхм, мне тут старшие товарищи напомнили про команду at :)
12. Gaziz 16.01.09 06:43 Сейчас в теме
"либо прописывают задание в sql-сервере" не скажете а где в SQL его прописать "написать скрипт и получить копии средствами 1с" ?
13. vip 16.01.09 08:15 Сейчас в теме
(12) В job'ах.
Очень удобный механизм, тот же планировщик.
Оставьте свое сообщение