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

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

Просмотр 1 ветки ответов
  • Автор
    Сообщения
    • #38129
      Фото аватараOdineski
      Участник

        1С:Предприятие 8.2 (8.2.19.130) нужно организовать копирование 1Cv8.1CD из запущенной программы (пункт меню) в копию программы (заменить)

      • #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 ветки ответов
      • Для ответа в этой теме необходимо авторизоваться.
      База знаний 1С