Библиотека полезных скриптов

Скрипт формує таблицю, яка містить кадастровий номер, ПІБ чи назву землевласника, адресу ділянки, цільове призначення та площу по кожному файлу 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