Имя: Пароль:
1C
1C 7.7
v7: 1c7.7 обмен данными c Oracle
0 Ан_Дрей
 
naïve
27.01.19
08:48
Доброго времени суток.
Как из 1С7.7 помощью ADOBE приконнектится к серверу ORACLE?
Дано:
сервер moon (m1111).  
MOON =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 123.4.56.78)(PORT = 1111))
)
(CONNECT_DATA = (SID = PRD))
)

Подключение ко всем серверам осуществлять пользователем XXXX с паролем xxxx.

После подключения необходимо инициализировать окружение вызовом функции:
xxeq_interface.login(user_name, password) RETURN numeric
где user_name, password - имя пользователя и пароль входа в OEBS.
1 ДенисЧ
 
27.01.19
09:08
А в чём именно проблема?
Вызвать функцию? Или создать подключение?
2 Ан_Дрей
 
naïve
27.01.19
12:30
создать подключение.
попробовал так:

Соединение = СоздатьОбъект("ADODB.Connection");
ConnectionString = "driver={SQL Server}; server=
  |(DESCRIPTION =
  |  (ADDRESS_LIST =
  |    (ADDRESS = (PROTOCOL = TCP)(HOST = 123.4.56.78)(PORT = 1111))
  |  )
  |  (CONNECT_DATA = (SID = PRD))
  |)
  |; uid=XXXX; Pwd=xxxx; Database =moon";
Соединение.Open(ConnectionString);

не соединяется
3 ДенисЧ
 
27.01.19
12:31
4 Ан_Дрей
 
naïve
27.01.19
12:34
так не пробовал.
а как через 77 оформить?
5 Ан_Дрей
 
naïve
27.01.19
12:37
ps все реальные данные\адреса заменены
6 rsv
 
27.01.19
12:37
(0) создайте файлик на машине подключения с расширением UDL . Откройте его , интерактивно настройте подключение  и нажмите кнопку тест. Это очевидней и наглядней. Путь к файлику прошишите в строке ADO
7 ДенисЧ
 
27.01.19
12:40
(4) Ну сформируй строку подключения к серверу, как нарисовано по ссылке. И подключайся.
Ничего хитрого там нет.
Максимум - повозиться придётся с 32/64 бит и кодировкой.
8 Ан_Дрей
 
naïve
27.01.19
12:40
спасибо. буду пробовать.
9 Ан_Дрей
 
naïve
27.01.19
12:42
(7) а где  
(ADDRESS = (PROTOCOL = TCP)(HOST = 123.4.56.78)(PORT = 1111))
прописывать?
10 ДенисЧ
 
27.01.19
12:44
(9) В TNSnames.ora
11 ДенисЧ
 
27.01.19
12:44
12 trdm
 
27.01.19
16:26
(11) кто на том форуме хозяйничает?
у него капча поехала, не зарегиться не восстановить пароль.
13 trdm
 
27.01.19
16:32
+(12) рукожопству нет пределов :)
https://prnt.sc/mct9fe
14 ДенисЧ
 
27.01.19
17:26
(11) Не знаю,  я по ссылке из гугля туда прошёд
15 Svetka
 
28.01.19
08:44
// ---Прописать в файле tnsnames.ora
GP =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 123.4.56.78)(PORT = 1111))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = GP)
    )
  )



//---функция подключения в 1С
Перем ТаймАутКоманды,ТаймАутСоединения, Соединение, Команда, Результат;

Функция ОткрытиеСоединения()     

    Соединение    = СоздатьОбъект("ADODB.Connection");
    Команда        = СоздатьОбъект("ADODB.Command");  
    Соединение.Provider="MSDAORA.1";
    Соединение.ConnectionString="Data Source=GP;User ID=MIGR;Password=book2018";
    Если ПустоеЗначение(ТаймАутКоманды)=0 Тогда
        Соединение.CommandTimeout=ТаймАутКоманды;              
    Иначе
        Соединение.CommandTimeout=30;                        
    КонецЕсли;
    Если ПустоеЗначение(ТаймАутСоединения)=0 Тогда
        Соединение.ConnectionTimeOut=ТаймАутСоединения;
    Иначе
        Соединение.ConnectionTimeOut=15;
    КонецЕсли;    
    Соединение.CursorLocation=2;     
    Попытка
        Соединение.Open();
        Сообщить("Соединение c MIGR установлено");
    Исключение
        Сообщить("Нет коннекта к MIGR. Повторите попытку");
        Возврат ПолучитьПустоеЗначение();
    КонецПопытки;
    Возврат 1;
КонецФункции

//---Обращение к функции, перебор рекордсета

Если ОткрытиеСоединения() = 1 Тогда
    Команда.ActiveConnection=Соединение;
    Команда.CommandType=1;

    СтрокаСелекта = "SELECT kod, nreg FROM kod_amort WHERE pred= "+Константа.КодБазы;

    Команда.CommandText = СтрокаСелекта;  
    Результат = Команда.Execute();    
    Если Результат.EOF()=0 Тогда
        Пока Результат.EOF()=0 Цикл
            Состояние("Перебор "+Число(СокрЛП(Результат.Fields.Item("nreg").Value)));
            ТЗ.НоваяСтрока();
            ТЗ.РегНомер = Число(СокрЛП(Результат.Fields.Item("nreg").Value));
            ТЗ.Код = СокрЛП(Результат.Fields.Item("kod").Value);
            Результат.MoveNext();                    
        КонецЦикла;
    КонецЕсли;
    Соединение.Close();
    Сообщить("Получены данные","i");
Иначе
    Предупреждение("Не получены данные");
    Возврат;
КонецЕсли;
16 Ан_Дрей
 
naïve
03.02.19
17:49
Microsoft OLE DB Provider for Oracle: ORA-00604: error occurred at recursive SQL level %s
ошибка чото делать ПК Цшт 7 32 bit
17 Ан_Дрей
 
naïve
03.02.19
17:51
пк Win 7 что можно сделать ?
18 ДенисЧ
 
03.02.19
18:05
19 Ан_Дрей
 
naïve
03.02.19
18:14
(18) Я только пытаюсь приконнектится к базе.пеще ничего не делаю.
Основная теорема систематики: Новые системы плодят новые проблемы.