Имя: Пароль:
1C
 
Не получается подключиться через com
0 vv2304
 
19.05.26
08:31
Обработка через COMConnector подключалась к другим базам. Прекрасно работало когда все было на одном сервере.
COMСоединитель = Новый COMОбъект("V83.COMConnector");
СоединениеСАгентом  = COMСоединитель.ConnectAgent(127.0.0.1);
После того как пользователей перевели на отдельный сервер,работать перестало. Хотя вроде все правильно переписал. Теперь так
СоединениеСАгентом  = COMСоединитель.ConnectAgent("ххх-srv-1c");
Кластеры = СоединениеСАгентом.GetClusters().Выгрузить();
СоединениеСАгентом.Authenticate(Кластеры[0], АдминистраторКластера, ПарольКластера);
Пишет "Администратор кластера не аутентифицирован"
админ и пароль не менялись, в консоль ведь вхожу нормально.
Подскажите, где ошибка ?
1 spiller26
 
19.05.26
08:38
(0)
1.Зачем вам подключение к другим базам?
2. Базы на УФ или ОП?
3. Почему через com?
2 2S
 
19.05.26
08:47
(1) Странные вопросы, хозяин-барин, значит так надо ему.
(0) Кластеры[0] что возвращает?
3 vv2304
 
19.05.26
09:18
(2) ComОбъект. ХостНейм = ххх-srv-1c
4 spiller26
 
19.05.26
09:27
(2) А вообще зачем ему кластеры?
5 spiller26
 
19.05.26
09:29
(3) Пробуй по другому, вот тебе функция

Функция УстановитьCOMПодключениеСБазойДанных1С(пСервер, пИмяБазыДанных, пКаталогБД, пСерверная, пПользователь, пПароль) Экспорт
    
    COM_Соединение = Неопределено;
    Попытка                                                                 
        СистемнаяИнформация = Новый СистемнаяИнформация;    
        ВерсияПлатформы = Лев(СистемнаяИнформация.ВерсияПриложения,3);
        
        Если ВерсияПлатформы = "8.3" Тогда
            ВерсияПлатформыСтрока = "V83";
        Иначе
            ВерсияПлатформыСтрока = "V82";
        КонецЕсли;
        
        V8 = Новый COMОбъект(ВерсияПлатформыСтрока + ".COMConnector");
        
        Если пСерверная Тогда
            СтрокаПодключения =
            "Srvr="""         + пСервер            +
            """; Ref="""     + пИмяБазыДанных     +
            """; Usr="""     + пПользователь     +
            """; Pwd="""     + пПароль            +"""";                        
        Иначе
            СтрокаПодключения = "file='" + пКаталогБД + "'; usr='" + пПользователь + "'; pwd='" + пПароль + "';";
        КонецЕсли;
        
        COM_Соединение = V8.Connect(СтрокаПодключения);
        
        Возврат COM_Соединение;
    Исключение
        Сообщение = Новый СообщениеПользователю;
        Сообщение.Текст = ОписаниеОшибки();
        Сообщение.Сообщить();
        Возврат Неопределено;
    КонецПопытки;
    
КонецФункции // УстановитьCOMПодключениеСБазойДанных1С()
6 vv2304
 
19.05.26
10:09
(4) А как получить список баз ?
7 Fedor-1971
 
19.05.26
10:27
(6) Делай регистр сведений с подключением куда тебе нужно и тебе нужен список баз клиентской машины, а не кластера

А так-то:
1. Кластер может требовать пароль администратора
2. СОМ соединения может админ прикрыть на самом сервере
3. На самом сервере, возможно, придётся поставить клиента локально
8 vv2304
 
19.05.26
11:02
1. Кластер может требовать пароль администратора
СоединениеСАгентом.Authenticate(Кластеры[0], АдминистраторКластера, ПарольКластера);
При запуске консоли вбиваю Админа и пароль, нормально вхожу.
Или это другое ?
2. СОМ соединения может админ прикрыть на самом сервере
если надо подключиться к конкретной базе, то без проблем.
9 Fedor-1971
 
19.05.26
11:12
(8) по 1 - программно не пробовал, но нужно чётко понимать, что в Кластеры[0] именно кластер для предоставления Админа и пароля.
Можно для примера посмотреть как работает снятие сеанса пользователя в БСП, там точно нужно указать админа и пароль (в БП: Администрирование - Обслуживание - Активные пользователи кнопка Завершить сеанс)

2. Подключение идет с клиента без проблем, т.к. СОМ компоненты лежат локально, а на сервере их может тупо не быть
10 spiller26
 
19.05.26
11:38
(8) Что-то вас несет не туда.
Если вам нужно мписок баз то пробуйте rac, как раз в БСП можете найти.
Если вам нужно подсоединение к базе через com, то в (5) я вам  дал код
11 Garykom
 
гуру
19.05.26
11:46
(0)
После того как пользователей перевели на отдельный сервер,работать перестало.

Может у вас теперь только сервер RDP с клиентами под Windows, а сервер 1С и СУБД на Linux крутятся?

И вроде обычный COM/OLE он только локально в рамках одной машины работает
Если хочется по сети то есть конечно DCOM, но хрень еще та и настраивать отдельно надо
12 spiller26
 
19.05.26
11:50
Смотрите модуль БСП "АдминистрированиеКластера..."
13 vv2304
 
19.05.26
12:38
И вроде обычный COM/OLE он только локально в рамках одной машины работает
Не, нормально работает.
ИмяСервера = "xxx-srv-1c1:1841";
ПараметрыПодключенияИБ = "Srvr=" + ИмяСервера + ";Ref=" + ИмяИБНаСервере + ";Usr=" + ИмяПользователя + ";Pwd=" + ПарольПользователя;
v8=Новый COMОбъект("V83.COMConnector");
Connection=v8.Connect(ПараметрыПодключенияИБ);
только сервер пришлось писать вместе с портом.
14 Garykom
 
гуру
19.05.26
12:44
(13) У тебя тут локальный COM внутри которого идет подключение к серверной базе по сети
15 Garykom
 
гуру
19.05.26
12:51
(14)+ Разные методы Connect vs ConnectAgent
ConnectAgent - точно умеет по сети? (в ИТС написано что умеет)
А порт не надо указать аналогично? (если он не стандартный по умолчанию)
И точно на сервере разрешили подключаться по этому порту к агенту сервера?
16 vv2304
 
19.05.26
18:51
Я давно не в восторге от com. Разные отчеты уже давно на http переделал. Но очень часто нужно пользователей из главной базы закинуть в удаленные, права назначить, отчеты и обработки подключить и т.д.
А что взамен ?
17 Garykom
 
гуру
19.05.26
18:57
(16) погугли "1С rac ras"
https://infostart.ru/1c/articles/810752/
утилита rac.exe она по умолчанию ставится
сервер администрирования ras.exe надо отдельно зарегать (как службу Windows или Linux)
18 kubik_live
 
19.05.26
21:02
(0) В службе компонентов на новом сервере DCOM настроили?
Основная теорема систематики: Новые системы плодят новые проблемы.