Имя: Пароль:
1C
1С v8
Внешние источники данных (Oracle)
0 trooba
 
11.12.20
15:39
Создан внешний источник данных в клиент-серверной базе 1с 8.2.19.130. Производится попытка выполнить код:

Если ВнешниеИсточникиДанных.СПР.ПолучитьСостояние()=СостояниеВнешнегоИсточникаДанных.Отключен Тогда
        
        ПараметрыПодключения=ВнешниеИсточникиДанных.СПР.ПолучитьОбщиеПараметрыСоединения();
        ПараметрыПодключения.СтрокаСоединения="DRIVER={Microsoft ODBC for Oracle}; UID=Пользователь; PWD=Пароль; SERVER=Сервер;";
        ПараметрыПодключения.СУБД="Oracle";
        ВнешниеИсточникиДанных.СПР.УстановитьОбщиеПараметрыСоединения(ПараметрыПодключения);
    
    КонецЕсли;
    
    ВнешниеИсточникиДанных.СПР.УстановитьСоединение();
    
    Query = Новый Запрос;

Query.Текст = "ВЫБРАТЬ
                  |    FIDCMN.DOC_NUMBER,
                  |    FIDCMN.DOC_DATE,
                  |    FIBDOC.IS_UNLOAD
                  |ИЗ
                  |    ВнешнийИсточникДанных.СПР.Таблица.APR_FIDCMN КАК FIDCMN
                  |        ЛЕВОЕ СОЕДИНЕНИЕ ВнешнийИсточникДанных.СПР.Таблица.APR_FIBDOC КАК FIBDOC
                  |        ПО FIBDOC.DOC_CODE = FIDCMN.DOC_CODE
                  |ГДЕ
                  |    FIDCMN.RECORDID_DCTP = 722
                  |    И НЕ FIDCMN.DOC_NUMBER ЕСТЬ NULL
                  |    И FIDCMN.DOC_DATE МЕЖДУ &Нач И &Кон";    

Query.УстановитьПараметр("Нач",НачалоПериода.Дата);
    Query.УстановитьПараметр("Кон",КонецДня(КонецПериода.Дата));
    
    Выборка=Query.Выполнить().Выбрать();


Выдается ошибка, что это может быть и как лечить? Сразу оговорюсь, что можно через ADO, но хотелось через ВИД.

по причине:
Ошибка выполнения запроса
по причине:
Ошибка внешней базы данных:
ошибка при выполнении запроса
по причине:
Ошибка ODBC. SQLSTATE: 42000
Номер ошибки: 907
Описание: [Microsoft][ODBC driver for Oracle][Oracle]ORA-00907: missing right parenthesis
1 ДНН
 
11.12.20
15:45
(0) Возьми все условия в скобки
2 acht
 
11.12.20
15:48
(0) > что это может быть
8.2.19.130
3 trooba
 
11.12.20
15:49
(1) Делал, не помогает
4 ДНН
 
11.12.20
15:52
(3)  ПО FIBDOC.DOC_CODE = FIDCMN.DOC_CODE
это тоже?

Попробуй оставить одну таблицу и без условий, проверь. Если ошибки не будет то добавь соединение, снова проверь. Потом условия и т.д.
5 trooba
 
11.12.20
15:53
(4) С одной работает, проблема в соединении, как я понял
6 trooba
 
11.12.20
15:54
(4) Все в скобках, это тоже, ошибка такая же, тип соединения меняешь, код ошибки становится 0
7 trooba
 
11.12.20
16:16
Через ADO запрос работает успешно, текст

    Query = "Select fidcmn.doc_number,
            | fidcmn.doc_date,
            | fibdoc.doc_number,
            | fibdoc.is_unload
            |    from apr.fidcmn
            |    left outer join apr.fibdoc
            |    on fibdoc.doc_code = fidcmn.doc_code
            |    where fidcmn.recordid_dctp = 722 and fidcmn.doc_number is not null
          |    and fidcmn.doc_date >= to_date('@@@@','DD-MM-YYYY')
            |    and fidcmn.doc_date <= to_date('####','DD-MM-YYYY')";
8 trooba
 
14.12.20
09:08
Подниму, может у кого еще мысли появятся...
9 mikecool
 
14.12.20
09:31
(8) не смущает, что запросы разные? попробуй свои параметры к ту_дейт привести
10 trooba
 
14.12.20
09:36
(9) Они были 1 в 1, толку не было, что смущает? Что тут отличается? То, что период по другому или, что номер убран, который не нужен? Проблема возникает именно в соединении, как ждая из таблиц по отдельности данные выводит
11 trooba
 
14.12.20
09:37
(9) К ту дейт? Как? В таком же формате в текст запроса? Нет- ошибка, запросы 1с не позволяют этого делать
12 Конструктор1С
 
14.12.20
16:24
Твой запрос можно переписать на внутреннее соединение
13 Конструктор1С
 
14.12.20
16:25
А не, вру, фильтруется только по правой таблице
14 trooba
 
14.12.20
16:25
(12) изменял вид соединения- дает ошибку с кодом 0
15 Конструктор1С
 
14.12.20
16:31
Попробуй через другой драйвер коннектиться
16 trooba
 
14.12.20
16:49
(15) Через этот драйвер, через ado все работает.
17 Конструктор1С
 
15.12.20
03:45
(16) ВИД сам по себе драйвера не поставляет, а коннектится через имеющиеся. У нас ВИД к Oracle через OraOLEDB.Oracle.1 коннектится
18 sdf
 
15.12.20
08:18
(0) мало исходных данных:
-другие запросы работают?
-в пользовательском режиме 1с видит эти таблицы?
-если условие убрать - запрос выполнится?
-даты в оракле в каком формате?

поддерживаю идею насчет драйвера - лучше использовать нативный оракловый
19 trooba
 
16.12.20
09:57
(18) Все да. "поддерживаю идею насчет драйвера - лучше использовать нативный оракловый" Который именно?
20 trooba
 
16.12.20
09:59
(18) через адодб все круто, все работает. Заморочился и решил переписать на ВИД. Не выходит каменный цветок.
21 trooba
 
16.12.20
10:00
(18) В запросе же видно, что подменяю текст с датой.... на "ДД-ММ-ГГГГ"
22 Конструктор1С
 
16.12.20
13:29
(19) поэкспериментируй, попробуй несколько различных. Сейчас у тебя мелкософтовский, воткни оракловский
Я не хочу быть самым богатым человеком на кладбище. Засыпать с чувством, что за день я сделал какую-нибудь потрясающую вещь — вот что меня интересует. Стив Джобс