Программное создание базы в реестре кластеров

1. Manticor 66 31.10.17 17:41 Сейчас в теме
Доброго времени суток. Каким образом программными средствами 1С возможно создать новую базу на реестре кластеров 1с?

Есть публикация в которой показан пример подключения к агенту сервера и отключения сеансов и соединений с информационной базой.
https://infostart.ru/public/77671/

По-видимому таким же способом акутуально и подключиться к рабочему процессу сервера.
В синтакс. помошнике нашел метод CreateInfoBase. Данный метод отностся к методу "Соединение с рабочим процессом".

Тоесть получается вначале нужно приконнектиться к рабочему процессу. Есть метод Connect(<ИнформационнаяБаза>, <ИмяПользователя>, <Пароль>) . НО!

Почему первый параметр это ИБ, которую по идее нужно создать? Или как то можно по-другому?
По теме из базы знаний
Вознаграждение за ответ
Показать полностью
Найденные решения
3. spacecraft 31.10.17 18:35 Сейчас в теме +3 $m
(1)
BaseInfo = Process.CreateInfoBaseInfo();
//заполняем все параметры базы:
BaseInfo.dbServerName = "ИмяСервера";
//... и т.д. Все свойства, необходимые для создания информационной базы (Name, dbServerName, dbName, dbUser, dbPassword, Locale, [DateOffset]) должны быть заполнены. 
ИБ = Process.CreateInfoBase(BaseInfo,1);

Если опираться на приведенную статью, то Process это РабПроц там.
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Goleff74 215 31.10.17 18:31 Сейчас в теме
(1)
Зачем вам делать коннект к базе?
КомКоннектор - КоннектВоркингПроцесс - КриейтИнфоБейс
3. spacecraft 31.10.17 18:35 Сейчас в теме +3 $m
(1)
BaseInfo = Process.CreateInfoBaseInfo();
//заполняем все параметры базы:
BaseInfo.dbServerName = "ИмяСервера";
//... и т.д. Все свойства, необходимые для создания информационной базы (Name, dbServerName, dbName, dbUser, dbPassword, Locale, [DateOffset]) должны быть заполнены. 
ИБ = Process.CreateInfoBase(BaseInfo,1);

Если опираться на приведенную статью, то Process это РабПроц там.
4. Manticor 66 02.11.17 13:20 Сейчас в теме
(3) Пробую так:

РабПроц = Коннектор.ConnectWorkingProcess(Сервер + ":" + СтрЗаменить(ПортПроцесса, Символы.НПП, ""));
BaseInfo = РабПроц.CreateInfoBaseInfo();
			//заполняем все параметры базы:
			BaseInfo.Name = "test_V";
			BaseInfo.dbServerName = "MOW03-PTAP05";
			BaseInfo.DBMS = "MSSQLServer";
			BaseInfo.dbName = "test_V";
                        BaseInfo.dbUser = "";
			BaseInfo.dbPassword = "";

			BaseInfo.Locale="ru_RU";
			
			BaseInfo.DateOffset = 0;
						
			ИБ = РабПроц.CreateInfoBase(BaseInfo,0);
Показать


На кластере серверов нет аутентификации - не создано ниодного админа.
На сервере SQL доменная аутенцификация. База там физически создал

Выдает такую ошибку:
{ВнешняяОбработка.НазначениеПравВКопияхБаз.Форма.Форма.Форма(1275)}: Ошибка при вызове метода контекста (CreateInfoBase)
ИБ = РабПроц.CreateInfoBase(BaseInfo,0); //,1
по причине:
Произошла исключительная ситуация: Ошибка информационной базы
Ошибка при выполнении операции с информационной базой
Ошибка СУБД:
Microsoft SQL Server Native Client 11.0: Named Pipes Provider: Could not open a connection to SQL Server [2].
HRESULT=80004005, HRESULT=80004005, HRESULT=80004005, SQLSrvr: SQLSTATE=08001, state=1, Severity=10, native=2, line=0
5. Manticor 66 02.11.17 15:42 Сейчас в теме
(4) Перепутал сервер SQL с сервером 1С. Все работает. База создается.
6. Manticor 66 08.12.17 13:19 Сейчас в теме
(3) Возникла необходимость редактировать программно уже созданную базу на сервере 1С.
По аналогии из публикации https://infostart.ru/public/146898/ получаю нужную базу на кластере и пытаюсь произвести редактирование описания и признака отключения рег. заданий:

Процедура СоздатьБазуВРеестреНаСервереТест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(РабочаяБаза);	
	
КонецПроцедуры
Показать


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

Как такое может быть? если я создавал пустую базу и на SQL сервере и на сервере 1С? Может как то по другому возможно редактировать базу в сервере 1с?
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот