Вход | Регистрация

1С:Предприятие :: 1С:Предприятие 8 общая

База Oracle как внешний источник данных

База Oracle как внешний источник данных
Я
   Amfiaray
 
18.07.18 - 15:45
Добрый день!

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

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

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

Помогло, всё заработало, но после первого открытия таблицы из внешнего источника снова появилась ошибка и всё перестало работать.
   rsv
 
9 - 18.07.18 - 17:42
Откройте excel на машине где клиент ораела стоит и через получение внешних данных цепанитесь к табличке .
   Amfiaray
 
10 - 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С?
 
 Рекламное место пустует
   catena
 
11 - 19.07.18 - 07:54
Попросить автора GETDOCUMENTSFORSEND отдавать ее строкой. Обычный ltrim поможет.

Список тем форума
Рекламное место пустует  Рекламное место пустует
Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование.
Фредерик Брукс-младший
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Рекламное место пустует