Головна » Файли » Готові скрипти

Виправлення КОАТУУ, зони та кварталу у всіх файлах XML
22.02.2019, 20:06

Скрипт автоматично звіряє КОАТУУ, зону та квартал усіх обмінників XML у заданій папці із тими, що на публічній кадастровій карті і, якщо є невідповідність, то виправляє це. В кінці появляється детальний звіт, що в якому обміннику було виправлено.

При цьому КОАТУУ, зона та квартал міняються тільки всередині файлу. Назва файлу (якщо вона містила також КОАТУУ, зону та квартал) залишається без змін.


$Tab=@Calc char(9)
$Tab=@DequoteText $Tab
$Papka=@ProgramFolder
$Ver=@Version
@if $Ver<42345 then @Break Ваша версія програми не підтримує читання з Публічної карти. Оновіть програму
$Demo=@DemoMode
@if $Demo=1 then @Dialog.Message В демо-версії програми Digitals скрипт не зможе зберігати файли!
@SelectTab 3
$P=0
$FileExists=@FileExists $Papka\PauseReplase.txt
@if $FileExists=0 then @Goto %Dali3
@Text.Load $Papka\PauseReplase.txt
$I=@Text.Line[1]
@Text[1].Load $Papka\ReplasePause.txt
@Text[2].Load $Papka\Результат перевірки.txt
$FC=@Text[1].Count
$StartText=продовжено з файлу $I із $FC
$Dialog=@Dialog.Confirm Продовжити додавання кадастровий номерів з файлу, на якому ви закінчили минулого разу? (файл $I із $FC)||Cansel - почати заново
@if $Dialog=1 then @Goto %Start
%Dali3
$WorkPapka=@Dialog.SelectFolder Відкрийте папку з файлами XML, які потрібно привести у відповідність з кадастровими номерами на Публічній карті. Почекайте на результат (це може зайняти деякий час)
@if $WorkPapka= then @break
@Text[1].FolderListTree *.xml $WorkPapka
$StartText=Початок
$I=0
@Text[2].Clear
%Start
$T1=@Text[1].Text
$FC=@Text[1].Count
@If $FC=0 then @Break В папці не знайдено жодного файла
@Progress.Start $FC Обробляю файли (всього $FC)
@Progress.StepBy $I
$D=@Date
@Text[2].Add $D $StartText
%Loop
@Progress.StepBy 1
$Prog=@Progress.Canceled
@if $Prog=1 then @Goto %Break
$I=$I+1
$Pref=
$FN=@Text[1].Line[$I]
$Ver=@Version
@if $Ver<42766 then @Goto %NoPerevValid
$R=@XML.Valid $FN
@if $R=0 then @Goto %Next
%NoPerevValid
$Open=@FileOpen $FN
@if $Open=0 then @Goto %Next
@Map.DeselectAll
@Map.SelectLayer id70003
$SO=@Map.SelectedObject
@if $SO=0 then @Goto %Next
$idKoatuu=ID7000301
$KoatuuDo0=@Map.Object[$SO].Parameter[$idKoatuu]
$KoatuuDo=@StringPart 1:$KoatuuDo0
$ZonaDo=@StringPart 2:$KoatuuDo0
@Map.DeselectAll
@Map.SelectLayer id70004
$SO=@Map.SelectedObject
@if $SO=0 then @Goto %Next
$KvartalDo=@Map.Object[$SO].Parameter[ID7000401]
$ThisObj=@Map.SelectedObject
$X=@Map.Object[$ThisObj].Parameter[-4]
$Y=@Map.Object[$ThisObj].Parameter[-3]
$Res=@Map.GetPublicMapQuarterInfo $X $Y
@Text.Text $Res
@if $Res=0 then @Goto %Next
@Text.Text $Res
$KOATUU=@Text.Line[1]
$KOATUU=@StringPart 2=$KOATUU
$Zona=@Text.Line[2]
$Zona=@StringPart 2=$Zona
$Kvartal=@Text.Line[3]
$Kvartal=@StringPart 2=$Kvartal
$KOATYYNew=@Concat $KOATUU,:,$Zona
$ControlKOATUU=КОАТУУ без змін
$ControlZona=Зона без змін   
$ControlKvartal=Квартал без змін   
@if $KoatuuDo<>$Koatuu then $ControlKOATUU=КОАТУУ до: $KoatuuDo після: $Koatuu   
@if $ZonaDo<>$Zona then $ControlZona=Зона до: $ZonaDo після: $Zona   
@if $KvartalDo<>$Kvartal then $ControlKvartal=Квартал до: $KvartalDo після: $Kvartal   
@Map.DeselectAll
@Map.SelectLayer id70003
$SO=@Map.SelectedObject
$idKoatuu=ID7000301
@Map.Object[$SO].Parameter[$idKoatuu] $KOATYYNew
@Map.DeselectAll
@Map.SelectLayer id70004
$SO=@Map.SelectedObject
@Map.Object[$SO].Parameter[ID7000401] $Kvartal
@Text[2].Add $ControlKOATUU $ControlZona $ControlKvartal Розташування файлу - $FN
$P=$P+1
@Map.SaveToFile $FN
%Next
@CloseMap $FN
@if $I<$FC then @Goto %Loop
@Progress.Stop
@Text[2].Save $Papka\Результат перевірки.txt
@if $I<>$FC then @Goto %Loop2
$FileExists=@FileExists $Papka\PauseReplase.txt
@if $FileExists=1 then @DeleteFile $Papka\PauseReplase.txt
$FileExists=@FileExists $Papka\ReplasePause.txt
@if $FileExists=1 then @DeleteFile $Papka\ReplasePause.txt
%Loop2
@Dialog.Message Перевірено $I файлів||Звіт збережно у файлі $Papka\Результат перевірки.txt
@Run $Papka\Результат перевірки.txt
@Break
%Break
@Text[2].Save $Papka\Результат перевірки.txt
@Text[1].Save $Papka\ReplasePause.txt
@Text.Text $I
@Text.Save $Papka\PauseReplase.txt
@Dialog.Message Перевірено $I файлів з $FC||Звіт збережно у файлі $Papka\Результат перевірки.txt.||Наступного разу вам буде запропоновано продовжити обробку файлів.
@Run $Papka\Результат перевірки.txt

