|
Подключение из 1С к базе Firebird | ☑ | ||
---|---|---|---|---|
0
Ychenik1c
06.07.21
✎
13:16
|
Добрый день. Не получается подключиться к базе. Ошибка: {ВнешняяОбработка.ВнешняяОбработка1.Форма.Форма.Форма(17)}: Ошибка при вызове метода контекста (Open): Произошла исключительная ситуация (Microsoft OLE DB Provider for ODBC Drivers): [Microsoft][Диспетчер драйверов ODBC] Источник данных не найден и не указан драйвер, используемый по умолчанию
Форумы почитал. Вроде всё проверил. Скажу сразу подключаюсь первый раз. Вот код &НаКлиенте Процедура ПодключениеКБазе(Команда) Соединение = Новый COMОбъект("ADODB.Connection"); //DSN=FireBird;Driver={Firebird/InterBase(r) driver};Dbname=23-Video01:c:\Program Files\smdr- 2\db\smdrkey.fdb;CHARSET=NONE;PWD=000111;UID=ALEX;Client=gds32.dll Соединение.ConnectionString = "DSN=FireBird;Driver={Firebird/InterBase(r) driver};Dbname=" + СокрЛП("192.168.***.210") + ":" + СокрЛП("*****\DVIZ\DVIZ.FDB") + ";CHARSET=NONE;Uid=" + СокрЛП("SYSDBA") + ";Pwd=" + СокрЛП("masterkey") + ";Client=gds32.dll"; Соединение.ConnectionTimeout = 60; Соединение.CursorLocation = 3; //Состояние("Попытка соединения с ); Попытка Соединение.Open(); //Состояние("Читаю данные ..."); Исключение Сообщить(ОписаниеОшибки()); КонецПопытки; КонецПроцедуры |
|||
1
vde69
06.07.21
✎
13:20
|
1. код исполняется на сервере или на клиненте?
2. под какими правами? 3. драйве установлен с именем "Firebird/InterBase(r) driver" должно совпадать до буквы |
|||
2
acht
06.07.21
✎
13:25
|
4. Разрядность драйверов должна совпадать с разрядностью вызывающего процесса
|
|||
3
acht
06.07.21
✎
13:27
|
(0) > СокрЛП("192.168.***.210")
> СокрЛП("SYSDBA") + ";Pwd=" + > СокрЛП("masterkey") + ";Client=gds32.dll"; Звездочками закрыто самое ценное, да |
|||
4
Kassern
06.07.21
✎
13:30
|
(3) не удивлюсь если там 0 или 1 вместо звездочек))
|
|||
5
ДенисЧ
06.07.21
✎
13:31
|
(3) Тебе очень интересен пароль от 192,168*
Хочешь, публично назову пароль от 10,0,0,49 ? |
|||
6
Kassern
06.07.21
✎
13:34
|
(5) мне просто интересно, на кой ТС туда звездочки вписал))
|
|||
7
ДенисЧ
06.07.21
✎
13:39
|
(6) Это специальный синтаксис. Чтобы по всей сетке искать доступную базу ))
|
|||
8
acht
06.07.21
✎
14:38
|
13 лет кусок кода вылеживался, однако - https://forum.vingrad.ru/topic-197194.html
|
|||
9
Eiffil123
06.07.21
✎
15:19
|
(8) некоторый код как вино
|
|||
10
Garykom
гуру
06.07.21
✎
15:24
|
(9) вино со временем в плохих условиях портится
и ваш код тоже протух например каким образом из линукс, макоси или андроида будем к firebird коннектиться? лично я вот так https://github.com/nakagami/firebirdsql |
|||
11
Garykom
гуру
06.07.21
✎
15:27
|
(10)+ простейшая консольная утилитка, на вход ей строку подключения (но можно и раздельно сервер, логин, пароль и т.д.) и текст sql запроса
на выходе выдает в нужном виде (json, csv и т.д.) когда на постоянку удобней поднять микросервис и через http из 1С его юзать |
|||
12
Kassern
06.07.21
✎
15:32
|
(10) а зачем человеку, у которого все это дело на винде пилить в мультиплатформенность?
|
|||
13
Мультук
гуру
06.07.21
✎
15:42
|
(0)
1) А что-нибудь другое, например IB-EXPERT, к этой базе с данного компьютера подключается ? 2) Клиент от нужного firebird установлен? Т.е. gds32.dll физически на компьютере существует ? 3) https://firebirdsql.org/en/odbc-driver/ 4) https://www.connectionstrings.com/firebird/ |
|||
14
МихаилМ
06.07.21
✎
15:45
|
||||
15
kubik_live
06.07.21
✎
15:56
|
У меня так (рабочий):
мСтрокаСоединения="driver=Firebird/InterBase(r) driver; |Dialect=3; |CHARSET=NONE; |Uid=SYSDBA; |Pwd=masterkey; |Dbname="+СокрЛП(Объект.ПутьКБД); DBConn=Новый COMОбъект("ADODB.Connection"); DBConn.ConnectionString=мСтрокаСоединения; DBConn.ConnectionTimeOut=180; DBConn.CursorLocation=3; Попытка DBConn.Open(DBConn.ConnectionString); //ПоказатьОповещениеПользователя("ОК",,"Соединение к БД FireBird успешно установлено!"); Исключение Сообщить("Ошибка при установке соединения: "+ОписаниеОшибки()); Сообщить("Строка соединения: "+мСтрокаСоединения); DBConn=Неопределено; КонецПопытки; |
|||
16
kubik_live
06.07.21
✎
16:07
|
+(15)
&НаСервере |
|||
17
Garykom
гуру
06.07.21
✎
16:16
|
(12) 1. лучше взять изначально мультиплатформенный инструмент, чем потом страдать переписывая, особенно если это проще и надежней
2. права, что на серверах с админами бывает сложнорешаемо 3. ado|ole|com is deprecated (официальное мнение MS) 4. быстрее, лучше и надежней |
|||
18
Kassern
06.07.21
✎
16:43
|
(17) Ну вот смотрите. Человек к примеру работает на предприятии программистом 1с, в других языках он не очень. Все предприятие на винде, вопросы с доступом и правами решаемы и обычно проблем не возникает (Ставишь задачу, тебе ее делают). Либо этот человек делает работку на аутсорсе для какой нить конторы. И вы предлагаете ему вместо типового решения за базе платформы 1с скачать стороннюю утилиту, поставить го на сервере, что в итоге подтянется с гита и будет исполняться хз. Как это повлияет на работу системы так же хз. В общем имхо, если у тебя все на винде завязано, не надо лепить велосипедов и ставить сторонние проги, если в этом нет прямой необходимости.
|
|||
19
Garykom
гуру
06.07.21
✎
16:58
|
(18) 1С уже давно не один язык а несколько
как минимум кроме ЯП 1С еще язык запросов очень часто js скрипты снаружи через ole или внутри полеhtml и на называть "Новый COMОбъект("ADODB.Connection")" типовым решением довольно сложно типовое (которое юзают редко на практике ибо куча трабл) это Внешние Источники Данных |
|||
20
Garykom
гуру
06.07.21
✎
16:59
|
(19)+ в смысле не вижу проблемы выучить еще один язык и юзать его в своей работе
и никакое го на сервере и подтягивание с гита не требуетс обычная .exe которую в макет засунул а когда надо сохранил и выполнил |
|||
21
Garykom
гуру
06.07.21
✎
17:00
|
(20)+ ВК же юзаем? вот тоже самое почти, только вместо DLL компилим EXE
|
|||
22
Kassern
06.07.21
✎
17:08
|
(21) конечно юзаем, когда по другому не получается, либо очень медленно. В данном случае смысла особого нет. В свое время юзал стороннюю библиотеку, чтобы работать с sftp, так как 1ска до сих пор не умеет с ним работать. Так же через эту библиотеку в разы быстрее на обычный фтп гонять файлы, чем штатный 1совский Новый FTPсоединение. Но так же можно и с http работать через всякие внешние утилиты и библиотеки, а можно через штантый конструктор. И в большинстве задач, штатных интсрументов за глаза хватает. В общем использование внешних компонент должно быть целесообразным, а не вот смотрите я могу через питон поднять сервис и гонять файлики, я потратил на это 20часов, оплатите пожалуйста.
|
|||
23
Garykom
гуру
06.07.21
✎
17:15
|
(22) 20 часов это вы с глюками адо и настройками odbc провозитесь с правами не левом серваке
а обычная консольная прога на go пишется за час и работает где угодно |
|||
24
Ychenik1c
06.07.21
✎
17:51
|
(13) 1. Ib expert на этом компьютере базу открывает.
|
|||
25
Ychenik1c
06.07.21
✎
18:48
|
(15) Ошибка при установке соединения: {ВнешняяОбработка.ВнешняяОбработка1.Форма.Форма.Форма(164)}: Ошибка при вызове метода контекста (Open): Произошла исключительная ситуация (Microsoft OLE DB Provider for ODBC Drivers): [ODBC Firebird Driver]Unable to connect to data source: library 'gds32.dll' failed to load
|
|||
26
Ychenik1c
06.07.21
✎
19:13
|
||||
27
Ychenik1c
06.07.21
✎
19:17
|
Ошибка при установке соединения: {ВнешняяОбработка.ВнешняяОбработка1.Форма.Форма.Форма(164)}: Ошибка при вызове метода контекста (Open): Произошла исключительная ситуация (Microsoft OLE DB Pr
|
|||
28
OldCondom
06.07.21
✎
20:16
|
у тебя в каждом сообщении написано в чем именно ошибка. По английски.
|
|||
29
OldCondom
06.07.21
✎
20:19
|
gds32.dll не загружает. Собственно, failed to load.
|
|||
30
ДедМорроз
06.07.21
✎
20:27
|
Там нужно ODBC драйвер той же битности,что и 1с.
И внимательно указать имя драйвера и дополнительные параметры согласно его описанию. |
|||
31
kubik_live
06.07.21
✎
20:30
|
(25) А если убрать из строки инициализации?:
";Client=gds32.dll" у меня без этого норм. грузится |
|||
32
kubik_live
06.07.21
✎
20:34
|
+(31) Сия библиотека в клиентской и серверной части БД FireBird присутствует
|
|||
33
ДедМорроз
06.07.21
✎
20:35
|
А вообще firebird ожидает подключение из-вне и к данной базе?
|
|||
34
ДедМорроз
06.07.21
✎
20:37
|
Еще нужно помнить,что пути до баз желательно писать как \\.\далееПуть,т.к.сервер firebird пути пользователя не видит.
На windows 10 у меня без точки не взлетело. |
|||
35
kubik_live
06.07.21
✎
20:39
|
(33) Я 3 года назад "высасывал" из FB в 1С УТ11.
Клиент переходил на 1С ДОлго разбирался с данными, а так всё супер прогрузилось |
|||
36
kubik_live
06.07.21
✎
20:41
|
(34) У меня просто путь к файлу *.gdb
|
|||
37
kubik_live
06.07.21
✎
20:42
|
&НаКлиенте
Процедура ПутьКБДНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка) СтандартнаяОбработка=Ложь; ОписаниеОповещения=Новый ОписаниеОповещения("ПутьКБДНачалоВыбораЗавершение",ЭтотОбъект); ДиалогВыбораФайла=Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие); ДиалогВыбораФайла.Заголовок="Укажите файл базы:"; ДиалогВыбораФайла.ПредварительныйПросмотр=Ложь; ДиалогВыбораФайла.МножественныйВыбор=Истина; ДиалогВыбораФайла.Фильтр="gdb-файлы|*.gdb"; ДиалогВыбораФайла.Показать(ОписаниеОповещения); КонецПроцедуры |
|||
38
kubik_live
06.07.21
✎
20:48
|
(34) Верно
Каюсь: &НаКлиенте Процедура ПутьКБДНачалоВыбораЗавершение(мФайлов,рПараметры) Экспорт Если мФайлов=Неопределено Тогда Возврат КонецЕсли; // Объект.ПутьКБД="\\*****\"+СокрЛП(мФайлов[0]); КонецПроцедуры |
|||
39
Ychenik1c
07.07.21
✎
15:13
|
Походу придётся через ексель данные грузить(( Уже по всякому пробую что есть в интернете. А там потом ещё запросы делать к базе. Хоть кажется что там возможно будет легче, но не факт)
Невозможно установить соединение с Firebird: {ВнешняяОбработка.ВнешняяОбработка1.Форма.Форма.Форма(245)}: Ошибка при вызове метода контекста (Open): Произошла исключительная ситуация (Microsoft OLE DB Provider for ODBC Drivers): [Microsoft][Диспетчер драйверов ODBC] Источник данных не найден и не указан драйвер, используемый по умолчанию ФайлБазы = "D:\infobase\DVIZ\DVIZ.FDB"; ФайлДЛЛ = "fbclient.dll"; Соединение = Новый COMОбъект("ADODB.Connection"); Соединение.ConnectionString = "driver=Firebird/InterBase® driver; Dialect=3; CHARSET=WIN1251; Uid=SYSDBA;Pwd=masterkey;Dbname="+ФайлБазы + ";client="+ФайлДЛЛ; Соединение.ConnectionTimeOut = 1200; Соединение.CursorLocation = 3; Попытка Соединение.Open(Соединение.ConnectionString); Сообщить("Соединение успешно уставовлено !!!"); Исключение Сообщить("Невозможно установить соединение с Firebird: | "+ОписаниеОшибки()); Возврат; КонецПопытки; |
|||
40
МихаилМ
07.07.21
✎
15:19
|
(39)
што ето "..InterBase®..." ??? |
|||
41
Ychenik1c
07.07.21
✎
15:33
|
(40) Точно.
Исправил на: Соединение.ConnectionString = "driver=Firebird; Dialect=3; CHARSET=WIN1251; Uid=SYSDBA;Pwd=masterkey;Dbname="+ФайлБазы + ";client="+ФайлДЛЛ; Ошибка не поменялась |
|||
42
Ychenik1c
07.07.21
✎
15:40
|
||||
43
МихаилМ
07.07.21
✎
16:00
|
(0)
мне помогает http://alekseyrybakov.narod.ru/ViewODBC.html для получения правильного ConnectionString .к тому же это прога умеет разименовывать дсн. |
|||
44
Ychenik1c
07.07.21
✎
16:22
|
(43) По данной строке ViewODBC открывает базу данных, а 1С нет
Driver=Firebird/InterBase(r) driver;Dbname=D:\infobase\DVIZ\DVIZ.FDB;PWD=masterkey;UID=SYSDBA; |
|||
45
Kassern
07.07.21
✎
16:32
|
(44) а служба 1ски на том же компе, где и ViewODBC?
|
|||
46
Ychenik1c
07.07.21
✎
16:33
|
(45) Сервер один. База файловая.
|
|||
47
Kassern
07.07.21
✎
16:54
|
(46) операционка какая? 1ска версия платформы какая и скольки разрядная?
|
|||
48
Ychenik1c
07.07.21
✎
17:13
|
Windows 2016 x64
1c 32-битная 8.3.18.1383 x86 |
|||
49
Ychenik1c
08.07.21
✎
04:07
|
Проблема походу с библиотекой. Её во все папки скопировал.
Невозможно установить соединение с Firebird: {ВнешняяОбработка.ВнешняяОбработка1.Форма.Форма.Форма(241)}: Ошибка при вызове метода контекста (Open): Произошла исключительная ситуация (Microsoft OLE DB Provider for ODBC Drivers): [ODBC Firebird Driver]Unable to connect to data source: library 'gds32.dll' failed to load |
|||
50
OldCondom
08.07.21
✎
04:31
|
(49) Серьезно? Проблема все таки с библиотекой? То есть надпись "library 'gds32.dll' failed to load" все таки не врет? Какая неожиданность.
1) читаешь в интернете, какой драйвер тебе нужен 2) идешь на офф сайт firebird и качаешь нужный дравйвер 3) читаешь в интернете как устанавливать odbc + устанавливаешь 4) открываешь справку в скачанном драйвере(да, не поверишь, она там есть), узнаешь пример строки подключения 5) подключаешься наконец из 1С |
|||
51
Адинэснег
08.07.21
✎
06:08
|
(4) не удивлюсь, если на месте звездочек - зведочки
|
|||
52
Kassern
08.07.21
✎
09:06
|
(51) не ну это уже перебор))
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |