Com соединение с базой на сервере 1С

1. newphoenix 10.07.13 09:11 Сейчас в теме
Здравствуйте. Хотел написать обработку, которая будет подключаться из одной стандартной базы упп 1.3 к другой такой же и переносить некоторые документы. База, к которой надо подключиться, находится на сервере предприятия 1с, база, из которой подключаются работает в файловом режиме. Решил использовать com соединение, но как-то не выходит.

Подключение = Новый COMОбъект("V82.ComConnector");


        Попытка
		База = Подключение.Connect("Srvr=MyServer;Ref=MyBase;Usr=MyUser;Pwd=MyPass");
		Сообщить("Подключение к базе выполнено");
	Исключение
		Сообщить("Ошибка подключения к базе данных");
		Возврат;
	КонецПопытки;
Показать

Данный код сообщает об ошибке, то есть, всегда попадает в исключение.Имя пользователя, базы и сервера на латинице. Пароль пробовал разный, пробовал без пароля. У пользователя даже поставил полные права.
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
24. BildNotForUsers 04.04.17 16:32 Сейчас в теме
(1)
Подключение = Новый COMОбъект("V82.ComConnector");

        str= "Srvr=MyServer;Ref=MyBase;Usr=MyUser;Pwd=MyPass";

        Попытка
        База = Подключение.Connect(Подключение.RMTrade,str,"NO_SPLASH_SHOW");
        Сообщить("Подключение к базе выполнено");


вот так вот должно подключиться к базе,проверьте путь лучше,на первый взгляд похоже
2. Rusleg 84 10.07.13 09:17 Сейчас в теме
Попробуйте с кавычками

COMConnector= Новый COMОбъект("V82.COMConnector");	

СтрокаПодключения = "Srvr=""ИмяСервера"";Ref=""ИмяБазы"";Usr=""Пользователь"";Pwd=""Пароль"";";
	
Соединение = COMConnector.Connect(СтрокаПодключения);
3. newphoenix 10.07.13 09:27 Сейчас в теме
COMConnector = Новый COMОбъект("V82.ComConnector");

        СтрокаПодключения = "Srvr=""MyServ"";Ref=""MyBase"";Usr=""ExData"";Pwd=""12345"";"; 
    	
	Попытка
		База = COMConnector.Connect(СтрокаПодключения);
		Сообщить("Подключение к базе выполнено");
	Исключение
		Сообщить("Ошибка подключения к базе данных");
		Возврат;
	КонецПопытки;
Показать


По-прежнему не работает, ошибка аналогична. Может быть, там таймаут какой-нибудь?
7. newphoenix 10.07.13 10:59 Сейчас в теме
Подключение = Новый COMОбъект("V82.ComConnector");
	
    СтрокаПодключения = "Srvr=""*****"";Ref=""*****"";Usr=""ExData"";Pwd=""12345"";"; 
    	
	Попытка
		База = Подключение.Connect(СтрокаПодключения);
		Сообщить("Подключение к базе выполнено");
	Исключение
		Сообщить(ОписаниеОшибки()); 
		Сообщить("Ошибка подключения к базе данных");
		Возврат;
	КонецПопытки;
Показать


