Имя: Пароль:
1C
 
соединение 82 и Оракл
0 Evgenchik
 
16.03.11
10:16
Работали на 81. Есть вполне успешно работающая обработка, которая соединяется с базой оракла, забирает оттуда данные и загружает в 1С.
Платформа 1С:Предприятие 8.1 (8.1.15.14)
Вот такой код успешно работает

СтрокаСвязи = "Driver={Microsoft ODBC for Oracle};Data Source="+ИмяБазы+";User ID="+ИмяПользователя+";Password="+Пароль+";";

   ТЗ  = Новый ТаблицаЗначений;
   ДБ  = Новый COMОбъект( "ADODB.Connection" );
   rst = Новый COMОбъект( "ADODB.Recordset"  );
   
   Попытка
       ДБ.Provider          = "MSDAORA.1";
       ДБ.ConnectionString  = СтрокаПодключения;
       ДБ.CursorLocation    = 3;
       ДБ.ConnectionTimeOut = 600;
       ДБ.Open();
       rst.Open( ТекстЗапроса, ДБ, 1, 1 );

Теперь надо как то переходить на 82.
У вот тут затык. Не срабатывает такое соединение на платформе 1С:Предприятие 8.2 (8.2.13.205)
ошибка такая
Ошибка при вызове метода контекста (Open): Произошла исключительная ситуация (Microsoft OLE DB Provider for Oracle): ђё  - тут козяблики каждый раз разные

Что может быть? подскажите варианты?
1 ДенисЧ
 
16.03.11
10:23
TNS похоже не настроены...
2 detec
 
16.03.11
10:23
(0)

Конфа, разрядность сервера, архитектура базы (файловая, клиент-серверная)?
3 Evgenchik
 
16.03.11
10:28
у себя на компе пока тестирую, файловая база, винда XP,
конфа бухгалтерия  - но это не важно. мне надо будет использовать эту обработку в разных конфигурациях.
4 detec
 
16.03.11
10:32
Похоже, что не настроен или неверно настроен клиент Оракла. Почему не пользуетесь родным оракловым клиентом?
5 Evgenchik
 
16.03.11
10:34
клиент Оракла грят, что у нас 8й. надо поставит 10 и попробовать.
(4) как им пользоваться? там другая стрка подключения чтоли?
6 ДенисЧ
 
16.03.11
10:35
(5) ну да, другая...
У меня через клиента так идёт

_ОраклБД = Новый COMОбъект("ADODB.Connection");
_ОраклБД.Open("Provider=MSDASQL.1;Data Source=Oracle7;UID=scaner;Password=scaner;");
7 Evgenchik
 
16.03.11
10:42
а, ну этот вариант я тоже пробовал. ошибка та же
видимо все таки клиента помучать надо
8 ДенисЧ
 
16.03.11
10:43
(7) для начала клиента настрой, сделай odbc-соедниение, его настрой и проверь...
9 Evgenchik
 
16.03.11
16:03
снес все старые клиенты. поставил 10го. теперь уже не работает и на 81 :(
odbc- соединение не получается сделать, в
TNS Service Name выпадают какие то левые имена (MZђ, rsrc), а должно я так понимаю подхватываться из файлика tnsnames.ora
10 ДенисЧ
 
16.03.11
16:04
(9) переменные окружения прописал?
11 Evgenchik
 
16.03.11
16:07
нет, это где и как ?
12 ДенисЧ
 
16.03.11
16:09
как минимум TNS_Admin с путём до папки с tnsnames.ora
И каталог клиента в PATH вставить...

А как - мой компьютер - свойства - дополнительно - переменные окружения...
13 Evgenchik
 
16.03.11
16:17
(12)как минимум TNS_Admin с путём до папки с tnsnames.ora

TNS_Admin - это где такое? пути прописаны, может в реестре где еще подпраивить надо?
14 ДенисЧ
 
16.03.11
16:19
(13) TNA_Admin - это имя переменной окружения...

ЗЫ. Вот и выросло поколение, не знающее о переменных...
15 Evgenchik
 
16.03.11
16:21
да знаю я про переменные.. просто 1С мозг разъело :)
16 Evgenchik
 
16.03.11
16:23
ладно, завтра еще попытаю
17 Evgenchik
 
17.03.11
14:13
подниму ветку... значит так.
вроде настроили 10го клиента. через odbc соединяется нормально, через 81 соединяется нормально. Через 82 упорно не хочет.
вот ошибка
{Форма.Форма.Форма(30)}: Ошибка при вызове метода контекста (Open): Произошла исключительная ситуация (Microsoft OLE DB Provider for Oracle): ORA-12154: TNS:could not resolve the connect identifier specified

я так понимаю, что система не принимает имя TNS. Откуда соединение берет имя? может в реестре где посмотреть?
18 ДенисЧ
 
17.03.11
14:22
соединение берёт имя из строки соединения. Потом лезет за ним в tnsnames.ora
19 Evgenchik
 
17.03.11
15:06
пробую так:
Кодировка = "windows-1251";
Источник = "(DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 10.0.0.241)(PORT = 1521)))(CONNECT_DATA =(SERVICE_NAME = VLIGTEST)))";

СтрокаСвязи = "Provider=MSDAORA.1;Data Source="+Источник+";User ID=user;Password=pasw;CharSet=" + Кодировка + ";";

Ошибка:
(Microsoft OLE DB Provider for Oracle): ORA-12737: Instant Client Light: unsupported server character set %s
20 detec
 
17.03.11
15:10
Я бы сходил на сайт типа connectionstrings, там наверняка можно будет подобрать рабочий вариант строки соединения с каким-нибудь из клиентов.
21 Evgenchik
 
17.03.11
15:13
я бы хотел узнать где 1с82 ищет файлик tnsnames.ora
причем 1с81 этот файлик находит
22 ДенисЧ
 
17.03.11
15:14
(21) там же ищет. В переменных окружения.
Под кем запущена 81 и 82?
Разрядность?
23 ДенисЧ
 
17.03.11
15:14
более того, сама 82 ничего не ищет
24 Evgenchik
 
17.03.11
15:18
запущена под пользователем с правами админа, разрядность 32х

(23) сама не ищет...
а кто ищет? почему на 81 срабатывает?
25 Evgenchik
 
17.03.11
16:19
нашел вот что
http://www.connectionstrings.com/oracle#p12

Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=MyHost)(PORT=MyPort)))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=MyOracleSID)));User Id=myUsername;Password=myPassword;

по прежнему ругается на кодировку
ORA-12737: Instant Client Light: unsupported server character set %s
26 ДенисЧ
 
17.03.11
16:27
попробуй в hklm\software\oracle прописать переменную NLS_LANG, строковую, со значением AMERICAN_AMERICA.CL8MSWIN1251
27 Evgenchik
 
17.03.11
16:44
(26) не помогло.
подскажи, у тебя кроме
_ОраклБД = Новый COMОбъект("ADODB.Connection");
_ОраклБД.Open("Provider=MSDASQL.1;Data Source=Oracle7;UID=scaner;Password=scaner;");
есть еще другие параметры для соединения?
28 ДенисЧ
 
17.03.11
16:50
(27) в 1с - нет. ТОлько в настройках клиента
29 Evgenchik
 
17.03.11
16:57
я так понял, что у тебя odbc создано, а в 1С ты уже к нему цепляешься?
я так сделал... ошибка тля ее раздери
Ошибка при вызове метода контекста (Open): Произошла исключительная ситуация (Microsoft OLE DB Provider for ODBC Drivers): [Oracle][ODBC][Ora]ORA-12154: TNS:could not resolve the connect identifier specified