• 🔥 Бесплатный курс от Академии Кодебай: «Анализ защищенности веб-приложений»

    🛡 Научитесь находить и использовать уязвимости веб-приложений.
    🧠 Изучите SQLi, XSS, CSRF, IDOR и другие типовые атаки на практике.
    🧪 Погрузитесь в реальные лаборатории и взломайте свой первый сайт!
    🚀 Подходит новичкам — никаких сложных предварительных знаний не требуется.

    Доступ открыт прямо сейчас Записаться бесплатно

Связь 1С с Oracle

  • Автор темы Автор темы Guest
  • Дата начала Дата начала
Статус
Закрыто для дальнейших ответов.
G

Guest

Добрый день, столкнулся с проблемой, создал обработку, которая загружает с Oracle в 1С 7.7 необходимую мне информацию, у меня она чудесно работала, как только попробовал запустить её на одном из серверов(не сервер Oracle), вылезла ошибка, в строке DataBaseConnection.Open():
«Microsoft OLE DB Provider for Oracle: Произошла ошибка Oracle, для которой невозможно загрузить сообщение из Oracle.»

Код обработки:
DataBaseConnection = CreateObject("ADODB.Connection");

DataBaseConnection.ConnectionString = "Provider=MSDAORA.1;Password=**;User ID=**;Data Source=*****;Persist Security Info=True";
DataBaseConnection.Open();
…….
Мои данные поменял на ****.

Я долгими мучениями, нашел выход один:
DataBaseConnection2 = CreateObject("ADODB.Connection");
DataBaseConnection = CreateObject("ADODB.Connection");
DataBaseConnection2.ConnectionString = "Provider=OraOLEDB.Oracle;Password=**;User ID=**;Data Source=****;Persist Security Info=True";
DataBaseConnection2.Open();
DataBaseConnection.ConnectionString = "Provider=MSDAORA.1;Password=***;User ID=***;Data Source=*****;Persist Security Info=True";
DataBaseConnection.Open();

Подключившись сначала через провайдера OraOLEDB.Oracle, и не закрывая базу зайти через MSDAORA.1…. Я честно говоря чуток удивлен(мягко говоря)
Но это не есть идеальный выход с положения.
Кто что может посоветовать?


П.С. Писалось на 1С 7.7. Сервер Win Serv2003, Oracle 9.2, переустановленный ADO 2.7
 
Честно говоря, создается впечатление, что драйвер не видит сервера. Посмотрите версии драйверов на работающем и на ненормально работающем серверах, а также какие DSN прописаны на них. Что-то мне подсказывает, что дело именно в этом...
 
Спасибо за ответ, но и на моем компе и на сервере, альтернативный днс, это сервер Oracle.
 
хм .... тогда наверное где-то в строке соединения .... быть может там не хватает каких либо операторов? ибо насколько я помню ( очень смутно) для каждого треб. свои опред. операторы.

DataBaseConnection2.ConnectionString = "Provider=OraOLEDB.Oracle;Password=**;User ID=**;Data Source=****;Persist Security Info=True";
DataBaseConnection2.Open(); -может тут сразу попробовать перейти на записи через рекордсэт .... серавно она ж отрыта в упор ... и через етот драйв она должна похать ...
 
К сожалению не пахает, хотя возможно я что-то не так и делал. У меня нету опыта использывать OraOLEDB.Oracle, да и в иенете я не нашел достойного примера.
Вот код с OraOLEDB.Oracle:
DataBaseConnection = CreateObject("ADODB.Connection");
DataBaseConnection2.ConnectionString = "Provider=OraOLEDB.Oracle;Password=**;User ID=**;Data Source=****;Persist Security Info=True";
DataBaseConnection2.Open();
RecordSet = СоздатьОбъект("ADODB.Recordset");
RecordSet.ActiveConnection = DataBaseConnection;
RecordSet.CursorLocation = 3; // UseClient
RecordSet.Open("SELECT payaccount.account_num,payaccount.account_date,client.Name,CAST(client.zkpo AS char(10)) AS zkpo,CAST(payaccount.summa AS char(10)) AS suma FROM payaccount,client WHERE client.id=payaccount.client_id and payaccount.ACCOUNT_DATE>='" +ДатаНач +"' and payaccount.ACCOUNT_DATE<='"+ДатаКон+"' ORDER BY payaccount.account_date");

Для i = 1 По RecordSet.RecordCount Цикл


Оно не находит ни одной строки :(((
...............
 
rs.Open "Таблица", cn.ConnectionString, adOpenStatic, adLockOptimistic

где cn.ConnectionString
Dim cn As New ADODB.Connection
cn.ConnectionString = "Provide и т.д.
adOpenStatic, adLockOptimistic -курсоры

For h = 1 To rs.RecordCount - 1 Step 1 цикл типа

DataBaseConnection2.Open(); - тогда ету страку можно убрать - нам ненада ее открывать , ибо мы сразу рекордсэт открываем тупо влоб на таблицу сразу ( в моем примере )




просто различные структуры получения данных из разных способов .... гдето Рекорды, Гдето филды, гдето ваобще я вное обращение по адресу .... жаль но наверное более я не вспомню ... перестал этим заниматься после того как сервак положил и его реанимировали 5 часиков)) сказали более не экспереминтировать))




Айайайайай - вспомнил .... кароче все у тебя было нормально .....
Есть такая фича - делаешь Текстовый файл ( меняешь у него разрежение на UDL) и просто генерируешь строку соединения для етого компа - он автоматом посчитает что нада ему и что нет, и будет тебе коннект. Попробуй ее- и там кстати сразуже можно проверить идет коннект или нет
 
Так кто спорит, что будет видно? При настройке датасорса тоже будет видно.
 
Аффтор здесь )))
Извините, на счет DSN и впрямь не заметил, с ним все нормально, это 100% настроено идентично моему компу…
Да и если б он был не верен, то я б вообще не смог бы подрубиться к базе.

И плюс к тому же на серваке стоит прога, которая также работает с этой же базой оракла, и у неё все настройки подключения такие же как я задаю в 1С и она работает .

На счет UDL файла, интересная идея, спасибо, я попробую и отпишусь, помогло ли…
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Взломай свой первый сервер и прокачай скилл — Начни игру на HackerLab