Возникла необходимость редактировать программно уже созданную базу на сервере 1С.

По аналогии из публикации https://infostart.ru/public/146898/ получаю нужную базу на кластере и пытаюсь произвести редактирование описания и признака отключения рег. заданий:

```1c
    &НаСервере
    Процедура СоздатьБазуВРеестреНаСервереТест1(текБаза1С = Неопределено)

    ИмяРабочейБазы = "test_Vin";
    СтрокаСоединения = "test_Vin";

    ИмяСервера = "MOW03-PT1C04T"; // адрес 1С сервер
    АдминКластера = ";
    ПарольАдминаКластера = ";
    //Админ1С = "COMConnect"; // пользователь с полными правами
    //ПарольАдмина1С = "; // пароль админа 1С

    Соединение = Новый COMОбъект("V82.COMConnector"); // Соединились с 1С
    Попытка
    СоединениеАгент = Соединение.ConnectAgent(ИмяСервера); // Соединились с 1С Агентом
    Кластеры = СоединениеАгент.GetClusters(); // Получитли массив кластеров (COMSafeArray)
    Исключение
    #Если НаКлиенте тогда
    Сообщить("Ошибка соединения с COM сервером: " + ОписаниеОшибки());
    #КонецЕсли
    Возврат;
    КонецПопытки;

    КоличествоКластеров = Кластеры.GetLength(0);
    Если КоличествоКластеров < 1 тогда
    #Если НаКлиенте тогда
    Сообщить("Не найден кластер на сервере " + ИмяСервера);
    #КонецЕсли
    Возврат;
    КонецЕсли;

    РабочийКластер = Кластеры.GetValue(0);
    Попытка
    // Авторизируемся на кластере (Кластер,Имя,Пароль)
    СоединениеАгент.Authenticate(РабочийКластер, АдминКластера, ПарольАдминаКластера);
    Исключение
    #Если НаКлиенте тогда
    Сообщить("Ошибка авторизации: " + ОписаниеОшибки());
    #КонецЕсли
    Возврат;
    КонецПопытки;

    // Подключаемся к рабочему процессу
    РабочийПроцесс = СоединениеАгент.GetWorkingProcesses(РабочийКластер).GetValue(0);
    Порт = СтрЗаменить(Строка(РабочийПроцесс.MainPort),Символы.НПП,"); // убиваем непереносимые пробелы
    СтрокаПодлючения = РабочийПроцесс.HostName + ":" + Порт;
    СоединениеСРабочимПроцессом = Соединение.ConnectWorkingProcess(СтрокаПодлючения);
    //СоединениеСРабочимПроцессом.AddAuthentication(Админ1С,ПарольАдмина1С);

    // Ищем текущую базу данных
    МассивБаз = СоединениеСРабочимПроцессом.GetInfoBases();
    БазаНайдена = Ложь;
    Для каждого РабочаяБаза из МассивБаз цикл
    ИскомаяБаза = РабочаяБаза.Name;
    БазаНайдена = Найти(СтрокаСоединения,ИскомаяБаза) > 0;
    Если БазаНайдена тогда
    Прервать;
    КонецЕсли;
    КонецЦикла;

    Если Не БазаНайдена тогда
    #Если НаКлиенте тогда
    Сообщить("База (" + СтрокаСоединения + ") не найдена на сервере " + ИмяСервера);
    #КонецЕсли
    Возврат;
    КонецЕсли;

    РабочаяБаза.Descr = "Тест описание";
    РабочаяБаза.ScheduledJobsDenied = Истина; // Блокируем выполнения регламентных заданий
    СоединениеСРабочимПроцессом.UpdateInfoBase(РабочаяБаза);

    КонецПроцедуры
```

База на сервере SQL создавалась пустой и без пользователей.

Ругается так:
{ВнешняяОбработка.НазначениеПравВКопияхБаз.Форма.Форма.Форма(1448)}: Ошибка при вызове метода контекста (UpdateInfoBase)
СоединениеСРабочимПроцессом.UpdateInfoBase(РабочаяБаза);
по причине:
Произошла исключительная ситуация: Информационная база не зарегистрирована

Как такое может быть? если я создавал пустую базу и на SQL сервере и на сервере 1С? Может как то по другому возможно редактировать базу в сервере 1с?
---
я привел типовой код из УТ11. Следовательно он рабочий.
Сама база запускается?
---
Через RAC/RAS. Процесс можно немного упростить использованием Deployka. Правда, деплойка использует не весь функционал RAS. Ну и еще для ее работы OScript необходим.
---
У кого-нибудь отрабатывает данный код?
---
как то так:

