Аналитика https://geosystema.net/forum/ |
|
XML против Reports https://geosystema.net/forum/viewtopic.php?f=1&t=2051 |
Страница 20 из 20 |
Автор: | shyrko [ 02 мар 2018 12:53 ] |
Заголовок сообщения: | Re: XML против Reports |
Доброго дня. Підкажіть, що не так в коді. //Місце розташування земельної ділянки ParcelLocation:=''; if IsNodeExists(XML573Root+'InfoPart/CadastralZoneInfo/CadastralQuarters/CadastralQuarterInfo/Parcels/ParcelInfo/ParcelLocationInfo/ParcelLocation/Urban') then begin if IsNodeExists(XML573Root+'InfoPart/CadastralZoneInfo/CadastralQuarters/CadastralQuarterInfo/Parcels/ParcelInfo/ParcelLocationInfo/ParcelAddress') then begin if IsNodeExists(XML573Root+'InfoPart/CadastralZoneInfo/CadastralQuarters/CadastralQuarterInfo/Parcels/ParcelInfo/ParcelLocationInfo/Settlement') then ParcelLocation:=ParcelLocation+XPath(XML573Root+'InfoPart/CadastralZoneInfo/CadastralQuarters/CadastralQuarterInfo/Parcels/ParcelInfo/ParcelLocationInfo/Settlement'); if IsNodeExists(XML573Root+'InfoPart/CadastralZoneInfo/CadastralQuarters/CadastralQuarterInfo/Parcels/ParcelInfo/ParcelLocationInfo/ParcelAddress/StreetType') and IsNodeExists(XML573Root+'InfoPart/CadastralZoneInfo/CadastralQuarters/CadastralQuarterInfo/Parcels/ParcelInfo/ParcelLocationInfo/ParcelAddress/StreetName') then begin ParcelLocation:=ParcelLocation+', '+sef(XPath(XML573Root+'InfoPart/CadastralZoneInfo/CadastralQuarters/CadastralQuarterInfo/Parcels/ParcelInfo/ParcelLocationInfo/ParcelAddress/StreetType'),'XMLToIn4StreetTypes.txt')+ XPath(XML573Root+'InfoPart/CadastralZoneInfo/CadastralQuarters/CadastralQuarterInfo/Parcels/ParcelInfo/ParcelLocationInfo/ParcelAddress/StreetName'); if ParcelLocation<>'' then begin if IsNodeExists(XML573Root+'InfoPart/CadastralZoneInfo/CadastralQuarters/CadastralQuarterInfo/Parcels/ParcelInfo/ParcelLocationInfo/ParcelAddress/Building') then ParcelLocation:=ParcelLocation+', '+XPath(XML573Root+'InfoPart/CadastralZoneInfo/CadastralQuarters/CadastralQuarterInfo/Parcels/ParcelInfo/ParcelLocationInfo/ParcelAddress/Building'); if IsNodeExists(XML573Root+'InfoPart/CadastralZoneInfo/CadastralQuarters/CadastralQuarterInfo/Parcels/ParcelInfo/ParcelLocationInfo/ParcelAddress/Block') then ParcelLocation:=ParcelLocation+', корп.'+XPath(XML573Root+'InfoPart/CadastralZoneInfo/CadastralQuarters/CadastralQuarterInfo/Parcels/ParcelInfo/ParcelLocationInfo/ParcelAddress/Block'); end; end; end; AdresaZD:=ParcelLocation+' '+RayonROP+' '+RegionROP; AdresaZD1:='в '+AdresaZD; AdresaZD2:=Region+', '+Rayon+', '+ParcelLocation; AdresaZDTIT:='в '+ParcelLocation+#13#10+RayonROP+#13#10+RegionROP; end else begin ParcelLocation:='на території '+radarop+'ради (за межами населених пунктів) '+RayonROP+' '+RegionROP; AdresaZD:=ParcelLocation; AdresaZD1:=ParcelLocation; AdresaZD2:=Region+', '+Rayon+', '+Rada+' рада (за межами населених пунктів)'; AdresaZDTIT:='на території '+radarop+'ради '+#13#10+'(за межами населених пунктів)'+#13#10+RayonROP+#13#10+RegionROP; end; |
Автор: | Руслан Пархуць [ 02 мар 2018 13:35 ] |
Заголовок сообщения: | Re: XML против Reports |
shyrko писал(а): Доброго дня. Підкажіть, що не так в коді. яка помилка, який результат очiкуєте? що пiд вiдладчиком? Пiсля перевiрки /ParcelAddress Ви виходите, хоча параметер /Settlement є в iншому тезi, вищому. Ну i т.д. Код: //Місце розташування земельної ділянки
XML573Root:=IIF(IsNodeExists('InfoPart'),'','EmbeddedXML/UkrainianCadastralExchangeFile/'); S:='Setup.ini'; cadnum:=XPath(XML573Root+'InfoPart/CadastralZoneInfo/CadastralZoneNumber'); RegionID := Copy(cadnum,1,2); RayonID := Copy(cadnum,1,5); //Область Region := Trim(File(S,'RepНазва(Область)')); RegionROP := Trim(File(S,'RepНазваР(Область)')); //Район Rayon := Trim(File(S,'RepНазва(Район)')); RayonROP := Trim(File(S,'RepНазваР(Район)')); // Рада Rada := Trim(File(S,'RepНазва(Сільрада)')); ParcelLocation:=''; if IsNodeExists(XML573Root+'InfoPart/CadastralZoneInfo/CadastralQuarters/CadastralQuarterInfo/Parcels/ParcelInfo/ParcelLocationInfo/ParcelLocation/Urban') then begin if IsNodeExists(XML573Root+'InfoPart/CadastralZoneInfo/CadastralQuarters/CadastralQuarterInfo/Parcels/ParcelInfo/ParcelLocationInfo/Settlement') then ParcelLocation:=ParcelLocation+XPath(XML573Root+'InfoPart/CadastralZoneInfo/CadastralQuarters/CadastralQuarterInfo/Parcels/ParcelInfo/ParcelLocationInfo/Settlement'); if IsNodeExists(XML573Root+'InfoPart/CadastralZoneInfo/CadastralQuarters/CadastralQuarterInfo/Parcels/ParcelInfo/ParcelLocationInfo/ParcelAddress') then begin if IsNodeExists(XML573Root+'InfoPart/CadastralZoneInfo/CadastralQuarters/CadastralQuarterInfo/Parcels/ParcelInfo/ParcelLocationInfo/ParcelAddress/StreetType') and IsNodeExists(XML573Root+'InfoPart/CadastralZoneInfo/CadastralQuarters/CadastralQuarterInfo/Parcels/ParcelInfo/ParcelLocationInfo/ParcelAddress/StreetName') then begin ParcelLocation:=ParcelLocation+', '+sef(XPath(XML573Root+'InfoPart/CadastralZoneInfo/CadastralQuarters/CadastralQuarterInfo/Parcels/ParcelInfo/ParcelLocationInfo/ParcelAddress/StreetType'),'XMLToIn4StreetTypes.txt')+ XPath(XML573Root+'InfoPart/CadastralZoneInfo/CadastralQuarters/CadastralQuarterInfo/Parcels/ParcelInfo/ParcelLocationInfo/ParcelAddress/StreetName'); if ParcelLocation<>'' then begin if IsNodeExists(XML573Root+'InfoPart/CadastralZoneInfo/CadastralQuarters/CadastralQuarterInfo/Parcels/ParcelInfo/ParcelLocationInfo/ParcelAddress/Building') then ParcelLocation:=ParcelLocation+', '+XPath(XML573Root+'InfoPart/CadastralZoneInfo/CadastralQuarters/CadastralQuarterInfo/Parcels/ParcelInfo/ParcelLocationInfo/ParcelAddress/Building'); if IsNodeExists(XML573Root+'InfoPart/CadastralZoneInfo/CadastralQuarters/CadastralQuarterInfo/Parcels/ParcelInfo/ParcelLocationInfo/ParcelAddress/Block') then ParcelLocation:=ParcelLocation+', корп.'+XPath(XML573Root+'InfoPart/CadastralZoneInfo/CadastralQuarters/CadastralQuarterInfo/Parcels/ParcelInfo/ParcelLocationInfo/ParcelAddress/Block'); end; end; end; AdresaZD:=ParcelLocation+' '+RayonROP+' '+RegionROP; AdresaZD1:='в '+AdresaZD; AdresaZD2:=Region+', '+Rayon+', '+ParcelLocation; AdresaZDTIT:='в '+ParcelLocation+#13#10+RayonROP+#13#10+RegionROP; end else begin ParcelLocation:='на території '+radarop+'ради (за межами населених пунктів) '+RayonROP+' '+RegionROP; AdresaZD:=ParcelLocation; AdresaZD1:=ParcelLocation; AdresaZD2:=Region+', '+Rayon+', '+Rada+' рада (за межами населених пунктів)'; AdresaZDTIT:='на території '+radarop+'ради '+#13#10+'(за межами населених пунктів)'+#13#10+RayonROP+#13#10+RegionROP; end; |
Автор: | Николай С. [ 26 июл 2018 17:07 ] |
Заголовок сообщения: | Re: XML против Reports |
Bondarets Alexander писал(а): Цитата: Цель сделать смежников так: 1. Вася Пупкин 2. Петя Пупкин 3. Сільська рада но иногда смежники дублируются, например рада может быть в двух и больше и получается вот так 1. Вася Пупкин 2. Петя Пупкин 3. Сільська рада 4. Сільська рада а надо чтоб если смежник дублируется он не записывался Переписал вашу функцию, с учетом возможного дублирования. Убрал переменную Delimiter - она там не нужна. Код: function PrepareXMLSmejList: string; var I, N, FoundI: Integer; PPath, NbrPath, Nbr: string; List: TStringList; begin Result:=''; // путь к блоку смежных участков PPath:='EmbeddedXML/UkrainianCadastralExchangeFile/InfoPart/CadastralZoneInfo/' + 'CadastralQuarters/CadastralQuarterInfo/Parcels/ParcelInfo/AdjacentUnits'; // кол-во смежников N:=NodesCount(PPath,'AdjacentUnitInfo'); if N<1 then Exit; List := TStringList.Create; try // сначала получаем названия смежников и заносим их в список for I:=1 to N do begin // путь к текущему смежнику NbrPath := PPath + '/AdjacentUnitInfo['+IntToStr(I)+']/Proprietor'; if IsNodeExists(NbrPath + '/NaturalPerson') then // физлицо Nbr := XPath(NbrPath + '/NaturalPerson/FullName/LastName') + ' ' + XPath(NbrPath + '/NaturalPerson/FullName/FirstName') + ' ' + XPath(NbrPath + '/NaturalPerson/FullName/MiddleName') else // юрлицо Nbr := XPath(NbrPath + '/LegalEntity/Name'); // проверяем или такой смежник уже есть в списке // и добавляем только новых // сравнение строк с учетом регистра! if not List.Find(Nbr, FoundI) then List.Add(Nbr); end; // формируем строку смежников for I := 0 to List.Count -1 do begin // если это не первая строка, добавляем перенос строки if Result <> '' then Result := Result + #13#10; Result := Result + IntToStr(I + 1) + '. ' + List[I]; end; finally List.Free; end; end; Разбил формирование списка смежников на 2 этапа. На первом в список строк заносятся смежники по одному. При добавлении в список выполняется проверка на наличие данного смежника в списке. На втором этапе из строкового списка формируется результирующая строка. Если что-то непонятно, спрашивайте. Все таки в цьому коді дублює Natural person. Підкажіть де підправити. Дякую. |
Автор: | Dmitry_Zolotar [ 26 июл 2018 17:52 ] |
Заголовок сообщения: | Re: XML против Reports |
Суміжники мабуть відрізняються, код нормальний |
Автор: | Николай С. [ 26 июл 2018 18:21 ] |
Заголовок сообщения: | Re: XML против Reports |
Dmitry_Zolotar писал(а): Суміжники мабуть відрізняються, код нормальний Найшов причину, юридична особа повинна бути з великої букви. Дякую. |
Автор: | Vaho [ 12 авг 2018 12:00 ] | ||
Заголовок сообщения: | Re: XML против Reports | ||
Здравствуйте. Помогите пожалуйста с кодом. Есть у меня шаблон в репортсе. Делал я им техническую документацию на физ лиц и горя не знал, но тут пришло время делать на юр. лиц, а шаблон тупо зависает намертво, в отладке показывает ошибку на (картинка вложенная). Помогите пожалуйста, уже волосы дыбом стают, а понять так и не могу,чего хочет этот код?
|
Автор: | Dmitry_Zolotar [ 13 авг 2018 09:22 ] |
Заголовок сообщения: | Re: XML против Reports |
Vaho писал(а): Здравствуйте. Помогите пожалуйста с кодом. Есть у меня шаблон в репортсе. Делал я им техническую документацию на физ лиц и горя не знал, но тут пришло время делать на юр. лиц, а шаблон тупо зависает намертво, в отладке показывает ошибку на (картинка вложенная). Помогите пожалуйста, уже волосы дыбом стают, а понять так и не могу,чего хочет этот код? Без шаблона это сделать проблематично. Все что увидел - отсутствие слеша в выражении XML573Root := 'EmbeddedXML/UkrainianCadastralExchangeFile/'; Все XPath-запросы с использованием этой переменной могут быть некорректны. Но и к зависанию не должны приводить. Первое условие можно заменить такой строкой. XML573Root:=IIF(IsNodeExists('InfoPart'),'','EmbeddedXML/UkrainianCadastralExchangeFile/'); |
Автор: | shyrko [ 02 окт 2018 11:09 ] |
Заголовок сообщения: | Re: XML против Reports |
Доброго дня! Необхідно отримати список співвласників у родовому, давальному і т.д. відмінках. Чи можна це реалізувати використовуючи одну функцію, чи для кожного відмінка треба використовувати окрему функцію? |
Автор: | ТОВ Аспект [ 16 авг 2019 23:01 ] |
Заголовок сообщения: | Re: XML против Reports |
Підкажіть, будь ласка, як з xml витягти цю інфу в репорт [StrToInt(PARAM(-8,0))-1]. Кількість точок ділянки. |
Автор: | petrogeo [ 17 авг 2019 09:22 ] |
Заголовок сообщения: | Re: XML против Reports |
ТОВ Аспект писал(а): Підкажіть, будь ласка, як з xml витягти цю інфу в репорт [StrToInt(PARAM(-8,0))-1]. Кількість точок ділянки. Можна скриптом типу: $Papka=c:\Progra~2\Digitals @Map.DeselectAll @Map.SelectLayer id70005 $EO=@Map.SelectedObject $Point=@Map.Object[$EO].Count $Point=$Point-1 @Text[1].Add Точки=$Point @Text[1].Save $Papka\Templates\Info.ini В репорті в коді прописати (добавити) наступні рядки: Point:String; ... Point:=File('Info.ini','Точки'); А в тексті шаблону в потрібному місці вставити таку перемінну [Point] |
Автор: | ТОВ Аспект [ 19 авг 2019 01:56 ] |
Заголовок сообщения: | Re: XML против Reports |
Дякую. Ну а прописом простіше мабуть так $Point=@Map.Object[$EO].Count $Point=$Point-1 $r=$Point @If $r=4 then $r=чотири @Text[1].Add Точка=$Point @Text[1].Add прописом=$r |
Автор: | Dmitry_Zolotar [ 19 авг 2019 08:18 ] |
Заголовок сообщения: | Re: XML против Reports |
В шаблонах режиму Сервіс-Документи-<назва з іконкою Репортс> можна отримати кількість точок прописом якось так: Код: ....
N: Integer; ParcelMONNumber, PointsPath, PointNumberStr: String; .... ParcelMONumber:=XPath('EmbeddedXML/UkrainianCadastralExchangeFile/InfoPart/CadastralZoneInfo/CadastralQuarters/CadastralQuarterInfo/Parcels/ParcelInfo/MapObjectNumber'); PointsPath:='Map/Objects/Object['+ParcelMONumber+']/Points/'; N:=NodesCount(PointsPath,'Point'); PointNumberStr:=NumToStr(N-1, '0', '0')+' '+Money(N-1,'точка;точки;точок'); ShowMessage('Кількість точок прописом: '+PointNumberStr); .... |
Автор: | ТОВ Аспект [ 20 авг 2019 09:24 ] |
Заголовок сообщения: | Re: XML против Reports |
Дякую і кількість точок PointNumber:=(N-1); і прописом |
Автор: | Володимер [ 02 июл 2021 13:21 ] |
Заголовок сообщения: | Re: XML против Reports |
Добрый день. Можно в двух словах сказать что мне нужно что бы делать ТД с ХМЛ, с IN-4 когда то редактировал шаблон стандартный и нормально тянуло данные. А как быть с ХМЛ есть может какой нибуть шаблончик что бы уже на его основе посмотреть и что то для себя сделать? |
Автор: | ТОВ Аспект [ 03 июл 2021 08:49 ] |
Заголовок сообщения: | Re: XML против Reports |
Є в сервіс документи шаблон XML Госакт, корисний приклад. |
Страница 20 из 20 | Часовой пояс: UTC + 2 часа |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |