Имя: Пароль:
1C
1С v8
Помогите с ole
0 paulic
 
11.10.11
19:07
Делаю выборку из базы через Ole в делфи.
Пробегаю по столбцам чтобы узнать его тип.
Простые типы определяю без проблем, а вот до состава даты (Время, ДатаВремя) добраться не могу посредством Ole.
В 1с добрался

ПолучитьКолонку    = Выборка.Колонки.Получить();
ТипЗначения = ПолучитьКолонку.ТипЗначения;
Сообщить(ТипЗначения.КвалификаторыДаты.ЧастиДаты);
       
а здесь не получается
аналог в делфи этой записи такой.

Column := Rslt.Columns.Get(i);
ValueType := Column.ValueType;
ShowMessage(ValueType.DateQualifiers.DateFractions);

но он не срабатывает. Не нравится последняя строка.
Причем по столцам пробегаем это точно, и ValueType получает колонку.
1 Rie
 
11.10.11
19:10
(0) Чем именно не нравится? Наверное, какое-то сообщение об ошибке выдаётся?
Рискну предположить, что ShowMessage ожидает строку - а получает хрен знает что.
2 Rie
 
11.10.11
19:13
+(0) У подключения у 1С есть метод String - может, он поможет?
3 paulic
 
11.10.11
19:17
(1)
Ошибка такая
cannot perform this operation on a closed dataset
4 paulic
 
11.10.11
19:17
(2)

А что за метод String у подключения 1с
Поясните пожалуйста.
5 Rie
 
11.10.11
19:20
(3) Это сообщение выдаёт, видимо, ADO. В приведенном коде никаких dataset'ов и в помине нет - так что, похоже, искать надо где-то в другом месте.
Rslt - это кто?
6 Rie
 
11.10.11
19:23
(4)
"Внешнее соединение.String (External connection.String)
Внешнее соединение (External connection)
String (String)
Синтаксис:

String(<Параметр>)
Параметры:

<Параметр> (обязательный)

Тип: Произвольный. Выражение произвольного типа.
Возвращаемое значение:

Тип: Строка.
Описание:

Получает строковое представление значения произвольного типа.

Доступность:

Интеграция."
7 paulic
 
11.10.11
19:26
(5)
Rslt - это результат запроса.
И по запросу бегает нормально, для примитивных типов я делаю проверку типа

if ValueType.ContainsType(Settings.Engine.ОбщееХранилище.Дата) then

где общее хранилице определяется Через структуру  ("Дата"; Тип("Дата"))

И он нормально понимает это

ContainsType аналог СодержитТип
8 paulic
 
11.10.11
19:26
(5)
Settings.Engine - это оработка 1с.
9 Rie
 
11.10.11
19:30
(7) Тебе сообщили, что результат запроса - уже не валидный. Почему он закрылся - отсюда не видно. Возможно, в (0) - лишь фрагмент кода?
10 paulic
 
11.10.11
19:34
Всем спасибо, что помогали.
Rie был прав, нужно было в String обернуть

ShowMessage(Settings.Server.String(ValueType.DateQualifiers.DateFractions));

Спасибо тебе большое.

Здесь вообще можно ставить плюсики пользователям?