Порт и протокол по умолчанию, если подключаться руками, то все работает, теперь выдает ошибку
{Форма.Форма.Форма(3)}: Ошибка при вызове конструктора (COMОбъект)
Подключение = Новый COMОбъект("V82.ComConnector");
по причине:
Недопустимая строка с указанием класса
4. Rusleg 84 10.07.13 09:32 Сейчас в теме
Порты сервера 1С открыты?
5. Babuin 10.07.13 09:37 Сейчас в теме
Попробуй поставить виндовую аутентификацию и убери из строки подключения юзера и пароль.
и в исключении добавь Исключение Сообщить(ОписаниеОшибки()) что бы хоть какая то инфа был
6. Diose 10.07.13 09:49 Сейчас в теме
V82 = COMConnector.Connect("Srvr="""+ИмяСервераДанныхДляПодключения+""";Ref="""+ИмяБазыДанныхДляПодключения+""";Usr="""";Pwd="""";"); 


Если порт не 1540 тогда оформляй вот так
Идентификатор протокола (по умолчанию tcp), имя компьютера или IP адрес агента сервера (обязательно), номер IP порта агента сервера (по умолчанию 1540). Например, значением параметра могут быть следующие строки: «server1», «tcp://server1», «tcp://server1:1540», «server1:1540».
Mixalich03; +1 Ответить
30. M_Volkov 5 16.01.20 13:48 Сейчас в теме
(6)
Если порт не 1540 тогда оформляй вот так Например, «server1:1540».

Когда все базы работали на одной 8.3 платформе проблем не было. Для одной базы понадобилась более высокая версия, поставил 2-сервер на диапазон 16хх. В СтрокаПодключения к ИмяСервера приписал ":1640". Теперь при Com-соединении получаю ошибку: "Несоответствие версий клиента и сервера 1С:Предприятия". Версия сервере правильная - той базы, которой подключаюсь, а версия клиента остается та, из которой подключаюсь. Как избежать ошибки?
8. Diose 10.07.13 11:39 Сейчас в теме
Если смотреть в отладчике то
СтрокаПодключения = "Srvr=""*****"";Ref=""*****"";Usr=""ExData"";Pwd=""12345"";";
выгледит "Srvr="*****";Ref="*****";Usr="ExData";Pwd="12345";"
а должна быть "Srvr=*****;Ref=*****;Usr=ExData;Pwd=12345" кавычки лишние
9. finansoft.ru 10.07.13 11:54 Сейчас в теме
А права есть на внешнее соединение (даже полные права надо проверить, может галочка снята).

Можно попробовать создать другой объект:
V8 = Новый COMОбъект("V8.Application"); 

Попытка 
	Открытие = V8.Connect("File=""" + Путь + """;Usr=""Usr1"";");   // для сервера надо другие параметры прописать
Исключение 
	Предупреждение("База данных не открыта!!!"); 
	Возврат; 
КонецПопытки; 
10. vervolf9 10.07.13 12:41 Сейчас в теме
Основная задача, решаемая с помощью COM-соединения – обеспечение надежного и быстрого программного доступа к данным системы 1С:Предприятие 8 из внешних приложений. В общем и целом работа с системой 1С:Предприятие 8 через COM-соединение подобна работе с системой 1С:Предприятие 8 в режиме Automation-сервера. Основные отличия заключаются в следующем:

В случае Automation-сервера запускается полноценное приложение 1С:Предприятие 8, а в случае COM-соединения запускается относительно небольшой внутрипроцессный COM-сервер.

При работе через COM-соединение недоступны функциональные возможности так или иначе связанные с организацией пользовательского интерфейса системы 1С:Предприятие 8;
При работе COM-соединения не используется модуль приложения конфигурации 1С:Предприятие 8. Его роль при работе с COM-соединением играет модуль внешнего соединения.

При использовании COM-соединения для доступа к данным системы 1С:Предприятие 8 имеются следующие преимущества по сравнению с использованием Automation-сервера:

более быстрая установка соединения, так как не требуется создания отдельного процесса операционной системы, а все действия производятся в рамках вызывающего процесса;
более быстрое обращение к свойствам и методам объектов системы 1С:Предприятие 8, так как для организации обращения не требуется организации межпроцессной коммуникации;
меньший расход ресурсов операционной системы.
adhocprog; DiegoLidabo; +2 Ответить
11. vervolf9 10.07.13 12:41 Сейчас в теме
Для организации доступа к данным системы 1С:Предприятие 8 через COM-соединение, выполняется следующая последовательность действий:

создается COM-объект, с помощью которого производится установка соединения;
через полученный объект COM-соединения производится обращение к допустимым методам, свойствам и объектам информационной базы, с которой установлено соединение.
Пример…

Обязанности модуля приложения при работе через COM-соединение выполняет модуль внешнего соединения. Данный модуль может иметь процедуры-обработчики событий, в которых могут быть размещены действия, выполняемые при инициализации и завершении соединения, соответственно.

Процедуры, функции и глобальные переменные, определенные в модуле внешнего соединения с ключевым словом Экспорт становятся, как и в случае модуля приложения, частью глобального контекста.

COM-соединение с информационной базой 1С:Предприятие 8 предоставляет полный доступ к глобальному контексту и в качестве своих свойств может иметь:

системные константы;
значения заданных в конфигураторе объектов, доступ к которым осуществляется с помощью менеджеров (например, константы, перечисления, справочники, документы, журналы документов, отчеты, обработки, планы видов характеристик, планы счетов, планы видов расчета, регистры);
переменные, объявленные в модуле внешнего соединения с ключевым словом Экспорт.
В качестве своих методов COM-соединение может иметь:

системные процедуры и функции;
процедуры и функции модуля внешнего соединения и общих модулей, объявленные с ключевым словом Экспорт;
дополнительный метод NewObject.
Открытые COM-соединения могут быть сохранены в пуле для их повторного использования, что позволяет экономить ресурсы и ускорять работу пользователей, которые ранее уже подключались к данной информационной базе.
adhocprog; +1 Ответить
12. vervolf9 10.07.13 12:42 Сейчас в теме
1.4 Объект "V8.COMConnector"



Единственная задача, решаемая COM -объектом V8.COMConnector – установка COM -соединения с информационной базой 1С:Предприятия 8.0. С помощью одного экземпляра объекта V8.COMConnector может быть установлено неограниченное число соединений. Объект V8.COMConnector имеет один-единственный метод Connect , предназначенный для установки COM -соединения с информационной базой 1С:Предприятия 8.0.

<СтрокаСоединенияИБ>

Строка соединения с ИБ представляет собой цепочку фрагментов вида Параметр=Значение. Фрагменты отделяются друг от друга символами ';'. Если значение содержит пробельные символы, то оно должно быть заключено в двойные кавычки (").

Общие параметры:

Usr - имя пользователя;
Pwd - пароль.

Для файлового варианта определен параметр:

File - каталог информационной базы.

Для клиент-серверного варианта определены параметры:

Srvr - имя сервера 1С:Предприятия;
Ref - имя информационной базы на сервере.

Метод Connect возвращает ссылку на созданный объект COM -соединения.

Метод Connect устанавливает COM -соединение с информационной базой 1С:Предприятия 8.0 и возвращает ссылку на объект COM -соединение.

Пример:

// Создается объект-коннектор 
V8 = Новый COMObject ("V8.COMConnector"); 
// создается объект COM -соединение 
Соединение = V8.Connect ("File=""c:\InfoBases\Trade""; Usr =""Director"";") 


Авторизация доступа через COM -соединение возможна как с помощью параметров строки соединения «Usr» и «Pwd», так и через пользователя Windows, в любом случае должно быть право на «Внешнее соединение».

1.5 Объект "COM-соединение"



COM -соединение с информационной базой 1С:Предприятия предоставляет полный доступ к своему глобальному контексту (см. «Контекст выполнения программного модуля»). Поэтому COM -соединение в качестве своих методов может иметь: системные константы, значения заданных в конфигураторе объектов, доступ к которым осуществляется с помощью менеджеров (например, константы, перечисления, справочники, документы, журналы документов, отчеты, обработки, планы видов характеристик, планы счетов, планы видов расчета, регистры), а также переменные, объявленные в модуле внешнего соединения с ключевым словом Экспорт.

Кроме того, COM -соединение имеет дополнительный метод NewObject, с помощью которого можно создавать значения определенных типов.

Пример:

тз = Соединение. NewObject ("ТаблицаЗначений");


Метод String Позволяет получать строковые представления значений 1С:Предприятия.

Пример:

Представление = Соединение.String(Данные.УникальныйИдентификатор());
26. M_Volkov 5 04.09.17 16:41 Сейчас в теме
(12)
Авторизация доступа через COM -соединение возможна как с помощью параметров строки соединения «Usr» и «Pwd», так и через пользователя Windows, в любом случае должно быть право на «Внешнее соединение»

Можно подробнее, как через пользователя Windows?
13. vervolf9 10.07.13 12:42 Сейчас в теме
1.6. Особенности работы с COM -соединением



В Automation и в COM -соединении TRUE и FALSE имеют соответственно значения: -1 (минус единица) и 0.

Имеется возможность организации пула COM-соединений. При этом на принимающей на сервере 1С:Предприятия ЗАРАНЕЕ создаются несколько объектов COM-соединения и на установку соединения требуется еще меньше времени, поскольку не нужно создавать новый объект.

Реализован новый объект ПостроительЗапроса, предназначенный для генерации текстов запросов на основании указанных настроек. Данный объект поддерживает функциональность построителя отчета, не относящуюся к выводу отчета в табличный документ и другим задачам, связанным с пользовательским интерфейсом. Данный объект может использоваться на сервере 1С:Предприятия и в COM -соединении.

Доступно использование COM -объектов при работе встроенного языка на сервере 1С:Предприятия.

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

Если в конфигурации производится попытка создания недопустимого объекта, например, табличного документа, в модуле внешнего соединения, в общем модуле или в модуле объекта, то COM -соединение может быть не установлено или прервано в виде исключения.
14. Shurik 10.07.13 16:31 Сейчас в теме
regsvr32 /n /i:user "C:\Program Files\1cv82\8.2.18.61\bin\comcntr.dll"
rudak_a; hityay; smirnova_a; Nuobu; Дмитрий74Чел; +5 Ответить
15. proxytm 10.07.13 16:38 Сейчас в теме
Лично я пользуюсь следующим кодом для подключения к другой базе:
V8 = Новый COMОбъект("V82.COMConnector");
		
Попытка
					
     Connect = V8.Connect("srvr = ""srv""; ref = ""Buh""; usr = ""Администратор""; pwd = ""adm""");
			
