|
v7: Подключение по оле к 8.3 |
☑ |
0
LisaAlisa
02.02.16
✎
17:08
|
Добрый день!
Подключение проходит успешно, но почему-то запрос пустой, ТЗ не заполняется
ИБ_V8= СоздатьОбъект("V83.Application");
Попытка
Открыта=ИБ_V8.Connect("Srvr="""+СокрЛП(ИмяСервера)+""";Ref="""+СокрЛП(ИмяБазы)+""";Usr="""+СокрЛП(Логин)+""";Pwd = """ + СокрЛП(Пасворд) + """;");
ИБ_V8.Visible = 0;
Сообщить("База 1с8 открыта!");
Исключение
Предупреждение("Ошибка открытия базы V8 - "+ОписаниеОшибки());
КонецПопытки;
Запрос=ИБ_V8.NewOBJECT("Запрос");
Запрос.Текст = "ВЫБРАТЬ
| СтраныМира.Код,
| СтраныМира.Наименование,
| СтраныМира.КодАльфа2,
| СтраныМира.КодАльфа3
|ИЗ
| Справочник.СтраныМира КАК СтраныМира";
РезультатЗапроса = Запрос.Выполнить();
Выборка = РезультатЗапроса.Выбрать();
Пока Выборка.Следующий() = 1 Цикл
ТаблицаСтран.НоваяСтрока();
ТаблицаСтран.Код_1с8 = СокрЛП(Выборка.Код);
ТаблицаСтран.КодАльфа2_1с8 = СокрЛП(Выборка.КодАльфа2);
ТаблицаСтран.КодАльфа3_1с8 = СокрЛП(Выборка.КодАльфа3);
ТаблицаСтран.Наименование_1с8 = СокрЛП(Выборка.Наименование);
КонецЦикла;
|
|
1
DmitrO
02.02.16
✎
17:14
|
ставлю на
Выборка.Следующий() = -1
|
|
2
LisaAlisa
02.02.16
✎
17:15
|
(1) почему?
|
|
3
DmitrO
02.02.16
✎
17:18
|
потому что значение типа VT_BOOL платформа 1С7 конвертирует в число:
VARIANT_TRUE = -1
VARIANT_FALSE = 0
|
|
4
LisaAlisa
02.02.16
✎
17:21
|
(3) большое спасибо!!!
особенно за то, что не поленились объяснить
|
|
5
DmitrO
02.02.16
✎
17:26
|
исходный код:
/* 0 == FALSE, -1 == TRUE */
typedef short VARIANT_BOOL;
#define VARIANT_TRUE ((VARIANT_BOOL)-1)
#define VARIANT_FALSE ((VARIANT_BOOL)0)
булевый тип в COM, это 16 разрядное знаковое число, для Истина все биты заполнены, для Ложь все биты сняты.
А 7.7, по простоте душевной числом его и передает, и по скольку число вроде как знаковое, то -1 в дополнительном двоичном коде и есть все биты установлены (0xFFFF).
|
|
6
DmitrO
02.02.16
✎
17:27
|
чета я сегодня разболтался..
|
|
7
Serginio1
02.02.16
✎
17:37
|
(6) Или что бы мозги не пудрить
Выборка.Следующий() <> 0
|
|