Форум на Kuban.ru (http://forums.kuban.ru/)
-   Территория 1С (http://forums.kuban.ru/f1040/)
-   -   v8.2 Внешний источник данных - таблицы Oracle (http://forums.kuban.ru/f1040/v8_2_vneshnij_istochnik_dannyh_-_tablicy_oracle-4388077.html)

awinter 21.06.2013 12:24

v8.2 Внешний источник данных - таблицы Oracle
 
Добален Внешний источник данных – несколько таблиц Oracle (строка подключения - "Driver={Microsoft ODBC for Oracle**;Server="+тнс+";Uid=”+юзер+”;Pwd="+пароль)
Подключаемся, все ок.

Запрос1:

ВЫБРАТЬ
| Т1.П11,
| Т1.П12,
| …
|ИЗ
| ВнешнийИсточникДанных.ВнешнийИсточник1.Таблица.Т1 КАК Т1
|ГДЕ
|Т1.П1= &парам1
|И …

Запрос1 отрабатывает на Ура.

Усложняем запрос, добавляя еще одну табличку.
Запрос2:

ВЫБРАТЬ
| Т1.П11,
| Т1.П12,
| Т2.П21,
| …
|ИЗ
| ВнешнийИсточникДанных.ВнешнийИсточник1.Таблица.Т1 КАК Т1
| ЛЕВОЕ СОЕДИНЕНИЕ

|ВнешнийИсточникДанных.ВнешнийИсточник1.Таблица.Т2 КАК Т2
| ПО Т1.П11 = Т2.П21 И Т1.П12 = Т2.П21
|ГДЕ
|Т1.П1= &парам1
|И …

Поучаю ошибку:

{Обработка.ПроверкаЗагрузкиНакладных.Форма.Форма.Форма(92)**: Ошибка при вызове метода контекста (Выполнить)
ТЗ = Запрос.Выполнить().Выгрузить();
по причине:
Ошибка выполнения запроса
по причине:
Ошибка внешней базы данных:
ошибка при выполнении запроса
по причине:
Ошибка ODBC. SQLSTATE: NA000
Номер ошибки: 928
Описание: [Microsoft][ODBC driver for Oracle][Oracle]ORA-00928: отсутствует ключевое слово SELECT

В чем секрет?

bma1 21.06.2013 12:42

Попробуй сперва в пакетном запросе данные из внешних источников закинуть во временные таблицы, а потом уже их соединять.
PLSQL в интертрепации Оракла имеет недольшие диалектные отличия от T-SQL от Микрософта.

awinter 21.06.2013 13:00

bma1, внешний источник данных и временная таблица - не совместимы. Выдается ошибка. Об этом же пишет народ, гуглила. Ну и пробовала. Забыла как то сообщение об ошибке звучит.

awinter 21.06.2013 13:04

Можно чз ADODB сделать. Одну из обоработок так и реализовала. Просто хотелось использовать Внешние источники данных. Нагляднее показалось. Впечатление, что 1С как-то криво преобразует строку запроса.

bma1 21.06.2013 13:13

2(2) А если по тупому, одним запросом получить данные и выгрузить результат в таблицу значений, а во вотором запросе ее загрузить?

bma1 21.06.2013 13:14

4+ в смысле через запрос.Выполнить().Выгрузить()

Billi 21.06.2013 13:16

Если у тебя в тексте запроса нет ошибок, то всё должно работать.

Billi 21.06.2013 13:30

Попробуй создать запрос конструктором запросов.

awinter 21.06.2013 13:51

(5) bma1, ага, я думала об этом варианте уже)) Запрос к одиночной табличке внешнего источника в ТЗ1, еще один - к ТЗ2. потом запрос к этим ТЗ...

(6) В запросе ошибок по идее нет. Делала с помощью конструктора.
Хотя я уже в сомнении. Накидала отчет, запрос тот же с помощью конструктора. При запуске выдает:

Ошибка исполнения отчета
по причине:
Ошибка получения данных
по причине:
Ошибка создания набора данных "НаборДанных1"
по причине:
Ошибка при исполнении запроса набора данных
по причине:
Ошибка выполнения запроса
по причине:
Ошибка внешней базы данных:
ошибка при выполнении запроса
по причине:
Ошибка ODBC. SQLSTATE: 42000
Номер ошибки: 0
Описание: [Microsoft][ODBC driver for Oracle]Ошибка синтаксиса или нарушение прав доступа

Блин, ну не знаю где в таком простейшем запросе могла закрасться синтаксическая ошибка. не верю!))

awinter 21.06.2013 13:55

о! а не может, дело быть в неуточнении схемы, т.е.при обращении к табличкам оракла надо перед ней, таблицей, еще схему прописать чз точку... хотя в источник же уже эти таблицы попали и 1С их видит, значит дело не в этом

awinter 21.06.2013 14:02

(5) с ТЗ наверное вариант в моем случае не очень, т.к. реальный запрос в себе соединяет 4 таблички. неудобно получится. текста много... но для 2х сойдет ;)

Billi 21.06.2013 14:30

8-awinter >Посмотри в тех.журнале какой запрос уходит в одбс драйвер.
Если запрос корректный, то проблема в одбс, попробуй через родной оракловский драйвер подключиться.

awinter 21.06.2013 14:55

Billi, спасибо, в пн гляну! домой пора бежать)
как поняла, его еще подключить надо. Ни разу не пользовала.


Текущее время: 20:05. Часовой пояс GMT +3.