Исключение
			
     Предупреждение("База данных!");
			
Возврат
Показать
rudak_a; PhoenixAOD; Sintson; +3 Ответить
16. vervolf9 30.10.13 15:00 Сейчас в теме
Вызывайте код на клиенте, а не на сервере.
v_k66; dedicated; +2 Ответить
17. killitch 30 31.10.13 11:13 Сейчас в теме
Для файловой базы без разницы где вызывать подключение, на клиенте или сервере, все равно используется компонента с компа на котором запускается 1С. Надо проверить наличие и регистрацию компоненты (см.выше). В остальном должно взлететь.
18. jko 16.05.14 07:32 Сейчас в теме
Господа, тут еще немаловажно, к какому типу клиента 1С мы подключаемся. 1С8 и 1С8.2 отличаются. Для 1С8.2 "V82.COMConnector", для 1С8 "V8.COMConnector"
19. KrackMan 28.12.15 00:23 Сейчас в теме
Рабочий вариант.

СOM1с=Новый COMObject("V82.COMConnector");
Попытка 
	ВнешняяБаза  =  СOM1с.Connect("Srvr=serv1cv82;Ref=workbase;Usr=Администратор;Pwd=123456789"); 
Исключение
	ВнешняяБаза=Неопределено;
КонецПопытки;


