Здравствуйте. Хотел написать обработку, которая будет подключаться из одной стандартной базы упп 1.3 к другой такой же и переносить некоторые документы. База, к которой надо подключиться, находится на сервере предприятия 1с, база, из которой подключаются работает в файловом режиме. Решил использовать com соединение, но как-то не выходит.
Подключение = Новый COMОбъект("V82.ComConnector");
Попытка
База = Подключение.Connect("Srvr=MyServer;Ref=MyBase;Usr=MyUser;Pwd=MyPass");
Сообщить("Подключение к базе выполнено");
Исключение
Сообщить("Ошибка подключения к базе данных");
Возврат;
КонецПопытки;
Показать
Данный код сообщает об ошибке, то есть, всегда попадает в исключение.Имя пользователя, базы и сервера на латинице. Пароль пробовал разный, пробовал без пароля. У пользователя даже поставил полные права.
Подключение = Новый COMОбъект("V82.ComConnector");
str= "Srvr=MyServer;Ref=MyBase;Usr=MyUser;Pwd=MyPass";
Попытка
База = Подключение.Connect(Подключение.RMTrade,str,"NO_SPLASH_SHOW");
Сообщить("Подключение к базе выполнено");
вот так вот должно подключиться к базе,проверьте путь лучше,на первый взгляд похоже
COMConnector= Новый COMОбъект("V82.COMConnector");
СтрокаПодключения = "Srvr=""ИмяСервера"";Ref=""ИмяБазы"";Usr=""Пользователь"";Pwd=""Пароль"";";
Соединение = COMConnector.Connect(СтрокаПодключения);
COMConnector = Новый COMОбъект("V82.ComConnector");
СтрокаПодключения = "Srvr=""MyServ"";Ref=""MyBase"";Usr=""ExData"";Pwd=""12345"";";
Попытка
База = COMConnector.Connect(СтрокаПодключения);
Сообщить("Подключение к базе выполнено");
Исключение
Сообщить("Ошибка подключения к базе данных");
Возврат;
КонецПопытки;
Показать
По-прежнему не работает, ошибка аналогична. Может быть, там таймаут какой-нибудь?
Подключение = Новый COMОбъект("V82.ComConnector");
СтрокаПодключения = "Srvr=""*****"";Ref=""*****"";Usr=""ExData"";Pwd=""12345"";";
Попытка
База = Подключение.Connect(СтрокаПодключения);
Сообщить("Подключение к базе выполнено");
Исключение
Сообщить(ОписаниеОшибки());
Сообщить("Ошибка подключения к базе данных");
Возврат;
КонецПопытки;
Показать
Порт и протокол по умолчанию, если подключаться руками, то все работает, теперь выдает ошибку
{Форма.Форма.Форма(3)}: Ошибка при вызове конструктора (COMОбъект)
Подключение = Новый COMОбъект("V82.ComConnector");
по причине:
Недопустимая строка с указанием класса
Попробуй поставить виндовую аутентификацию и убери из строки подключения юзера и пароль.
и в исключении добавь Исключение Сообщить(ОписаниеОшибки()) что бы хоть какая то инфа был
Если порт не 1540 тогда оформляй вот так
Идентификатор протокола (по умолчанию tcp), имя компьютера или IP адрес агента сервера (обязательно), номер IP порта агента сервера (по умолчанию 1540). Например, значением параметра могут быть следующие строки: «server1», «tcp://server1», «tcp://server1:1540», «server1:1540».
Если порт не 1540 тогда оформляй вот так Например, «server1:1540».
Когда все базы работали на одной 8.3 платформе проблем не было. Для одной базы понадобилась более высокая версия, поставил 2-сервер на диапазон 16хх. В СтрокаПодключения к ИмяСервера приписал ":1640". Теперь при Com-соединении получаю ошибку: "Несоответствие версий клиента и сервера 1С:Предприятия". Версия сервере правильная - той базы, которой подключаюсь, а версия клиента остается та, из которой подключаюсь. Как избежать ошибки?
Если смотреть в отладчике то
СтрокаПодключения = "Srvr=""*****"";Ref=""*****"";Usr=""ExData"";Pwd=""12345"";";
выгледит "Srvr="*****";Ref="*****";Usr="ExData";Pwd="12345";"
а должна быть "Srvr=*****;Ref=*****;Usr=ExData;Pwd=12345" кавычки лишние
А права есть на внешнее соединение (даже полные права надо проверить, может галочка снята).
Можно попробовать создать другой объект:
V8 = Новый COMОбъект("V8.Application");
Попытка
Открытие = V8.Connect("File=""" + Путь + """;Usr=""Usr1"";"); // для сервера надо другие параметры прописать
Исключение
Предупреждение("База данных не открыта!!!");
Возврат;
КонецПопытки;
Основная задача, решаемая с помощью 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, так как для организации обращения не требуется организации межпроцессной коммуникации;
меньший расход ресурсов операционной системы.
Для организации доступа к данным системы 1С:Предприятие 8 через COM-соединение, выполняется следующая последовательность действий:
создается COM-объект, с помощью которого производится установка соединения;
через полученный объект COM-соединения производится обращение к допустимым методам, свойствам и объектам информационной базы, с которой установлено соединение.
Пример…
Обязанности модуля приложения при работе через COM-соединение выполняет модуль внешнего соединения. Данный модуль может иметь процедуры-обработчики событий, в которых могут быть размещены действия, выполняемые при инициализации и завершении соединения, соответственно.
Процедуры, функции и глобальные переменные, определенные в модуле внешнего соединения с ключевым словом Экспорт становятся, как и в случае модуля приложения, частью глобального контекста.
COM-соединение с информационной базой 1С:Предприятие 8 предоставляет полный доступ к глобальному контексту и в качестве своих свойств может иметь:
системные константы;
значения заданных в конфигураторе объектов, доступ к которым осуществляется с помощью менеджеров (например, константы, перечисления, справочники, документы, журналы документов, отчеты, обработки, планы видов характеристик, планы счетов, планы видов расчета, регистры);
переменные, объявленные в модуле внешнего соединения с ключевым словом Экспорт.
В качестве своих методов COM-соединение может иметь:
системные процедуры и функции;
процедуры и функции модуля внешнего соединения и общих модулей, объявленные с ключевым словом Экспорт;
дополнительный метод NewObject.
Открытые COM-соединения могут быть сохранены в пуле для их повторного использования, что позволяет экономить ресурсы и ускорять работу пользователей, которые ранее уже подключались к данной информационной базе.
Единственная задача, решаемая 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(Данные.УникальныйИдентификатор());
Авторизация доступа через COM -соединение возможна как с помощью параметров строки соединения «Usr» и «Pwd», так и через пользователя Windows, в любом случае должно быть право на «Внешнее соединение»
В Automation и в COM -соединении TRUE и FALSE имеют соответственно значения: -1 (минус единица) и 0.
Имеется возможность организации пула COM-соединений. При этом на принимающей на сервере 1С:Предприятия ЗАРАНЕЕ создаются несколько объектов COM-соединения и на установку соединения требуется еще меньше времени, поскольку не нужно создавать новый объект.
Реализован новый объект ПостроительЗапроса, предназначенный для генерации текстов запросов на основании указанных настроек. Данный объект поддерживает функциональность построителя отчета, не относящуюся к выводу отчета в табличный документ и другим задачам, связанным с пользовательским интерфейсом. Данный объект может использоваться на сервере 1С:Предприятия и в COM -соединении.
Доступно использование COM -объектов при работе встроенного языка на сервере 1С:Предприятия.
Ошибки COM преобразуются в исключения встроенного языка.
Если в конфигурации производится попытка создания недопустимого объекта, например, табличного документа, в модуле внешнего соединения, в общем модуле или в модуле объекта, то COM -соединение может быть не установлено или прервано в виде исключения.
Для файловой базы без разницы где вызывать подключение, на клиенте или сервере, все равно используется компонента с компа на котором запускается 1С. Надо проверить наличие и регистрацию компоненты (см.выше). В остальном должно взлететь.
Господа, тут еще немаловажно, к какому типу клиента 1С мы подключаемся. 1С8 и 1С8.2 отличаются. Для 1С8.2 "V82.COMConnector", для 1С8 "V8.COMConnector"
СOM1с=Новый COMObject("V82.COMConnector");
Попытка
ВнешняяБаза = СOM1с.Connect("Srvr=serv1cv82;Ref=workbase;Usr=Администратор;Pwd=123456789");
Исключение
ВнешняяБаза=Неопределено;
КонецПопытки;
Без лишних кавычек.
И не маловажный момент - отключение.
ВнешняяБаза.Terminate(Ложь) - правильно, ВнешняяБаза=Неопределено - Неправильно, в противном случае на сервере у вас будут висеть не разорванные коннекты.
у меня была такая проблема, на управляемых формах, код доходил до подключения потом зависал. Проблема была в том, что нужно выполнять подключение на стороне клиента
Соединение = Новый 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-соединение
Подскажите как можно обойти. Установить одинаковые релизы нет возможности.