|
v7: Проблема с запросом через OLE | ☑ | ||
---|---|---|---|---|
0
MaxStarkov
20.01.12
✎
15:43
|
В базе источнике имеется регистр движения которого по измерениям могут содержать различные типы данных (то есть тип значения измерения задается при записи движения исходя из определенных условий). Подключаюсь к базе источнику из базы приемника через OLE. Запрос выполняется и данные в общем то я получаю, заполняю ими таблицу значений. Но вот при ее выводе на просмотр оказывается что в строках таблицы числятся значения "OLE".
Сами значения могут иметь различный тип, но как узнать - какой именно тип значения представляет собой запись "OLE"? |
|||
1
1Сергей
20.01.12
✎
15:44
|
БазаОЛЕ.ТипЗначенияСтр(
|
|||
2
ДенисЧ
20.01.12
✎
15:44
|
Он имеет тип OLEObject :-)
Создай ещё колонку и заполняй её ОлеБаза.ТипЗначенияСтр(ТвойОбъект) |
|||
3
andrewks
20.01.12
✎
15:44
|
по OLE можно принять для просмотра только простые типы - строка, число, и т.п.
|
|||
4
MaxStarkov
20.01.12
✎
15:47
|
Вместо переменной ОлеБаза у меня переменная V7. При попытке: V7.ТипЗначенияСтр(МойОбъектОлеБазы) получаю: Сообщить(V7.ТипЗначенияСтр(ВнешнийЗапрос.СчетУУ));
{Обработка.Подключение.Форма.Модуль(100)}: Поле агрегатного объекта не обнаружено (ТипЗначенияСтр) |
|||
5
MaxStarkov
20.01.12
✎
15:48
|
А вот когда в движении регистра имеется запись с типом - Строка, Число и тд, то никаких проблем не возникает
|
|||
6
MaxStarkov
20.01.12
✎
15:56
|
И все же, как можно узнать тип значения объекта OLE присвоенный ему в базе источнике?
|
|||
7
MaxStarkov
20.01.12
✎
16:12
|
Придумал только через инструкцию "Попытка-Исключение-КонецПопытки". Для типа значения OLE "Справочник" при вызове МойОбъектОлеБазы.Наименование исключение вызвано не будет, а если этот объект является например перечислением, то это можно проверить через обработку исключения при вызове МойОбъектОлеБазы.Идентификатор. Извращение конечно, но как по другому сделать, ума не приложу)))
|
|||
8
Ёпрст
20.01.12
✎
16:20
|
(0)
Функция ТипЗначенияСтрОля(Оля, Объект) Экспорт Возврат Оля.EvalExpr("ТипЗначенияСтр(ЗначениеИзСтрокиВнутр("""+СтрЗаменить(Оля.ЗначениеВСтрокуВнутр(Объект),"""","""""")+"""))"); КонецФункции |
|||
9
MaxStarkov
20.01.12
✎
16:27
|
Красиво решено! Спасибо!
Пробовал через V7.EvalExpr(""ТипЗначенияСтр(""+МойОбъектОлеБазы+"")"") не получалось, ошибку выдавало. Чуял, что решение где то здесь)) |
|||
10
Ковычки
20.01.12
✎
16:29
|
(8) опредил ))
|
|||
11
Ковычки
20.01.12
✎
16:29
|
(9) можно и так, если есть лишняя переменная в оле базе
|
|||
12
DJ Anthon
20.01.12
✎
16:32
|
(8) не для всех объектов так канает
|
|||
13
Ковычки
20.01.12
✎
16:35
|
(12) для каких из внутренних объектов не канает ?
|
|||
14
DJ Anthon
20.01.12
✎
17:05
|
(13) не помню уже, но когда вместо Объекта ссылку на объект передаешь, иногда платформа безбожно врала или даже падала (особенно где неопределенные реквизиты в документах). решил через анализ первой буквы строки Оля.ЗначениеВСтрокуВнутр(Объект)
|
|||
15
DJ Anthon
20.01.12
✎
17:06
|
для таких переменных ЗначениеИзСтрокиВнутр не работает ))
|
|||
16
Ёпрст
20.01.12
✎
17:12
|
(15) ошибаешься, работает для всех объектов..
Если че, у ЗначениеИзСтрокиВнутр 2 параметра. |
|||
17
DJ Anthon
20.01.12
✎
17:59
|
(16) не ошибаюсь, я день убил на обход этого глюка.
|
|||
18
MaxStarkov
22.01.12
✎
15:47
|
(8) Предложенное решение работает у меня для всех типов, в том числе и для объектов имеющих неопределенный тип. в таком случае предложенная функция возвращает просто пустую строку
|
|||
19
Torquader
22.01.12
✎
17:16
|
ЗначениеВСтрокуВнутр умеет преобразовывать в строку все значения, которые можно сохранить в базе (то есть значения любого реквизита), а также СписокЗначений и ТаблицаЗначений. Всё остальное преобразуется в неизвестный объект (первая буква X).
При выполнении запроса очевидно, что он может возвращать только записи, которые хранятся в базе данных, а для них тип прекрасно определяется по первой букве. Вид же может быть четвёртым параметром или частью седьмого (тогда в четвёртом будет 0). |
|||
20
Ковычки
22.01.12
✎
18:44
|
(19) от тебя много слов (и не редко правильных) не дкмал, что много бздишь ?
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |