Форум на Kuban.ru (http://forums.kuban.ru/)
-   Территория 1С (http://forums.kuban.ru/f1040/)
-   -   8.2 и Файрбёрд (http://forums.kuban.ru/f1040/8_2_i_fajrb%D1%91rd-2433989.html)

Billi 01.04.2012 20:13

8.2 и Файрбёрд
 
Склеил-таки я через внешний источник данных 8.2 и файрбёрд.
Клеится всё нормально, объектная модель работает, "представление", "ссылка", все в норме.
Но есть четыре проблемки, с тремя жить можно, с одной довольно тяжко.
Первая проблема это то, что одинэска отказывается работать с составными типами данных внутри внешнего источника. Ну да ладно, это обходится, правда не очень красиво, но решаемо.
Вторая проблема это соединение строк. В файрбёрде строки стыкуются с помощью оператора "||", одинэска пытается их стыковать "+", ну да ладно, и это полбеды.
Третья проблема, это невозможность использовать временные таблицы. По крайней мере, когда у источника стоит тип "Прочее". Но это то же решается.
А вот четвёртую не могу победить.
Нужно создать динамический список на основе таблицы внешнего источника. Одинэска пытается его получить запросом "SELECT TOP ... ", а файрбёрду надо "SELECT FIRST ... ".
Может есть у кого мысли как обмануть одинэску?
Пробовал источнику ставить другие типы, и постгри, и ибм, и оракл, но тогда другие ошибки вылезают.

Reaper 01.04.2012 20:36

(1) Жевали уже эту проблему. Разработчики платформы советуют не использовать дин. списки для баз феникса, использовать запросы и отчеты на компоновке пока они думают, что же им прикрутить к платформе...

Billi 01.04.2012 20:41

2-Reaper >Ясно.
Спасибо.
Буду пока мутить на стороне файрбёрда, попробую через вьюшку, внутрь её какую-нибудь процедурку запихаю, короче будем думать. :)

Billi 01.04.2012 20:43

2-Reaper >Эх, найти бы ту самую голубую длл-ку, и поменять в ней TOP на FIRST ;)

Reaper 01.04.2012 20:46

(4) Ну можно еще ODBC свой сделать, который будет в лоб пересылать запросы с теми же параметрами родному драйверу но подменяя в тексте инструкции "Select top" на "Select first". Это ИМХО разумнее.

Billi 01.04.2012 20:49

5-Reaper >Можно и так попробовать.
Но сначала в самом файрбёрде попытаюсь.

Billi 02.04.2012 21:04

Ну вот, ещё одна неприятность.
Делаем запрос:
Запрос = Новый Запрос;
Запрос.Текст = "
|ВЫБРАТЬ
|Заказы.Ссылка КАК Заказ,
|Заказы.Номер,
|Заказы.Дата
|ИЗ
|ВнешнийИсточникДанных.Оптима6_0.Таблица.Заказы КАК Заказы";
ТЗ = Запрос.Выполнить().Выгрузить();
В результате поле «Заказ» в ТЗ заполнено и имеет тип «ВнешнийИсточникДанныхТаблицаСсылка.Оптима6_0.Заказы»
Пока всё хорошо.

Делаем следующий финт:

Запрос.Текст = "
|ВЫБРАТЬ
|ТЗ.Заказ,
|ТЗ.Номер,
|ТЗ.Дата
|ПОМЕСТИТЬ ВремТЗ
|ИЗ
|&ТЗ КАК ТЗ
|;
|ВЫБРАТЬ
|ВремТЗ.Заказ,
|ВремТЗ.Номер,
|ВремТЗ.Дата
|ИЗ
|ВремТЗ КАК ВремТЗ";
Запрос.УстановитьПараметр("ТЗ", ТЗ);
ТаблицаЗаказов.Загрузить(Запрос.ВыполнитьПакет()[1].Выгрузить());

В итоге поле ТаблицаЗаказов.Заказ становится пустым, но тип значения сохраняет "ВнешнийИсточникДанныхТаблицаСсылка.Оптима6_0.Заказы".


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