Имя: Пароль:
1C
1С v8
База Oracle как внешний источник данных
0 Amfiaray
 
18.07.18
15:45
Добрый день!

Есть БД на Oracle.
Добавил её как внешний источник данных, добавил таблицы и функции.
При подключении ошибок нет, но если попытаться обратиться к функции или открыть таблицу выходит ошибка "Ошибка ODBC. SQLSTATE: HY000 Номер ошибки: 923 Описание: [Oracle][ODBC][Ora]ORA-00923: ключевое слово FROM не найдено там, где оно ожидалось".
После удаления и нового добавления внешнего источника ситуация не изменилась.
При этом добавление этого же источника на другой базе на этом же сервере прошло отлично, источник добавился и таблицы открываются.

Подскажите как решить проблему?
1 fedoss
 
18.07.18
16:15
Тип СУБД точно "Oracle Database" стоит?
2 Amfiaray
 
18.07.18
16:23
(1) Да
3 Amfiaray
 
18.07.18
16:27
Очистил кэш - не помогло.
Удалил информационную базу на сервере 1С и снова добавил - не помогло.
4 fedoss
 
18.07.18
16:31
Ну, как вариант, включить debug у ODBC драйвера и посмотреть, какой запрос уходит к СУБД и чем он отличается от успешного.
5 Necessitudo
 
18.07.18
17:08
А какой драйвер-то используете?
6 Amfiaray
 
18.07.18
17:16
(4) А как его включить?
(5) DRIVER={Oracle in OraClient11g_home1}
7 PloAl
 
18.07.18
17:29
(0) В свойствах Таблиц, Полей заполнено "Имя в источнике данных"?
8 Amfiaray
 
18.07.18
17:35
(7) Да, всё заполнено

Попробовал:
1. Удалить источник данных;
2. Сохранить конфигурацию;
3. Перезапустить сервер;
4. Снова добавить источник данных;

Помогло, всё заработало, но после первого открытия таблицы из внешнего источника снова появилась ошибка и всё перестало работать.
9 rsv
 
18.07.18
17:42
Откройте excel на машине где клиент ораела стоит и через получение внешних данных цепанитесь к табличке .
10 Amfiaray
 
19.07.18
07:11
переделал всё на прямое подключение к БД и всё заработало, вот код:
ТаблицаЗаписей = Новый ТаблицаЗначений;
ТаблицаЗаписей.Колонки.Добавить("ID");
ТаблицаЗаписей.Колонки.Добавить("DOC_ID");
ТаблицаЗаписей.Колонки.Добавить("TYPE_ID");
ТаблицаЗаписей.Колонки.Добавить("XML_DATA");
    
Connect = ПолучитьПодключение();
    
Если Connect = Неопределено Тогда
    Сообщить("Не смогли подключиться");
    Возврат;
КонецЕсли;
    
Command = Новый COMObject("ADODB.Command");
Command.ActiveConnection = Connect;
Command.CommandText = "CORPORATE.PKG_WS.GETDOCUMENTSFORSEND";
Command.CommandType = 8;
    
RecordSet = Новый COMОбъект("ADODB.RecordSet");
    
Попытка
    RecordSet = Command.Execute();
Исключение
    Сообщить(ОписаниеОшибки());
    Возврат;
КонецПопытки;
    
Пока RecordSet.EOF() = 0 Цикл
        
    НоваяСтрока = ТаблицаЗаписей.Добавить();
        
    Для i = 0 По RecordSet.Fields.Count-1 Цикл
            
        ИмяКолонки = RecordSet.Fields.Item(i).Name;
        НоваяСтрока[ИмяКолонки] = RecordSet.Fields.Item(ИмяКолонки).Value;    
            
    КонецЦикла;
        
    RecordSet.MoveNext();
        
КонецЦикла;

Появилась следующая проблема, в Oracle у поля XML_DATA тип CLOB, в 1С значение поля показывает как Неопределено. Есть возможность получить CLOB из 1С?
11 catena
 
19.07.18
07:54
Попросить автора GETDOCUMENTSFORSEND отдавать ее строкой. Обычный ltrim поможет.