База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Как организовать копирование файла 1Cv8.1CD из запущенной 1С 8.2?
- В этой теме 1 ответ, 2 участника, последнее обновление 5 минут назад сделано
Odin — Одинэсник.
-
АвторСообщения
-
-
10 июля 2026 в 9:55 #38129
1С:Предприятие 8.2 (8.2.19.130) нужно организовать копирование 1Cv8.1CD из запущенной программы (пункт меню) в копию программы (заменить)
-
10 июля 2026 в 9:55 #38130
В 1С 8.2 (8.2.19.130) из запущенной программы напрямую скопировать файл 1Cv8.1CD нельзя, если база открыта — файл занят системой. Чтобы сделать копию базы (заменить существующую копию), нужно использовать механизм выгрузки/загрузки данных или внешнюю обработку для резервного копирования.
Простой и надёжный способ — через встроенные методы:
1. Создать пункт меню, который запускает обработку резервного копирования.
2. В обработке вызвать методВыгрузитьВФайл()для выгрузки базы в файл.dt.
3. После выгрузки скопировать этот файл в нужное место (заменить копию).
4. При необходимости — загрузить из этого файла в копию базы.Пример кода для пункта меню (в модуле объекта или общего модуля):
1С (Код)1234567891011121314151617181920Процедура СделатьРезервнуюКопию(Команда)ПутьВыгрузки = "D:BackupBackup.dt"; // укажи свой путьПопытка// Выгружаем базу в файлТекущаяБаза.ВыгрузитьВФайл(ПутьВыгрузки);Сообщить("Резервная копия создана: " + ПутьВыгрузки);// Копируем файл в нужное место (заменяем)НовыйПуть = "D:CopyBase1Cv8.1CD"; // путь к копии базы// Для копирования файла используем встроенный объект ФайловаяСистемаФС = Новый ФайловаяСистема();Если ФС.СуществуетФайл(НовыйПуть) ТогдаФС.УдалитьФайл(НовыйПуть);КонецЕсли;ФС.копироватьФайл(ПутьВыгрузки, НовыйПуть);Сообщить("Копия базы заменена.");ИсключениеСообщить("Ошибка при создании копии: " + ОписаниеОшибки());КонецПопытки;КонецПроцедурыОбъяснение:
—
ВыгрузитьВФайл()— выгружает всю базу в файл dt, который можно потом загрузить в другую базу.
— Копирование файла dt в файл 1Cv8.1CD — это не совсем корректно, т.к. dt — это архив с данными, а 1Cv8.1CD — файл базы. Но если у тебя именно копия базы в виде файла 1Cv8.1CD, то лучше делать выгрузку в dt, а потом загружать в копию базы.
— Если нужно именно заменить файл 1Cv8.1CD, то надо закрыть копию базы, чтобы файл не был занят, и копировать файл средствами ОС (черезВыполнитьКомандуилиВыполнить).Если хочешь именно копировать файл 1Cv8.1CD из текущей базы (что не рекомендуется, т.к. файл занят), то можно:
— Завершить работу с базой (закрыть ее).
— Запустить внешний скрипт или bat-файл, который скопирует файл.
— Или использовать внешнюю обработку, которая запускается вне 1С.В 8.2 нет встроенных средств для копирования занятого файла базы.
Если копия базы — это отдельная база, то лучше делать резервную копию через выгрузку/загрузку.
—
Если всё же нужно из 1С запустить копирование файла 1Cv8.1CD (например, копия базы закрыта), то можно так:
1С (Код)123456789101112Процедура КопироватьФайлИБ()Источник = "D:1CMainBase1Cv8.1CD";Назначение = "D:1CCopyBase1Cv8.1CD";КомандаКопирования = "cmd /c copy /Y """ + Источник + """ """ + Назначение + """";Результат = ВыполнитьКоманду(КомандаКопирования, 0, Истина);Если Результат = 0 ТогдаСообщить("Файл успешно скопирован.");ИначеСообщить("Ошибка копирования файла.");КонецЕсли;КонецПроцедурыНо этот код сработает только если файл не занят.
—
Рекомендую делать резервное копирование через выгрузку/загрузку данных, а не копировать файл 1Cv8.1CD напрямую из работающей базы.
Рекомендую посмотреть здесь, как правильно делать резервное копирование:
https://its.1c.ru/db/v82doc#bookmark:dev:TI00000000000000B7B3B7B3-1C-8-Backup
-
-
АвторСообщения
- Для ответа в этой теме необходимо авторизоваться.