Здравствуйте! Подскажите, пожалуйста, как программно скрыть примитивы? Для типового объекта это делается просто:
L.ObjectTypes.GetItemByIndex(1).SetVisible(false)
а для Примитивов никак не могу найти решение.
Благодарю!
Изменено: - 04.09.2023 12:23:35
UpdateFromAscii и триггер
Пользователь
Сообщений: Регистрация: 27.07.2022
25.07.2023 12:25:24
Добрый день!
Для таблицы создан триггер, срабатывающий на обновление.
При вызове UpdateFromAscii для обновления строк таблицы, триггер не срабатывает. Что находится под капотом UpdateFromAscii? Может там отключение триггеров происходит?
Версия 10.0.0.8439u.x64
Благодарю за ответ!
Изменено: - 25.07.2023 12:26:37
HTTP client Командного сервера
Пользователь
Сообщений: Регистрация: 27.07.2022
01.02.2023 20:09:38
Добрый день!
Работаю с клиентом ZuluGIS 10.0.0.8383u.x64 через командный сервер. Сделана настройка использовать http клиент MFC WinInet. По запросу из браузера возвращается JSON ответ.
Теперь, тот же запрос выполняется из web-приложения, работающего на сервере 55 Получаю ошибку
Код
Access to XMLHttpRequest at 'http://localhost:6475/help' from origin 'http://localhost:5555' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.
CORS блокирует response. Как я понял, в ответе от ZuluGIS должен быть прописан заголовок:
Access-Control-Allow-Origin: :5555 или в общем виде
Access-Control-Allow-Origin: *
чтобы любые сторонние клиенты могли получать ответ от API командного сервера.
В данный момент API командного сервера возвращает response только с этими заголовками: Content-Encoding: gzip Content-Length: 76 Content-Type: application/json Подскажите, пожалуйста, можно ли как-то настроить включать в ответы этот заголовок? Или, возможно, это стоит учесть в новой версии ZuluGIS, т.к. API командного сервера должно быть доступнo для любых web-клиентов.
Использование функции GetClosestElementByXY, определении ближайшего объекта и расстояния до него
Пользователь
Сообщений: Регистрация: 27.07.2022
20.09.2022 09:20:26
Здравствуйте! Подскажите, пожалуйста, всё ли верно я делаю при определении ближайшего объекта и расстояния до него.
создадим точку, в которую будет записана ближайшая точка найденного объекта pointAddress := CoZPoint.Create;
получим точку, к которой будем искать ближайший объект pointTermo := LayerTermo.Elements.GetElement(sysTermo).GetCenter;
получим sys ближайшего объекта в окрестности 2500 м, среди выделенных адресов: sysAddress := LayerAddress.GetClosestElementByXYpointTermo.X, pointTermo.Y, 2500, true, pointAddress);
в pointAddress функция записала ближайшую точку найденного объекта, найдем расстояние между исходной точкой и найденной Geom := CoZGeometry.Create; distance := Geom.Distance(pointTermo.X, pointTermo.Y, pointAddress.X, pointAddress.Y);
вопрос следующий: если точка pointTermo лежит вне контура объекта адреса, то дистанция считается хорошо и равна 5, 12, 4 метрам. если точка pointTermo лежит внутри контура объекта, то дистанция равна 44000, 25500, 42200 метрам.
Подскажите, пожалуйста, в чем может быть причина?
клиент 10.0.0.8084u.x64 сервер 10.0.0.8245
Как создать объект ZGeometry Delphi?, Подскажите, пожалуйста, как создать объект ZGeometry
Пользователь
Сообщений: Регистрация: 27.07.2022
14.09.2022 17:24:39
Подскажите, пожалуйста, как создать объект ZGeometry
Для скриптов нашёл Set G = New ZGeometry
Не могу найти в документации как это сделать в Delphi. Помогите, пожалуйста.
В коде применяю OverloadElemState к источнику у перевожу его в состояние "закрыт", но при определении связанных элементов, источник ведет себя как "открытый"
Пользователь
Сообщений: Регистрация: 27.07.2022
28.07.2022 19:41:30
Версия сервера: 10.0.0.8097u.x64 Версия клиента 10.0.0.8084u.x64
В коде применяю OverloadElemState к источнику у перевожу его в состояние "закрыт", но при определении связанных элементов, источник ведет себя как "открытый" Код
L.NetworkTools.OverloadElemState(sourceKey, 1);
проверил в ручную, тоже не работает. При построении связанных с флажком, источник в состоянии закрыт eSwitchOff = 1 является проходимым. Это верное поведение?
Блокировка при изменении поля в базах данных, Изменяется одинаковое поля в нескольких базах. Зависает после обработки одной базы и перед открытием другой.
Пользователь
Сообщений: Регистрация: 27.07.2022
27.07.2022 12:48:20
Добрый день!
Версия сервера: 10.0.0.8097u.x64 Версия клиента 10.0.0.8084u.x64 Реализация в плагине. ZuluLib_TLB. Embarcadero® RAD Studio 11.0 Version 28.0.42600.6491
Изменяется одинаковое поля в нескольких базах. Зависает после обработки одной базы и перед открытием другой.
L:=IMapDoc(FConnector.Zulu.ActiveDocument.NativeDoc).Layers.Active; for i := 2 to 11 do begin if (i=9) or (i=10) then Continue; output.Put('Проставляем -1 в поле source_num в базе "' + L.ObjectTypes.Item[i].Name +'"'); db:=L.OpenDatabase(L.ObjectTypes.Item[i].BaseID, ''); db.Queries.Default.ExecByExample('ИЗМЕНИТЬ -1' ,'source_num'); db.Close(False); output.Put(' - ok'+ CHR(10)); end;
Причем, при повторном запуске зависнут может после обработки другой базы. Нет закономерности. Иногда отрабатывает этот цикл полностью, тогда зависает на следующем блоке кода:
for i := 2 to 11 do begin if (i=9) or (i=10) then Continue; db:=L.OpenDatabase(L.ObjectTypes.Item[i].BaseID, ''); L.UpdateFromAscii(db, tempFolder+'2.tmp', 'source_num'); db.Close(False); output.Put('Обновлена база "' + L.ObjectTypes.Item[i].Name +'"'+ CHR(10)); end;
Второй блок кода иногда отрабатывает полностью и выдает вот такой результат:
Обновлена база "Узел" Обновлена база "Потpебитель" Обновлена база "Насосная станция" Обновлена база "Задвижка" Ошибка ZB db(zulu://********************************************):Ошибка доступа к данным. Транзакция (идентификатор процесса 67) вызвала взаимоблокировку ресурсов блокировка с другим процессом и стала жертвой взаимоблокировки. Запустите транзакцию повторно. (Код ошибки: 0x80004005). Обновлена база "Участки" Обновлена база "Дросселирующий узел" Обновлена база "ЦТП" Обновлена база "Перемычка"
Подскажите, пожалуйста, возможные причины или как можно отследить причину?