```1c
    Процедура РедактированиеИБ()
    COMСоединитель = "v82.COMConnector";
    СтрокаСоединенияСАгентомСервера = "tcp://" + АдресАгентаСервера + ":" + Формат(ПортАгентаСервера, "ЧГ=0");
    СоединениеСАгентомСервера = COMСоединитель.ConnectAgent(СтрокаСоединенияСАгентомСервера);
    Кластер = ПолучитьКластер(
    СоединениеСАгентомСервера,
    ПараметрыАдминистрированияКластера.ПортКластера,
    ПараметрыАдминистрированияКластера.ИмяАдминистратораКластера,
    ПараметрыАдминистрированияКластера.ПарольАдминистратораКластера);

    СоединениеСРабочимПроцессом = СоединениеСРабочимПроцессом(COMСоединитель, СоединениеСАгентомСервера, Кластер);

    ИнформационнаяБаза = ПолучитьИБ(
    СоединениеСРабочимПроцессом,
    Кластер,
    ПараметрыАдминистрированияИБ.ИмяВКластере,
    ПараметрыАдминистрированияИБ.ИмяАдминистратораИнформационнойБазы,
    ПараметрыАдминистрированияИБ.ПарольАдминистратораИнформационнойБазы);

    ИнформационнаяБаза.Descr = "Тест описание";
    ИнформационнаяБаза.ScheduledJobsDenied = Истина;

    СоединениеСРабочимПроцессом.UpdateInfoBase(ИнформационнаяБаза);

    ИнформационнаяБаза = Неопределено;
    СоединениеСРабочимПроцессом = Неопределено;
    Кластер = Неопределено;
    СоединениеСАгентомСервера = Неопределено;
    COMСоединитель = Неопределено
    КонецПроцедуры

    Функция ПолучитьКластер(СоединениеСАгентомСервера, Знач ПортКластера, Знач ИмяАдминистратораКластера, Знач ПарольАдминистратораКластера)
    Для Каждого Кластер Из СоединениеСАгентомСервера.GetClusters() Цикл
    Если Кластер.MainPort = ПортКластера Тогда
    СоединениеСАгентомСервера.Authenticate(Кластер, ИмяАдминистратораКластера, ПарольАдминистратораКластера);
    Возврат Кластер;
    КонецЕсли;
    КонецЦикла;
    ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'На рабочем сервере %1 не найден кластер %2'"),
    СоединениеСАгентомСервера.ConnectionString,
    ПортКластера);
    КонецФункции

    Функция СоединениеСРабочимПроцессом(COMСоединитель, СоединениеСАгентомСервера, Кластер)
    Для Каждого РабочийПроцесс Из СоединениеСАгентомСервера.GetWorkingProcesses(Кластер) Цикл
    Если РабочийПроцесс.Running И РабочийПроцесс.IsEnable Тогда
    СтрокаСоединенияСРабочимПроцессом = РабочийПроцесс.HostName + ":" + Формат(РабочийПроцесс.MainPort, "ЧГ=");
    Возврат COMСоединитель.ConnectWorkingProcess(СтрокаСоединенияСРабочимПроцессом);
    КонецЕсли;
    КонецЦикла;

    ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'В кластере серверов %1:%2 не найдено активных рабочих процессов.'"),
    Кластер.HostName,
    Формат(Кластер.MainPort, "ЧГ=0"));

    КонецФункции

    Функция ПолучитьИБ(СоединениеСРабочимПроцессом, Кластер, Знач ИмяВКластере, Знач ИмяАдминистратораИБ, Знач ПарольАдминистратораИБ)
    СоединениеСРабочимПроцессом.AddAuthentication(ИмяАдминистратораИБ, ПарольАдминистратораИБ);
    Для Каждого ИнформационнаяБаза Из СоединениеСРабочимПроцессом.GetInfoBases() Цикл
    Если ИнформационнаяБаза.Name = ИмяВКластере Тогда
    Если Не ЗначениеЗаполнено(ИнформационнаяБаза.DBMS) Тогда
    ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Неправильные имя и пароль администратора информационной базы %1 в кластере серверов %2:%3 (имя: "%4").'"),
    ИмяВКластере,
    Кластер.HostName,
    Кластер.MainPort,
    ИмяАдминистратораИБ);
    КонецЕсли;
    Возврат ИнформационнаяБаза;
    КонецЕсли;
    КонецЦикла;
    ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'В кластере серверов %1:%2 не найдена информационная база "%3"!'"),
    Кластер.HostName,
    Формат(Кластер.MainPort, "ЧГ=0"),
    ИмяВКластере);
    КонецФункции
```
---
Попробовал Вашу процедуру)

