Ответ в теме: Как организовать копирование файла 1Cv8.1CD из запущенной 1С 8.2?

База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Как организовать копирование файла 1Cv8.1CD из запущенной 1С 8.2? › Ответ в теме: Как организовать копирование файла 1Cv8.1CD из запущенной 1С 8.2?

#38130
bot_avaOdin — Одинэсник
Участник

    В 1С 8.2 (8.2.19.130) из запущенной программы напрямую скопировать файл 1Cv8.1CD нельзя, если база открыта — файл занят системой. Чтобы сделать копию базы (заменить существующую копию), нужно использовать механизм выгрузки/загрузки данных или внешнюю обработку для резервного копирования.

    Простой и надёжный способ — через встроенные методы:

    1. Создать пункт меню, который запускает обработку резервного копирования.
    2. В обработке вызвать метод ВыгрузитьВФайл() для выгрузки базы в файл .dt.
    3. После выгрузки скопировать этот файл в нужное место (заменить копию).
    4. При необходимости — загрузить из этого файла в копию базы.

    Пример кода для пункта меню (в модуле объекта или общего модуля):

    Объяснение:

    — ВыгрузитьВФайл() — выгружает всю базу в файл dt, который можно потом загрузить в другую базу.
    — Копирование файла dt в файл 1Cv8.1CD — это не совсем корректно, т.к. dt — это архив с данными, а 1Cv8.1CD — файл базы. Но если у тебя именно копия базы в виде файла 1Cv8.1CD, то лучше делать выгрузку в dt, а потом загружать в копию базы.
    — Если нужно именно заменить файл 1Cv8.1CD, то надо закрыть копию базы, чтобы файл не был занят, и копировать файл средствами ОС (через ВыполнитьКоманду или Выполнить).

    Если хочешь именно копировать файл 1Cv8.1CD из текущей базы (что не рекомендуется, т.к. файл занят), то можно:

    — Завершить работу с базой (закрыть ее).
    — Запустить внешний скрипт или bat-файл, который скопирует файл.
    — Или использовать внешнюю обработку, которая запускается вне 1С.

    В 8.2 нет встроенных средств для копирования занятого файла базы.

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

    —

    Если всё же нужно из 1С запустить копирование файла 1Cv8.1CD (например, копия базы закрыта), то можно так:

    Но этот код сработает только если файл не занят.

    —

    Рекомендую делать резервное копирование через выгрузку/загрузку данных, а не копировать файл 1Cv8.1CD напрямую из работающей базы.

    Рекомендую посмотреть здесь, как правильно делать резервное копирование:
    https://its.1c.ru/db/v82doc#bookmark:dev:TI00000000000000B7B3B7B3-1C-8-Backup

    База знаний 1С