Категорія: Готові скрипти | Додав: Микола
Переглядів: 1629 | Завантажень: 0 | Коментарі: 8 | Рейтинг: 0.0/0
Всього коментарів: 8
avatar
7 skoropadikalona • 18:41, 17.07.2022
Доброго дня! Намагаюся створити кнопку, але при перевірці вибило помилку Line 69. Можна це виправити?
avatar
0
8 Микола • 22:13, 17.07.2022
Зараз усі скрипти, які зверталися до кадастрової карти (в тому числі і цей) не працюють, оскільки публічна кадастрова карта не доступна.
avatar
5 skoropadikalona • 22:07, 14.05.2022
Доброго дня. Як встановити даний шаблон?
avatar
0
6 Микола • 21:47, 15.05.2022
Доброго вечора! Див. тут, починаючи з абзацу 4.
avatar
3 vitason • 11:22, 24.05.2019
Підкажіть як у багатьох обміних файлах виправити (привести у відповідність до КВЦПЗ) цільове призначення, десь бачив плагін ніби до totalcommander, зараз не можу знайти
avatar
0
4 Микола • 19:48, 24.05.2019
Цитата
$Tab=@Calc char(9)
$Tab=@DequoteText $Tab
$Papka=@ProgramFolder
$Demo=@DemoMode
@if $Demo=1 then @Dialog.Message В демо-версії програми Digitals скрипт не зможе зберігати файли!
@SelectTab 3
$P=0
$WorkPapka=@Dialog.SelectFolder Відкрийте папку з файлами XML
@if $WorkPapka= then @break
@Text[1].FolderListTree *.xml $WorkPapka
$StartText=Початок
$I=0
@Text[2].Clear
%Start
$T1=@Text[1].Text
$FC=@Text[1].Count
@If $FC=0 then @Break В папці не знайдено жодного файла
@Progress.Start $FC Обробляю файли (всього $FC)
@Progress.StepBy $I
%Loop
@Progress.StepBy 1
$Prog=@Progress.Canceled
@if $Prog=1 then @Goto %Break
$I=$I+1
$FN=@Text[1].Line[$I]
$Ver=@Version
@if $Ver<42766 then @Goto %NoPerevValid
$R=@XML.Valid $FN
@if $R=0 then @Goto %Next
%NoPerevValid
$Open=@FileOpen $FN
@if $Open=0 then @Goto %Next
;
@Map.DeselectAll
@Map.SelectLayer id70005
$SO=@Map.SelectedObject
@if $SO=0 then @Goto %Next
@Map.Object[$SO].Parameter[id7000509]=100
@Map.Object[$SO].Parameter[id7000510]=01.01
@Map.Object[$SO].Parameter[id7000511]=для ведення товарного сільськогосподарського виробництва
@Map.Object[$SO].Parameter[id7000522]=<TechnicalDocumentationInfo><DocumentationType>004</DocumentationType><DocumentList>001</DocumentList><DocumentList>002</DocumentList><DocumentList>007</DocumentList><DocumentList>022</DocumentList><DocumentList>036</DocumentList><DocumentList>040</DocumentList><DocumentList>041</DocumentList><DocumentList>042</DocumentList></TechnicalDocumentationInfo>

;
@Map.DeselectAll
@Map.SelectLayer id70009
$SO=@Map.SelectedObject
@if $SO=0 then @Goto %Next
@Map.Selected.SetParameter id7000901 001.01
;
@Map.SaveToFile $FN
%Next
@CloseMap $FN
@if $I<$FC then @Goto %Loop
@Progress.Stop
@Dialog.Message Опрацьовано $I файлів


Вам потрібно створити нову кнопку і вставити в неї цей код.

При цьому в рядках, які червоним, поставити потрібні вам дані.
В результаті у всіх файлах будуть такі значення

Якщо потрібно замінити тільки цільове, то інші рядки, що червоним, видаліть
avatar
1 tem@ • 13:39, 25.02.2019
Микола, а можно как то сделать, чтоб:
+ кадастровый номер еще авт. вносился в ХМЛ;
+ пересохранялся сразу с новым названием?
avatar
avatar