Скрипт формує таблицю, яка містить кадастровий номер, ПІБ чи назву землевласника, адресу ділянки, цільове призначення та площу по кожному файлу XML у вибраній папці
Код:
$Tab=@Calc char(9)
$Tab=@DequoteText $Tab
$WorkPapka=@Dialog.SelectFolder Виберіть папку з файлами xml для звіту
@if $WorkPapka= then @break
@Text[1].FolderListTree *.xml $WorkPapka
$TC=@Text[1].Count
@if $TC=0 then @break В папці не виявлено жодного обмінного файла xml
$Len=@Calc Length("$TC")
$L=@Calc Copy("$TC","$Len","1")
@if $L=1 then $TCText="$TC файл"
@if $L>1 then $TCText="$TC файли"
@if $L>4 then $TCText="$TC файлів"
@if $L=0 then $TCText="$TC файлів"
$Len=$Len-1
$L2=@Calc Copy("$TC3","$Len","1")
@if $L2=1 then $TCText="$TC файлів"
$TCText=@DequoteText $TCText
@Progress.Start $TC Обробляю... (всього $TCText)
@Text[2].Add Кадастровий номер$TabПІБ (назва) землевласника$TabАдреса ділянки$TabЦП$TabПлоща
$XML=0
$XMLYes=0
%LoopXML
$XML=$XML+1
@Progress.StepBy 1
$FN=@Text[1].Line[$XML]
$Valid=@XML.Valid $FN
@if $Valid<>1 then @Text[3].Add $FN
@if $Valid<>1 then @Goto %LoopXML
@FileOpen $FN
;кадастровий номер
$KN=@Map.XMLCadastralNumber
@if $KN= then $KN=@Map.ClearShortFilename
;виділяємо ділянку
@Map.DeselectAll
@Map.SelectLayer ID70005
$SC=@Map.SelCount
@if $SC<1 then @Text[3].Add $FN
@if $SC<1 then @Goto %LoopXML
;рахуємо кількість успішно відкритих
$XMLYes=$XMLYes+1
$N=@Map.SelectedObject
;дістаємо адресу ділянки
$ADVse=@Map.Object[$N].Parameter[ID7000500]
$AD=@XML.XPath Settlement $ADVse
$ADTup=@XML.XPath ParcelAddress/StreetType $ADVse
$AD4=@XML.XPath ParcelAddress/StreetName $ADVse
@if $AD4=- then $AD4=
@if $AD4<> then $AD=$AD, $ADTup $AD4
$AD5=@XML.XPath ParcelAddress/Building $ADVse
@if $AD5=- then $AD5=
@if $AD5<> then $AD=$AD, $AD5
$AD6=@XML.XPath ParcelAddress/Block $ADVse
@if $AD6=- then $AD6=
@if $AD6<> then $AD=$AD, $AD6
;цільове використання
$CV=@Map.Object[$N].Parameter[ID7000510]
$CV=@StringPart 1 $CV
;площа
$Area=@Map.Object[$N].Parameter[ID7000516]
;ПІБ чи назва землевласника
$Prop=@Map.Object[$N].Parameter[ID7000520]
$PrCount=@XML.NodeCount /Proprietors ProprietorInfo $Prop
$Res=
@if $PrCount<1 then @Goto %IgnoreProp
$I=0
%StartProp
$I=$I+1
@if $I>1 then $Res=$Res,
$UrCount=@XML.NodeCount /Proprietors/ProprietorInfo[$I]/Authentication LegalEntity $Prop
@if $UrCount=1 then @Goto %Uryd
$LN=@XML.XPath /Proprietors/ProprietorInfo[$I]/Authentication/NaturalPerson/FullName/LastName $Prop
$FN=@XML.XPath /Proprietors/ProprietorInfo[$I]/Authentication/NaturalPerson/FullName/FirstName $Prop
$MN=@XML.XPath /Proprietors/ProprietorInfo[$I]/Authentication/NaturalPerson/FullName/MiddleName $Prop
$Res=$Res$LN $FN $MN
@Goto %NeUryd
%Uryd
$UrydName=@XML.XPath /Proprietors/ProprietorInfo[$I]/Authentication/LegalEntity/Name $Prop
$Res=$Res$UrydName
%NeUryd
@if $I<$PrCount then @Goto %StartProp
%IgnoreProp
;формуємо рядок та додаємо в таблицю
@Text[2].Add $KN$Tab$Res$Tab$AD$Tab $CV$Tab $Area
@CloseMap $FN
$Cancel=@Progress.Canceled
@if $Cancel=1 then @Goto %EndXML
@if $XML<$TC then @Goto %LoopXML
%EndXML
@Progress.Stop
@Text[2].Copy
;рахуємо файли, які не вдалося обробити
$TC3=@Text[3].Count
$Text=
@if $TC3=0 then @Goto %AllGood
$Len=@Calc Length("$TC3")
$L=@Calc Copy("$TC3","$Len","1")
@if $L=1 then $TCText="$TC3 файл"
@if $L>1 then $TCText="$TC3 файли"
@if $L>4 then $TCText="$TC3 файлів"
@if $L=0 then $TCText="$TC3 файлів"
$Len=$Len-1
$L2=@Calc Copy("$TC3","$Len","1")
@if $L2=1 then $TCText="$TC3 файлів"
$TCText=@DequoteText $TCText
$Text=@Text[3].Text
$Text=Не вдалося відкрити чи обробити $TCText:|$Text
%AllGood
@Dialog.Message Оброблено $XMLYes файлів XML. Звіт скопійовано в буфер обміну. Відкрийте таблицю Ексель чи простий блокнот та виконайте команду Вставити. ||$Text