Sub ReadDatabaseData 'Хотим, например, прочесть значение поля "Путь, пройденный от источника, м" - "Dist" 'для потребителя тепловой сети с ключом ID = 250 'Текущая активная карта Set Doc = Zulu.ActiveMapDoc 'Активный слой текущей карты Set L = Doc.Layers.Active ' ПЕРВЫЙ СПОСОБ ЧЕРЕЗ ОБРАЩЕНИЕ К БАЗЕ ДАННЫХ 'Создаем объект для базы данных Set Db = CreateObject("zb.database") 'Открываем базу данных для типа 3 (потребитель тепловой сети) Set Type3 = L.ObjectTypes.Item(3) If TypeName(Type3) = "IObjectType" Then If Db.Open(Type3.BaseName) = True Then 'Запрашиваем запись для ключа 250 Set Ds = Db.SelectByKey(250) If TypeName(Ds) = "IZbDataset" Then 'Индекс для поля "Dist" Num = Ds.GetFieldIndexByName(0, "Dist") If Ds.MoveFirst = True Then 'Выводим результат MsgBox Ds.FieldValue(Num) End If End If End If End If ' ВТОРОЙ СПОСОБ ЧЕРЕЗ SQL ЗАПРОС К СЛОЮ Set Result = L.ExecSQL("SELECT Dist WHERE Sys = 250") If TypeName(Ds) = "IZbDataset" Then If Ds.MoveFirst = True Then MsgBox Result.DataSet.FieldValue(0) End If End If ' ПОЛУЧЕНИЕ ЧЕРЕЗ SQL ЗАПРОС К СЛОЮ ОБЪЕКТА С МАКСИМАЛЬНЫМ ЗНАЧЕНИЕМ Dist ДЛЯ ВСЕХ ВЫДЕЛЕННЫХ ОБЪЕКТОВ Set Result = L.ExecSQL("SELECT Sys, Dist WHERE Dist=(SELECT MAX(Dist) WHERE Geometry.Selected()=1)") Set ds = Result.DataSet If TypeName(Ds) = "IZbDataset" Then If Ds.MoveFirst = True Then MsgBox "Sys: " + Result.DataSet.FieldValue(0) + ", Dist: " + Result.DataSet.FieldValue(1) End If End If End Sub