COMSafeArray выгружается в настоящий массив. В метод передаётся реальный дескриптор хранилища полученной ИБ.
Где и как запускать
Синтаксический пример толстого клиента Windows, обращающегося к COM-интерфейсу своего отдельного учебного сервера. Эти COM-методы в справке имеют контекст «Интеграция». Здесь COM не запускался.
Подготовка
Подготовьте собственный локальный учебный агент по 127.0.0.1:1540, ровно один свой кластер и один свой рабочий процесс. На компьютере примера должен быть зарегистрирован совместимый V85.COMConnector.
Заполните в своей форме ИмяАгента, ПарольАгента, ИмяАдминистратораКластера и ПарольКластера. Для доступа к своей ИБ нужны ИмяАдминистратораБазы и ПарольБазы. Все пароли вводятся скрыто и не печатаются.
Подключение рабочего процесса берёт действительный адрес из полученного описания процесса. Это не подключение по случайному GUID или к неизвестной машине.
Используйте только собственное встроенное хранилище выделенной учебной ИБ. Пути C:\УчебныеДанные\full.bak и C:\УчебныеДанные\diff.bak относятся к компьютеру сервера, не к клиенту.
Для создания подготовьте новые незанятые пути и права серверной учётной записи. Для восстановления заранее приготовьте согласованную свою полную и соответствующую ей дифференциальную копию и отдельное учебное назначение.
Загрузка заменяет данные. Эти фрагменты нельзя запускать для рабочих хранилищ. Здесь никакие архивы не создавались и не загружались.
В рабочем процессе должна быть одна своя учебная ИБ и одно встроенное хранилище. Нулевые и неоднозначные списки не подходят.
Менеджер = Новый 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");
Сообщить("Вызваны операции создания собственных копий");Разбор по шагам
Подключитесь к фактическому собственному процессу.
Получите ИБ и её реальное хранилище через COMSafeArray.
Создайте полную и соответствующую дифференциальную копии по новым путям.
Как проверить результат
Дескриптор берётся из GetInfoBaseBinaryDataStorages, не из нового произвольного объекта.
Оба пути относятся к серверу и заранее согласованы.
Ожидаемый результат
Это короткий синтаксический пример для указанного учебного стенда. Здесь он не выполнялся; сообщение после вызова не заменяет отдельную проверку фактического состояния.
На что обратить внимание
Создание файлов показано только как будущий синтаксис; здесь архивы не создавались.
Наличие COM-интерфейса не заменяет права доступа, состояние хранилища и права ОС на серверные пути.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.