У вас почему то вместо com объекта строка: COMСоединитель = "v82.COMConnector". Я поправил на Новый COMОбъект("V82.COMConnector").

Все равно ошибка, что база на обнаружена. Какой то бедовый случай((. База создается, но никак не удается ее редактировать.

Я уже все перепробовал - и с аутентификацией пользователя и без. Даже создаю новую базу. Потом новосозданную редактирую. Ошибка. Может в com- компоненте какая проблема??

А у Вас база с пользователями? В кластере как аутентификация проходит - есть администраторы в одноименной ветке?

У Вас код работает? Удается редактировать базу?
---
V82.COMConnector
Судя по скрину интерфейс такси. Может тогда V83.COMConnector используется?
---
Нет, использование V83 или V82 определяется версией самого сервера 1С, где модифицируется база.

Я пробовал и с версией V83. Также не видит что база зарегистрирована. А у Вас база редактируется?
---
я привел типовой код из УТ11. Следовательно он рабочий.
Сама база запускается?
---
База запускается. Начал копаться в УТ 11 - там этот код вызывается из обработки "Настройка разрешений на использование внешних ресурсов". Она не предназначена для непосредственного использования.

Откуда можно вызвать данную обработку а следовательно и метод который редактирует базу?
---
проще проверить Блокировку регламентных заданий. Там аналогичное выполнение.
Начинается в Администрирование - Поддержка и обслуживание - Блокировка работы пользователей.
---
посмотрел работу типового функционала. Кажется нашел причину ошибки. Дело все было в свойстве базы "Descr ". Почему то в связке с этим новым свойством база не перезаписывается. НО! Почему?

Если брать другие свойства как DeniedMessage, SessionsDenied - они изменяемы, а вот Descr - НЕТ.

Олег, Спасибо за помощь)
---
Попробуйте не комментировать: //Админ1С и //ПарольАдмина1С = "", а присвоить им пустые значения. Или завести пользователя с полными правами и задать везде его имя и пароль.
---
ами и задать везде его имя

Также пробовал назначать админа в кластере, прописывал имя и пароль

Пробовал так делать. Эффект тот же.

Пробовал создавать новую базу методом ИБ = РабПроц.CreateInfoBase(BaseInfo,0).
База создается.

Отчего же не получается изменять уже существующую методом UpdateInfoBase?
---
Наоборот с паролем попробуйте.
---
```1c
    Для каждого РабочаяБаза из МассивБаз цикл
    ИскомаяБаза = РабочаяБаза.Name;
    БазаНайдена = Найти(СтрокаСоединения,ИскомаяБаза) > 0;
    Если БазаНайдена тогда
    Прервать;
    КонецЕсли;
    КонецЦикла;

    Если Не БазаНайдена тогда
    #Если НаКлиенте тогда
    Сообщить("База (" + СтрокаСоединения + ") не найдена на сервере " + ИмяСервера);
    #КонецЕсли
    Возврат;
    КонецЕсли;

    РабочаяБаза.Descr = "Тест описание";
    РабочаяБаза.ScheduledJobsDenied = Истина; // Блокируем выполнения регламентных заданий
    СоединениеСРабочимПроцессом.UpdateInfoBase(РабочаяБаза);
```

в отладке чему равно РабочаяБаза? если цикл закончится и ничего не найдет? РабочаяБаза будет последнее значение и не факт найденное
---
база есть в ресстре, в переменной РабочаяБаза - искомая база в отладчике
(6) у меня читая база. В ней нет ни пользователей, ни инфы.
---
Авторизация не нужна только для тех баз, в которых нет пользователей. Если есть хотя бы один - нужно указывать параметры полноправного пользователя. Иначе не пустит.
---
Кто то сталкивалcя с такой проблемой? У кого то работает данный код для редактирования базы на сервере 1С???
---
Ушпешно работает, могу программно устанавливать блокировку сеансов, но, когда добавляю в код изменение описания ИБ, то отвалиывается с ошибкой
"Произошла исключительная ситуация: Информационная база не зарегистрирована"
---
запусти Администрирование серверов 1С Предприятия в списке Информационных баз есть база?
---
ние серверов 1С Предприяти

Есть! Это же очевидно.
---
Все действия производятся на компьютере где установлен сервер1С? Если нет, то попробовать там. Возможно зарегистрированный СОМконнектор на удаленном компьютере не соответствует версии сервера1С.
---
тогда бы было соответствующее сообщение о несоответствии. Это уже проходили)
---
Удалось ли найти причину данного поведения? На дворе 2021 год, 1с 8.3.17, а проблема та же. Изменение описания базы не доступно.
Описание изменяется только через "Соединение с агентом сервера"