RUS  ENG 

Отображение слоя

Страницы: 1
RSS
Отображение слоя
 
Появилась задача отображения "по текущему слою", т.е. чтобы входились в окно карты все объекты слоя
При использовании ZuluMapCtrl.ExecCommand("ViewFitToLayer", 0, Null, Null) появляется окно выбора слоя, как сделать чтобы отображалось по активному слою?
 
Можно сделать так:
MapCtrl.DrawInLayerExtents(MapCtrl.Map.Layers.Active);
Метод ExecCommand служит для вызова команд интерфейса, как если бы пользователь нажал нужный пункт меню или кнопку. Дополнительные параметры этого метода (планируется для задания входных аргументов команды) пока зарезервированы.
 
Douser,
Спасибо, получилось
Еще один вопрос: Не получается выполнить запрос мотодом QueryByExample
В слое есть БД с основным запросом (он же и является ActiveQuery)
Пытаюсь получить информацию по ид графического объекта, но вылетает ошибка "Типы не совпадают (0)" при вызове метода QueryByExample

Вот код

// Откроем БД слоя Pnthouse
DBPnthouse = ZuluLib.CreateZbDatabase();
Если НЕ DBPnthouse.Open(LayerPnthouse.BaseName) Тогда
Сообщить("Не удалось открыть БД слоя Pnthouse!");
Возврат;
КонецЕсли;

Результат = Zululib.CreateIZbDataset();
ТипРезультата = 0;
DBPnthouse.QueryByExample("=1", "Sys", ТипРезультата , Результат);
 
В метод QueryByExample в последнем параметре нужно передавать ссылку на переменную, куда будет помещена ссылка на объект IZbDataset. Не совсем понятно откуда берется ZuluLib.CreateIZbDataset? Объект типа IZbDataset несоздаваемый, его могут только возвращать методы других объектов.
На Delphi бы звучало так:
var
ds: IZbDataset;
qr: long;
...
DBPnthouse.QueryByExample("=1", "Sys", qr , ds);
 
Поскольку в 1с я не могу прямо создать объект типа IZbDataset, пришлось писать внешнюю компоненту для 1С на VB.NET, функция ZuluLib.CreateIZbDataset в ней выглядит так

Function CreateIZbDataset() As ZB.IZbDataset
Dim i As ZB.IZbDataset
Return i
End Function
 
Я так понимаю, что после присвоения переменная Результат остается пустой (и не имеет явно тип IZbDataset). А может во внешней компоненте написать метод QueryByExample типа такого:
Function QueryByExample(db as ZbDatabase, Fields, Strings) As ZB.IZbDataset
Dim ds As ZB.IZbDataset
Dim qr As long
db.QueryByExample(Fields, Strings, qr, ds)
Return ds
End Function
 
Сделала такую функцию

Function QueryByExample(ByVal DB As ZB.ZbDatabaseClass, ByVal QueryString As String, ByVal Fields As String) As ZB.IZbDataset
Dim i As Integer
Dim ds As ZB.IZbDataset

DB.QueryByExample(QueryString, Fields, i, ds)

Return ds
End Function

Вызываю ее так
Результат = ZuluLib.QueryByExample(DBPnthouse, "=1", "Sys");

Ругается так "Не выполнить запрос. Неправильно сформирован список полей"

Текс Основного запроса:

SELECT Pnthouse1.'Sys',Pnthouse1.'ID',Pnthouse1.'ID_HOUSE',Pnthouse1.'ADRES',Pnthouse1.'COD_STR'
FROM 'C:\Program Files\Zulu 6.0\Data\Moskow\Pnthouse.db' Pnthouse1
ORDER BY Pnthouse1.'Sys' ASC

PS Так и не поняла порядок параметров, у вас в примере QueryByExample(Fields, Strings, ...), в мануале QueryByExample(QueryStrings, Fields, ...). Так поля или условия первый параметр?
 
Да, Вы правы, в примере я ошибся, как и в описании первый параметр - строки запроса. Ошибка "Неправильно сформирован список полей" возникает из-за того, что условие указано для поля Sys, которое не входит в список полей визуального запроса (оно указано только как поле связи). Если нужно найти запись именно по Sys, то можно воспользоваться методом SelectByKey.
 
делаю так
ДанныеОбъекта = DBPnthouse.SelectByKey(1);

затем пытаюсь встать на 1-ю запись так
ДанныеОбъекта.MoveFirst()

Вылазит исключение Метод объекта не обнаружен MoveFirst()

Запись с Sys=1 в БД есть
 
Сегодня выложили обновление, там исправлена эта ошибка. Скачайте, попробуйте.
Страницы: 1