Без лишних кавычек.

И не маловажный момент - отключение.
ВнешняяБаза.Terminate(Ложь) - правильно, ВнешняяБаза=Неопределено - Неправильно, в противном случае на сервере у вас будут висеть не разорванные коннекты.
andr_andrey; adhocprog; Semenyak; edesyatov; +4 Ответить
23. script 128 27.10.16 12:32 Сейчас в теме
(19)

Рабочий вариант

Без лишних кавычек.

перестанет работать, если имя пользователя состоит из двух слов и между ними есть пробел.
20. obu 26.04.16 23:19 Сейчас в теме
А если мне надо брать данные из шести баз, то мне делать параллельно шесть соединений? Или выкачал из одной - закрыл, выкачал из другой - закрыл?
21. sssss_aaaaa_2011 27.04.16 00:01 Сейчас в теме
(20) obu, как хочешь. Лишь бы памяти хватило.
22. d_z_k 24 16.05.16 14:48 Сейчас в теме
(20) obu,
Сделать каждое соединение в отдельности как показано
СOM1
СOM2
СOM3
...
n
а в конце закрыть.
25. yohan19 11.05.17 11:09 Сейчас в теме
у меня была такая проблема, на управляемых формах, код доходил до подключения потом зависал. Проблема была в том, что нужно выполнять подключение на стороне клиента
27. koloboc74 83 06.09.17 03:14 Сейчас в теме
А у вас в службе компонентов есть компонента V82.ComConnector
Прикрепленные файлы:
diamond_nsk; +1 Ответить
28. kv.lv 10 07.09.17 16:39 Сейчас в теме
СтрокаПодключения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(Строка("srvr = %1; ref = %2; usr = %3; pwd = %4"),
				ПараметрыПодключения.Сервер,
				ПараметрыПодключения.ИмяБазы,
				ПараметрыПодключения.Пользователь,
				ПараметрыПодключения.Пароль);


Чтобы не замарачиватся с кавычками
Caspersky; +1 Ответить
29. Rust 01.03.18 09:26 Сейчас в теме
ComОбъект = ОбщегоНазначенияКлиентСервер.ИмяCOMСоединителя();
31. user1530071 21.05.21 09:20 Сейчас в теме
Соединение = Новый COMОбъект("V83.ComConnector");
	СтрокаСоединения="Srvr=srv; Ref=base; Usr=admin_test; Pwd=1234;";
	Сообщение= Новый СообщениеПользователю;
	Попытка
		Подключение=Соединение.Connect(СтрокаСоединения);
		Сообщение.Текст="Соединение прошло успешно";
		Сообщение.Сообщить();
	Исключение
		Сообщение.Текст="Не удалось подключиться к базе"+ОписаниеОшибки();
		Сообщение.Сообщить();
Показать


Выдает ошибку
:Не удалось подключиться к базе{Обработка.ВыгрузкаНакладной.Форма.Форма.Форма(20)}: Ошибка при вызове метода контекста (Connect): Произошла исключительная ситуация (V83.COMConnector.1): Несоответствие версий клиента и сервера 1С:Предприятия
Различаются версии клиента и сервера (8.3.16.1148 - 8.3.7.2008), клиентское приложение: COM-соединение

Подскажите как можно обойти. Установить одинаковые релизы нет возможности.
32. astonvilla 234 25.05.21 14:02 Сейчас в теме
(31) на инфостарте есть статьи как подключаться с разными версиями длл
https://infostart.ru/public/610960/
user1135816; +1 Ответить
Оставьте свое сообщение

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