COM рабочего процесса: создать копии собственного хранилища

Учебные задачи

COMSafeArray выгружается в настоящий массив. В метод передаётся реальный дескриптор хранилища полученной ИБ.

Где и как запускать

Синтаксический пример толстого клиента Windows, обращающегося к COM-интерфейсу своего отдельного учебного сервера. Эти COM-методы в справке имеют контекст «Интеграция». Здесь COM не запускался.

Подготовка

  1. Подготовьте собственный локальный учебный агент по 127.0.0.1:1540, ровно один свой кластер и один свой рабочий процесс. На компьютере примера должен быть зарегистрирован совместимый V85.COMConnector.

  2. Заполните в своей форме ИмяАгента, ПарольАгента, ИмяАдминистратораКластера и ПарольКластера. Для доступа к своей ИБ нужны ИмяАдминистратораБазы и ПарольБазы. Все пароли вводятся скрыто и не печатаются.

  3. Подключение рабочего процесса берёт действительный адрес из полученного описания процесса. Это не подключение по случайному GUID или к неизвестной машине.

  4. Используйте только собственное встроенное хранилище выделенной учебной ИБ. Пути C:\УчебныеДанные\full.bak и C:\УчебныеДанные\diff.bak относятся к компьютеру сервера, не к клиенту.

  5. Для создания подготовьте новые незанятые пути и права серверной учётной записи. Для восстановления заранее приготовьте согласованную свою полную и соответствующую ей дифференциальную копию и отдельное учебное назначение.

  6. Загрузка заменяет данные. Эти фрагменты нельзя запускать для рабочих хранилищ. Здесь никакие архивы не создавались и не загружались.

  7. В рабочем процессе должна быть одна своя учебная ИБ и одно встроенное хранилище. Нулевые и неоднозначные списки не подходят.

Менеджер = Новый COMОбъект("V85.COMConnector");
Агент = Менеджер.ConnectAgent("127.0.0.1:1540");
Агент.AuthenticateAgent(ИмяАгента, ПарольАгента);
Кластеры = Агент.GetClusters().Выгрузить();
Кластер = Кластеры[0];
Агент.Authenticate(Кластер, ИмяАдминистратораКластера, ПарольКластера);
Процессы = Агент.GetWorkingProcesses(Кластер).Выгрузить();
ОписаниеПроцесса = Процессы[0];
Адрес = ОписаниеПроцесса.HostName + ":" + Формат(ОписаниеПроцесса.MainPort, "ЧГ=0;ЧДЦ=0");
Процесс = Менеджер.ConnectWorkingProcess(Адрес);
Процесс.AuthenticateAdmin(ИмяАдминистратораКластера, ПарольКластера);
Процесс.AddAuthentication(ИмяАдминистратораБазы, ПарольБазы);
Базы = Процесс.GetInfoBases().Выгрузить();
Если Базы.Количество() <> 1 Тогда
    ВызватьИсключение "Нужна одна собственная учебная ИБ";
КонецЕсли;
База = Базы[0];
Хранилища = Процесс.GetInfoBaseBinaryDataStorages(База).Выгрузить();
Если Хранилища.Количество() <> 1 Тогда
    ВызватьИсключение "Нужно одно собственное встроенное хранилище";
КонецЕсли;
Хранилище = Хранилища[0];
Процесс.CreateBinaryDataStorageFullBackup(Хранилище, "C:\УчебныеДанные\full.bak");
Процесс.CreateBinaryDataStorageDifferentialBackup(Хранилище, "C:\УчебныеДанные\diff.bak", "C:\УчебныеДанные\full.bak");
Сообщить("Вызваны операции создания собственных копий");

Разбор по шагам

  1. Подключитесь к фактическому собственному процессу.

  2. Получите ИБ и её реальное хранилище через COMSafeArray.

  3. Создайте полную и соответствующую дифференциальную копии по новым путям.

Как проверить результат

  1. Дескриптор берётся из GetInfoBaseBinaryDataStorages, не из нового произвольного объекта.

  2. Оба пути относятся к серверу и заранее согласованы.

Ожидаемый результат

Это короткий синтаксический пример для указанного учебного стенда. Здесь он не выполнялся; сообщение после вызова не заменяет отдельную проверку фактического состояния.

На что обратить внимание

  1. Создание файлов показано только как будущий синтаксис; здесь архивы не создавались.

  2. Наличие COM-интерфейса не заменяет права доступа, состояние хранилища и права ОС на серверные пути.

Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.

Не хотите разбираться сами?

Адаптируем это решение под вашу базу. Оценка бесплатно.

Оставить задачу

1С, 1С:Предприятие — товарные знаки ООО «1С». Сайт не является официальным представительством фирмы «1С» и не аффилирован с ней.