Добрий вечір.
Прикріплений вами шаблон я колись створював. Ось він на сайті -
http://digitals.at.ua/load/dmt_shabloni ... zu/2-1-0-9Він у вас що не працює?
Як створюється така табличка? Тільки скриптами. Кадастровий план в шарі ХМЛ Земельна ділянка там має внутрішній скрипт. Його можна побачити в менеджері шарів, вибравши шар ХМЛ Земельна ділянка та через контестне меню - скрипт обробки подій.
Код виглядає таким чином:
;отримуємо знак табуляції (потрібно для поділу таблиці на стовпці)$Tab=@Calc char(9)
$Tab=@DequoteText $Tab
;отримуємо знак пробілу (потрібно для пустих клітинок в таблиці)$Space=@Calc char(32)
$Space=@DequoteText $Space
;виділяємо таблицю (яка поки що містить тільки заголовок)@Map.DeselectAll
@Map.SelectLayer ID70026
;Даємо їй ім'я "TO", за яким будемо до неї дальше звертатися$TO=@Map.SelectedObject
;Читаємо вміст цієї таблиці (тобто, її шапку, бо вона ще більше нічого не має)$Header=@Map.Object[$TO].TableText
@Map.DeselectAll
;Додаємо шапку таблиці в новий текстовий контейнер, який в нас буде називатися "Text[1]"@Text[1].Add $Header
;Присвоюємо ім'я "EO" об'єкту Земельна ділянка, щоб звертатися дальше до неї по імені (такі правила етикету тут )$EO=@EventObject
;Витягуємо площу ділянки (яка в нас зветься "EO")$ParcelArea=@Map.Object[$EO].Parameter[ID7000516]
;Формуємо другий рядок таблиці (пробіл,наступний стовпець,пробіл,наступний стовпець,пробіл,наступний стовпець,Усього земель$S=@Concat $Space,$Tab,$Space,$Tab,$Space,$Tab,$Space,$Tab,Усього земель
;Додаємо до цього рядка ще площу ділянки, яку ми отримали вище$S=$S$Tab$ParcelArea
;Додаємо сформований другий рядок таблиці в наш загальний текст Text[1]@Text[1].Add $S
;Починаємо цикл, який буде автоматично вибирати всі угіддя і витягувати з них потрібну інформацію$I=0
$J=0
$C=@Map.Count
%Loop
$I=$I+1
$LID=@Map.Object[$I].LayerID
@if $LID<>70009 then @Goto %Continue
$J=$J+1
;витягуємо старий код та назву угіддя (які прописані в нас в ХМЛ)$CN=@Map.Object[$I].Parameter[ID7000901]
;Відокремлюємо від назви код$LandCode=@StringPart 1 $CN
;Отримуємо назву без коду$LandName=@Calc Replace("$CN","$LandCode","",0,0)
$LandName=@DequoteText $LandName
;Беремо наш старий код угіддя і шукаємо відповідне йому значення нового коду по файлу CN2LandCode.txt (він у папці Lists)$LandCode2=@Map.Object[$I].CalculateFormula SEF($LandCode,CN2LandCode.txt)
;Беремо наш новий код і шукаємо, яка йому відповідає назва по файлу LandCode.txt$LandName2=@Map.Object[$I].CalculateFormula SEF($LandCode2,LandCode.txt)
;Витягуємо площу угіддя$LandArea=@Map.Object[$I].Parameter[ID7000903]
;Формуємо рядок таблиці по конкретному угідді (номер рядка / старий код / стара назва / новий код / нова назва)$S=@Concat $J,$Tab,$LandCode,$Tab,$LandName,$Tab,$LandCode2,$Tab,$LandName2,$Tab
;Додаємо до нашого рядка ще площу угіддя$S=$S$LandArea
;Додаємо наш рядок до загального тексту (таблиці) Text[1]@Text[1].Add $S
%Continue
;Переходимо вгору до наступного угіддя@if $I<$C then @Goto %Loop
;Кінець циклу по угіддях;Вигружаємо повну готову таблицю з контейнера Text[1] в перемінну $S (напряму в текст на карті не можна, посередники і тут працюють )$S=@Text[1].Text
;Перетворюємо наш текстовий об'єкт на карті (який до того на карті мав тільки заголовок) в повну таблицю@Map.Object[$TO].TableText $S
;Оновлюємо сторінку@Window.Refresh
Якось так.
Таблиця Класифікація земельної ділянки створена точно так само. ЇЇ код йде нижче в скрипті.