Здравствуйте.
На работе используется система СКУД "Кронверк". Данные хранятся в БД Firebird.
На свой ноутбук установил компоненты расширений для Firebird.
Создал обработку для подключения, но при подключении выдается ошибка;
Ошибка при установке соединения: {Обработка.ПодключениеКБазе.Форма.Форма.Форма(21)}: Ошибка при вызове метода контекста (Open): Произошла исключительная ситуация (Microsoft OLE DB Provider for ODBC Drivers): [ODBC Firebird Driver]Unable to complete network request to host "xnet://Global\FIREBIRD".
На работе используется система СКУД "Кронверк". Данные хранятся в БД Firebird.
На свой ноутбук установил компоненты расширений для Firebird.
Создал обработку для подключения, но при подключении выдается ошибка;
Ошибка при установке соединения: {Обработка.ПодключениеКБазе.Форма.Форма.Форма(21)}: Ошибка при вызове метода контекста (Open): Произошла исключительная ситуация (Microsoft OLE DB Provider for ODBC Drivers): [ODBC Firebird Driver]Unable to complete network request to host "xnet://Global\FIREBIRD".
&НаКлиенте
Процедура Подключиться(Команда)
ПодключитьсяКБазе();
КонецПроцедуры
&НаКлиенте
Процедура ПодключитьсяКБазе();
ПутьКБазе = "E:\ibnet.fdb";
мСоединение=Новый COMОбъект("ADODB.Connection");
мСоединение.ConnectionString="driver=Firebird/InterBase® driver;
|Dialect=3;
|CHARSET=NONE;
|Uid=1;
|Pwd=1;
|Dbname="+СокрЛП(ПутьКБазе);
мСоединение.ConnectionTimeOut=180; // и хватит
мСоединение.CursorLocation=3;
Попытка
мСоединение.Open(мСоединение.ConnectionString);
ПоказатьОповещениеПользователя("ОК",,"Соединение успешно установлено!");
Исключение
Сообщить("Ошибка при установке соединения: "+ОписаниеОшибки());
мСоединение=Неопределено;
КонецПопытки;
КонецПроцедуры
ПоказатьОтветы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(2)Я и по этой ссылке тоже делал.
Вот такая ошибка выходит
Невозможно установить соединение с Firebird:
{Обработка.ПодключениеКБазе.Форма.Форма.Форма(42)}: Ошибка при вызове метода контекста (Open): Произошла исключительная ситуация (Microsoft OLE DB Provider for ODBC Drivers): [ODBC Firebird Driver]Unable to complete network request to host "xnet://Global\FIREBIRD".
Вот такая ошибка выходит
Невозможно установить соединение с Firebird:
{Обработка.ПодключениеКБазе.Форма.Форма.Форма(42)}: Ошибка при вызове метода контекста (Open): Произошла исключительная ситуация (Microsoft OLE DB Provider for ODBC Drivers): [ODBC Firebird Driver]Unable to complete network request to host "xnet://Global\FIREBIRD".
(10) у меня взлетело после вот такого:
поставьте firebird сервер и ОДБЦ драйвер на той машине, с которой инициируете подключение. На той машине, где стоит база в файле aliases.conf (в папке сервера firebird) пропишите строку, типа
sBD = E:\ibnet.fdb
перезапустите сервер firebird и попробуйте подключиться указав строку подключения
ПутьКБазе = "IPИсточника_базы:sBD"
поставьте firebird сервер и ОДБЦ драйвер на той машине, с которой инициируете подключение. На той машине, где стоит база в файле aliases.conf (в папке сервера firebird) пропишите строку, типа
sBD = E:\ibnet.fdb
перезапустите сервер firebird и попробуйте подключиться указав строку подключения
ПутьКБазе = "IPИсточника_базы:sBD"
(11) У меня теперь ошибка другого рода
Ошибка при установке соединения: {Обработка.ПодключениеКБазе.Форма.Форма.Форма(26)}: Ошибка при вызове метода контекста (Open): Произошла исключительная ситуация (Microsoft OLE DB Provider for ODBC Drivers): [ODBC Firebird Driver]Your user name and password are not defined. Ask your database administrator to set up a Firebird login.
Ошибка при установке соединения: {Обработка.ПодключениеКБазе.Форма.Форма.Форма(26)}: Ошибка при вызове метода контекста (Open): Произошла исключительная ситуация (Microsoft OLE DB Provider for ODBC Drivers): [ODBC Firebird Driver]Your user name and password are not defined. Ask your database administrator to set up a Firebird login.
(12)
Код через который я обращаюсь
&НаКлиенте
Процедура ПодключитьсяКБазе();
ПутьКБазе = "localhost:E:\DB\DB.fbd";
мСоединение=Новый COMОбъект("ADODB.Connection");
мСоединение.ConnectionString="driver=Firebird/InterBase® driver;
|Dialect=3;
|CHARSET=NONE;
|Uid=SYSADMIN;
|Pwd=masterkey;
|Dbname="+СокрЛП(ПутьКБазе);
мСоединение.ConnectionTimeOut=180; // и хватит
мСоединение.CursorLocation=3;
Попытка
мСоединение.Open(мСоединение.ConnectionString);
ПоказатьОповещениеПользователя("ОК",,"Соединение успешно установлено!");
Исключение
Сообщить("Ошибка при установке соединения: "+ОписаниеОшибки());
мСоединение=Неопределено;
КонецПопытки;
КонецПроцедуры
ПоказатьКод через который я обращаюсь
&НаКлиенте
Процедура ПодключитьсяКБазе();
ПутьКБазе = "localhost:E:\ibnet.fdb";
мСоединение=Новый COMОбъект("ADODB.Connection");
мСоединение.ConnectionString="driver=Firebird/InterBase® driver;
|Dialect=3;
|CHARSET=utf-8;
|Uid=SYSDBA;
|Pwd=masterkey;
|Role=rdb$admin;
|Dbname="+СокрЛП(ПутьКБазе);
мСоединение.ConnectionTimeOut=180; // и хватит
мСоединение.CursorLocation=3;
Попытка
мСоединение.Open(мСоединение.ConnectionString);
ПоказатьОповещениеПользователя("ОК",,"Соединение успешно установлено!");
Исключение
Сообщить("Ошибка при установке соединения: "+ОписаниеОшибки());
мСоединение=Неопределено;
КонецПопытки;
КонецПроцедуры
ПоказатьСработало
&НаКлиенте
Процедура Подключиться(Команда)
ВыполнитьЗапрос();
КонецПроцедуры
&НаКлиенте
Функция ВыполнитьПодключениеКБД()
ПутьКБазе = "localhost:E:\ibnet.fdb";
мСоединение=Новый COMОбъект("ADODB.Connection");
мСоединение.ConnectionString="driver=Firebird/InterBase® driver;
|Dialect=3;
|CHARSET=utf-8;
|Uid=SYSDBA;
|Pwd=masterkey;
|Role=rdb$admin;
|Dbname="+СокрЛП(ПутьКБазе);
мСоединение.ConnectionTimeOut=180; // и хватит
мСоединение.CursorLocation=3;
Попытка
мСоединение.Open(мСоединение.ConnectionString);
ПоказатьОповещениеПользователя("ОК",,"Соединение успешно установлено!");
Исключение
Сообщить("Ошибка при установке соединения: "+ОписаниеОшибки());
мСоединение=Неопределено;
КонецПопытки;
Возврат мСоединение;
КонецФункции
&НаКлиенте
Функция ВыполнитьЗапрос()
ЗагруженоНовыхСотрудников = 0;
Connection = ВыполнитьПодключениеКБД();
RecordSetDepartanent = Новый COMОбъект("ADODB.Recordset");
RecordSetDepartanent.ActiveConnection = Connection;
RecordSetDepartanent.CursorType = 1;
RecordSetDepartanent.LockType = 3;
Try
RecordSetDepartanent.Open("SEL ECT OW_FIRSTNAME, OW_MIDDLENAME, OW_LASTNAME,OW_WS_ID FR OM OWNER", Connection);
Except
Сообщить("Не удалось выполнить запрос " + ОписаниеОшибки());
Connection.Close();
Return Connection;
EndTry;
// Обработка результатов запроса
Пока(RecordSetDepartanent.EOF() = 0)Цикл
НаименованиеСотрудников = String(RecordSetDepartanent.Fields("OW_LASTNAME").Value)+" "
+ String(RecordSetDepartanent.Fields("OW_FIRSTNAME").Value) + " "
+String(RecordSetDepartanent.Fields("OW_MIDDLENAME").Value) ;
//Подразделение = String(RecordSetDepartanent.Fields("WS_FULLNAME").Value);
RecordSetDepartanent.MoveNext();
КонецЦикла;
// Не забываем закрыть набор данных !!!
RecordSetDepartanent.Close();
Connection.Close();
КонецФункции
&НаСервереБезКонтекста
Функция ПолучитьСсылкуПоНаименованиюСотрудника(Наим)
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Сотрудники.Ссылка КАК Ссылка,
| Сотрудники.Наименование КАК Наименование
|ИЗ
| Справочник.Сотрудники КАК Сотрудники
|ГДЕ
| Сотрудники.Наименование = &Наименование";
Запрос.УстановитьПараметр("Наименование", Наим);
РезультатЗапроса = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
Возврат ВыборкаДетальныеЗаписи.Ссылка;
КонецЦикла;
Возврат Неопределено;
КонецФункции
&НаСервереБезКонтекста
Процедура ЗаписатьНовогоСотрудника(НаименованиеСотрудников,НаименованиеСотрудника,Подразделение,ЗагруженоНовыхСотрудников)
СпрСотрудники = Справочники.Сотрудники;
СпрПодразделение = Справочники.Подразделения;
НаименованиеСотрудников = НаименованиеСотрудника;
НайтиНаименованиеСпрСотр = СпрСотрудники.НайтиПоНаименованию(НаименованиеСотрудников,Истина);
НайтиЭлПодразделения = СпрПодразделение.НайтиПоНаименованию(Подразделение,Истина);
Если НайтиНаименованиеСпрСотр.Пустая = СпрСотрудники.ПустаяСсылка() Тогда
НовЭл = СпрСотрудники.СоздатьЭлемент();
ЗагруженоНовыхСотрудников = ЗагруженоНовыхСотрудников + 1;
Если ПустаяСтрока(НайтиЭлПодразделения) Тогда
НовЭлПодразделения = СпрПодразделение.СоздатьЭлемент();
НовЭлПодразделения.Наименование = Подразделение;
НовЭлПодразделения.Записать();
НовЭл.Подразделение = НовЭлПодразделения.Ссылка;
Иначе
НовЭл.Подразделение = НайтиЭлПодразделения;
КонецЕсли;
Иначе
ВыборкаДетальныеЗаписи = НайтиНаименованиеСпрСотр;
КонецЕсли;
КонецПроцедуры
ПоказатьХотелось бы у Вас коллег спросить где у меня ошибка. Цель данного поста такова.
На предприятии где я работаю установлена турникетная система "Кронверк".
По этой системе идет выгрузка данных о входах/выходах сотрудников,. но это не главное.
Если создается новый сотрудник, то по в начале его приходится занести в СКУД, а потом только в 1С.
А моя задача/цель облегчить себе работу по добавлению сотрудников в 1С-ке.
Я хочу через подключение к базе СКУД-а, загружать новых сотрудников в 1с-ку.
Поэтому если можно просто скажите в каком месте мне нужно доработать данный код.
Все большое спасибо!
(23)Привет!)
Я вот кое что тут сделал
Я вот кое что тут сделал
&НаКлиенте
Функция ВыполнитьПодключениеКБД()
ПутьКБазе = "localhost:E:\ibnet.fdb";
мСоединение=Новый COMОбъект("ADODB.Connection");
мСоединение.ConnectionString="driver=Firebird/InterBase® driver;
|Dialect=3;
|CHARSET=utf-8;
|Uid=SYSDBA;
|Pwd=masterkey;
|Role=rdb$admin;
|Dbname="+СокрЛП(ПутьКБазе);
мСоединение.ConnectionTimeOut=180; // и хватит
мСоединение.CursorLocation=3;
Попытка
мСоединение.Open(мСоединение.ConnectionString);
ПоказатьОповещениеПользователя("ОК",,"Соединение успешно установлено!");
Исключение
Сообщить("Ошибка при установке соединения: "+ОписаниеОшибки());
мСоединение=Неопределено;
КонецПопытки;
Возврат мСоединение;
КонецФункции
&НаКлиенте
Функция ВыполнитьЗапрос()
Connection = ВыполнитьПодключениеКБД();
RecordSet = Новый COMОбъект("ADODB.Recordset");
RecordSet.ActiveConnection = Connection;
RecordSet.CursorType = 1;
RecordSet.LockType = 3;
RecordGetDepartament = Новый COMОбъект("ADODB.Recordset");
RecordGetDepartament.ActiveConnection = Connection;
RecordGetDepartament.CursorType = 1;
RecordGetDepartament.LockType = 3;
Try
RecordSet.Open("SEL ECT OW_LASTNAME,OW_FIRSTNAME,OW_MIDDLENAME,OW_ID FR OM OWNER WH ERE OW_ID = 1943", Connection);
RecordGetDepartament.Open("SELECT WS_ID, WS_FULLNAME FR OM WORKSITE",Connection);
Сообщить("Ура:)");
Except
Сообщить("Не удалось выполнить запрос " + ОписаниеОшибки());
Connection.Close();
Return Connection;
EndTry;
// Обработка результатов запроса
СпрСотр = Справочники.Сотрудники;
СпрОтдел = Справочники.Подразделения;
Пока(RecordSet.EOF() = 0 И RecordGetDepartament.EOF() = 0)Цикл
ФамилияСотрудников = СокрЛП(String(RecordSet.Fields("OW_LASTNAME").Value));
НаименованиеСотрудников = СокрЛП(String(RecordSet.Fields("OW_FIRSTNAME").Value));
ОтчествоСотрудников = СокрЛП(String(RecordSet.Fields("OW_MIDDLENAME").Value));
ОтделСотрудников = СокрЛП(String(RecordGetDepartament.Fields("WS_FULLNAME").Value));
КодПодразделенияСотрудников = СокрЛП(String(RecordGetDepartament.Fields("WS_ID").Value));
КодСКУД = String(RecordSet.Fields("OW_ID").Value);
FullWorkerSKUD = ФамилияСотрудников+" "+НаименованиеСотрудников+" "+ОтчествоСотрудников;
Сообщить(НаименованиеСотрудников);
Departament = СпрОтдел.НайтиПоНаименованию(ОтделСотрудников,Истина);
Если Departament.Пустая() И ЗначениеЗаполнено(ОтделСотрудников) Тогда
НовОтдел = СпрОтдел.СоздатьЭлемент();
НовОтдел.Наименование = ОтделСотрудников;
НовОтдел.Код = КодПодразделенияСотрудников;
НовОтдел.Записать();
Departament = НовОтдел.Ссылка;
КонецЕсли;
Worker = СпрСотр.НайтиПоНаименованию(FullWorkerSKUD,Истина);
Если Worker.Пустая() И ЗначениеЗаполнено(FullWorkerSKUD) Тогда
НовСотр = СпрСотр.СоздатьЭлемент();
НовСотр.Наименование = FullWorkerSKUD;
НовСотр.Подразделение = Departament;
НовСотр.КодСотрудникаПроходная = КодСКУД;
НовСотр.Записать();
КонецЕсли;
RecordSet.MoveNext();
RecordGetDepartament.MoveNext();
КонецЦикла;
// Не забываем закрыть набор данных !!!
RecordSet.Close();
RecordGetDepartament.Close();
Connection.Close();
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот