Для таблицы создан триггер, срабатывающий на обновление.
При вызове UpdateFromAscii для обновления строк таблицы, триггер не срабатывает. Что находится под капотом UpdateFromAscii? Может там отключение триггеров происходит?
Работаю с клиентом ZuluGIS 10.0.0.8383u.x64 через командный сервер. Сделана настройка использовать http клиент MFC WinInet. По запросу из браузера [URL=http://localhost:6475/help]http://localhost:6475/help[/URL] возвращается JSON ответ.
Теперь, тот же запрос выполняется из web-приложения, работающего на сервере [URL=http://localhost:55]http://localhost:55[/URL]55 Получаю ошибку [CODE]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. [/CODE]CORS блокирует response. Как я понял, в ответе от ZuluGIS должен быть прописан заголовок:
[B]Access-Control-Allow-Origin[/B][B]: [/B][URL=http://localhost][B]http://localhost[/B][/URL][B]:[/B][B]5555[/B][B] [/B][B] [/B]или в общем виде
[B]Access-Control-Allow-Origin: * [/B] чтобы любые сторонние клиенты могли получать ответ от API командного сервера.
В данный момент API командного сервера возвращает response только с этими заголовками: [LIST=1]Content-Encoding: gzip Content-Length: 76 Content-Type: application/json [/LIST]Подскажите, пожалуйста, можно ли как-то настроить включать в ответы этот заголовок? Или, возможно, это стоит учесть в новой версии ZuluGIS, т.к. API командного сервера должно быть доступнo для любых web-клиентов.
Здравствуйте! Подскажите, пожалуйста, всё ли верно я делаю при определении ближайшего объекта и расстояния до него.
создадим точку, в которую будет записана ближайшая точка найденного объекта [FONT="Courier New"]pointAddress := CoZPoint.Create; [/FONT] получим точку, к которой будем искать ближайший объект [FONT="Courier New"]pointTermo := LayerTermo.Elements.GetElement(sysTermo).GetCenter; [/FONT] получим sys ближайшего объекта в окрестности 2500 м, среди выделенных адресов: [FONT="Courier New"]sysAddress := LayerAddress.GetClosestElementByXYpointTermo.X, pointTermo.Y, 2500, true, pointAddress); [/FONT] в pointAddress функция записала ближайшую точку найденного объекта, найдем расстояние между исходной точкой и найденной [FONT="Courier New"]Geom := CoZGeometry.Create;[/FONT] [FONT="Courier New"]distance := Geom.Distance(pointTermo.X, pointTermo.Y, pointAddress.X, pointAddress.Y); [/FONT] вопрос следующий: если точка [FONT="Courier New"]pointTermo [/FONT]лежит вне контура объекта адреса, то дистанция считается хорошо и равна 5, 12, 4 метрам. если точка [FONT="Courier New"]pointTermo [/FONT]лежит внутри контура объекта, то дистанция равна 44000, 25500, 42200 метрам.
Подскажите, пожалуйста, как создать объект ZGeometry
Для скриптов нашёл [FONT="Courier New"]Set G = New ZGeometry [/FONT] Не могу найти в документации как это сделать в Delphi. Помогите, пожалуйста. [FONT="Courier New"]
В коде применяю OverloadElemState к источнику у перевожу его в состояние "закрыт", но при определении связанных элементов, источник ведет себя как "открытый"
Версия сервера: 10.0.0.8097u.x64 Версия клиента 10.0.0.8084u.x64
В коде применяю OverloadElemState к источнику у перевожу его в состояние "закрыт", но при определении связанных элементов, источник ведет себя как "открытый" Код
проверил в ручную, тоже не работает. При построении связанных с флажком, источник в состоянии закрыт eSwitchOff = 1 является проходимым. Это верное поведение?
Блокировка при изменении поля в базах данных, Изменяется одинаковое поля в нескольких базах. Зависает после обработки одной базы и перед открытием другой.
Версия сервера: 10.0.0.8097u.x64 Версия клиента 10.0.0.8084u.x64 Реализация в плагине. ZuluLib_TLB. Embarcadero® RAD Studio 11.0 Version 28.0.42600.6491
Изменяется одинаковое поля в нескольких базах. Зависает после обработки одной базы и перед открытием другой.
[FONT=monospace]L:=IMapDoc(FConnector.Zulu.ActiveDocument.NativeDoc).Layers.Active;[/FONT] [FONT=monospace]for i := 2 to 11 do[/FONT] [FONT=monospace] begin[/FONT] [FONT=monospace] if (i=9) or (i=10) then Continue;[/FONT] [FONT=monospace] output.Put('Проставляем -1 в поле source_num в базе "' + L.ObjectTypes.Item[i].Name +'"');[/FONT] [FONT=monospace] db:=L.OpenDatabase(L.ObjectTypes.Item[i].BaseID, '');[/FONT] [FONT=monospace] db.Queries.Default.ExecByExample('ИЗМЕНИТЬ -1' ,'source_num');[/FONT] [FONT=monospace] db.Close(False);[/FONT] [FONT=monospace] output.Put(' - ok'+ CHR(10));[/FONT] [FONT=monospace] end;[/FONT]
Причем, при повторном запуске зависнут может после обработки другой базы. Нет закономерности. Иногда отрабатывает этот цикл полностью, тогда зависает на следующем блоке кода:
[FONT=monospace]for i := 2 to 11 do[/FONT] [FONT=monospace] begin[/FONT] [FONT=monospace] if (i=9) or (i=10) then Continue;[/FONT] [FONT=monospace] db:=L.OpenDatabase(L.ObjectTypes.Item[i].BaseID, '');[/FONT] [FONT=monospace] L.UpdateFromAscii(db, tempFolder+'2.tmp', 'source_num');[/FONT] [FONT=monospace] db.Close(False);[/FONT] [FONT=monospace] output.Put('Обновлена база "' + L.ObjectTypes.Item[i].Name +'"'+ CHR(10));[/FONT] [FONT=monospace] end;[/FONT]
Второй блок кода иногда отрабатывает полностью и выдает вот такой результат:
[FONT=monospace]Обновлена база "Узел" [/FONT] [FONT=monospace]Обновлена база "Потpебитель" [/FONT] [FONT=monospace]Обновлена база "Насосная станция" [/FONT] [FONT=monospace]Обновлена база "Задвижка" [/FONT] [FONT=monospace]Ошибка ZB db(zulu://********************************************):Ошибка доступа к данным. Транзакция (идентификатор процесса 67) вызвала взаимоблокировку ресурсов блокировка с другим процессом и стала жертвой взаимоблокировки. Запустите транзакцию повторно. (Код ошибки: 0x80004005). [/FONT] [FONT=monospace]Обновлена база "Участки" [/FONT] [FONT=monospace]Обновлена база "Дросселирующий узел" [/FONT] [FONT=monospace]Обновлена база "ЦТП" [/FONT] [FONT=monospace]Обновлена база "Перемычка" [/FONT]
Подскажите, пожалуйста, возможные причины или как можно отследить причину?