FAQ для опытных пользователей (секреты)

Доброго..,!!
Як додати в XMLNormal.dmf в “Код адміністративно -територіальних утворень” випадаючий список щоб вибравши відповідний КОАТУУ адреса (Такато сільська рада) автоматично вписувалась в графу адреса. І при виборі комунальної форми власності автоматично прописувався власник і ЕРДПОУ (сільська рада і її код, адреса та ін…) і Інфо про власника

Дякую

П.С. Основне питання - це як додати випадаючий список (так як в категорії земель, або в цільовому) в будь якому полі вводу

Дякую. В мене до вас ще одне запитання. Заголовок списку шарів успішно зчитується у таку структуру (взято з прикладу - і структуру, і спосіб зчитування): TDMFLayerHeader=packed record Size:integer; Status:integer; Count:integer; MinService:integer; Reserve:Byte; Empty:integer; end; Поле Count показує актуальну кількість шарів (не службових), а MinService - чомусь завжди 1. До того ж список полів цієї структури відрізняється від списку в описі файла (не та послідовність і кількість). Те саме зчитується за допомогою цього коду: viewtopic.php?p=13296#13296
Я до чого це все веду: між тим прикладом завантаження DMF-файлу і описом його структури є розбіжності. Чи можливо таке, що опис неточний чи неповний? І якщо так, то чи можна розраховувати на оновлений опис формату DMF-файла? Наперед вдячний за відповідь.

То, что успешно считывается - не удивительно. И в коде и в описании размер структуры 5Integer + 1Byte. И что Count верный, тоже понятно - в обоих случаях он является третьим Integer.
Оба примера далеки от состояния “бери и пользуйся”, к тому же второй базируется на первом (отталкивается от тех же структур). Советую сделать как в описании и проанализировать прочитанное.

Думаю, что точный в достаточной степени. Но однозначно не полный, например, нет никаких сведений об описании таких объектов как таблицы. Тем не менее, эти сведения есть в примерах кода. А на обновленное описание я бы сильно не рассчитывал.

Пробачте, але де тут розмір структури одинаковий? Ось що в описі (скрін з файла DMF.doc):

Тут 4Integer + 1Byte - розмір структури 17 байт, відсутнє поле Empty, а поле Count - друге в списку. На практиці ж розмір структури 21 байт. Тому я й написав про неточний опис.
Щодо неповноти опису таблиць і іншого, то я з вами згідний - на прикладі можна розібратись. Я на прикладі майже розібрався і з тим заголовком списку шарів, але тут мова вже не про неповноту опису, а про його помилку. І, можливо, саме через цю помилку я не можу зчитати правильного значення поля MinService - про що, власне, і було моє перше питання.

Похоже, описание все-таки отличается. Скачайте дистрибутив, в папке Doc найдете другой вариант.

Дякую, тепер все гаразд.

Если в чертеже Autocad имеются объекты, созданные сторонним приложением - надстройкой над автокадом, тогда при отсутствии данного приложения данные объекты помещаются в слой ACAD PROXY ENTITY. Объекты этого слоя будут пропущены при загрузке DWG в Digitals. Чтобы преобразовать их в обычные объекты автокада и загрузить в Digitals используйте команду AECTOACAD.

Как известно новый модуль проверки XML файлов XMLChecker использует XSD схему для валидации содержимого кадастрового XML. Поэтому, если некоторые ошибки в вашем регионе не являются ошибками, можно отредактировать оригинальную схему - это файл Digitals\XMLCheck\XMLSchema.xsd.

Предположим, что тег LicenseIssuedDate в вашем регионе является необязательным. Найдите его в файле XMLSchema.xsd (открывается в любом текстовом редакторе, рекомендую Notepad++) и добавьте атрибут minOccurs=“0”. Должно получится так:

<xsd:element name="LicenseIssuedDate" type="xsd:date" minOccurs="0"> Сохраните схему и перезапустите XMLChecker. Уберите тег LicenseIssuedDate из вашего тестового XML и ошибка

Элемент “License” неполный. Также ожидается “LicenseIssuedDate”

больше не будет появляться.

Второй случай. Предположим, что тег LicenseIssuedDate является обязательным, но может содержать пустое значение. В данном случае тип xsd:date нас уже не устраивает, так как не допускает пустых значений. Создадим свой тип, объединяющий пустую строку и формат даты.

Добавьте в начало XMLSchema.xsd файла после строки

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" version="0.7"> эти два блока:

[code]<xsd:simpleType name=“empty-string”>
<xsd:restriction base=“xsd:string”>
<xsd:enumeration value=“”/>
</xsd:restriction>
</xsd:simpleType>

<xsd:simpleType name=“date-or-nothing”>
<xsd:union memberTypes=“xsd:date empty-string”/>
</xsd:simpleType>[/code]Они описывают новый тип с именем date-or-nothing, который допускает пустую строку либо строку в формате XML даты.

Затем снова найдите тег LicenseIssuedDate и измените его тип. Должно получится так

<xsd:element name="LicenseIssuedDate" type="date-or-nothing">

После перезапуска XMLChecker ошибка

Пустое значение не допускается в элементе “LicenseIssuedDate” перестанет появляться.

Є такий скрипт в експлікації “Expl_privat” колонка “Цільове призначення використання земельної ділянки”:

[Copy(Param(‘CV’),1,Pos(’ ',Param(‘CV’)))]

Він генерує код цільового призначення, причому тільки код! Тобто із цього - “02.01
для будівнитва і обслуговування жилого будиинку, господарських будівель і споруд (присадибна ділянка)” він видасть тільки - “02.01”.

А як написати скрип щоб видавав назву цільового, без кода - “для будівнитва і обслуговування жилого будиинку, господарських будівель і споруд (присадибна ділянка)” ?

P.S.
Шаблон із in4.

Copy(PARAM(‘CV’),(POS(’ ',PARAM(‘CV’))+1),Length(PARAM(‘CV’)))

Вдячний! В fast reports добре працює! :smiley:

Яким чином на плані це прописати в DMT файлі? Якщо це взагалі можливо, щось непригадаю щоб десь бачив код в DMT.

в DMT можна так:
GET(-1 P[CV])
ця формула відкидає(-) першу(1) частину(роздільник - пробіл) параметра CV

Працює! Дякую!

Есть потребность редактирования большого количества файлов xml. Возможно ли вообще, открыв папку с файлами в программе (все файлы на одной карте), что бы внесенные изменения сохранились в отдельных файлах? Так не хватает такой чудо функции. Или это фантастика?

А открытие по очереди, внесение изменений и сохранение (при помощи скрипта) не устроит?

Вариантов то немного :smiley:
Имеете ввиду что открыв например 100 файлов изменяем первый последующие изменятся соответственно первому?
А если нужно не только удалить параметр но и удалить например слой “Оренда”? Он правда будет не во всех файлах.
Есть разнобой, где то надо удалить строки параметров где то слой или и то и другое вместе. Понимаете о чем я?

Нет, скрипт может по очереди внести определенные однотипные изменения во все файлы. Что именно нужно изменить? Значение определенного параметра? Геометрию?

Нужно проверить файлы на наличие строк параметров “Дані про права користування…” и “Нормативна грошова оцінка”, если есть - удалить. Они должны быть пустые.
Так же удалить слой “Оренда” если есть.

Скрипт открывает по очереди все XML-файлы в указанной папке, удаляет значения параметров ID7000521 и ID7000562, удаляет объекты “ХМЛ:Оренда”. Измененный файл сохраняется(без запроса на перезапись). Целесообразно перед запуском скрипта отключить проверку при записи (Сервис-Настройки-Запись-In4/XML-Проверять In4/XML при записи). Напомню также о том что при сохранении XML-файлов неявно вызывается шаблон заполнения Digitals\Templates\XML.csv, если такой файл найден.

$SourceFolder=@Dialog.SelectFolder Выберите папку с xml-файлами
$FE=@FolderExists $SourceFolder
@if $FE<>1 then @Break Папка $SourceFolder не найдена
@Text[1].FolderList *.xml $SourceFolder
$FC=@Text[1].Count
@if $FC=0 then @Break xml-файлы не найдены в папке $SourceFolder
$I=0
%Loop
$I=$I+1
$FN=@Text[1].Line[$I]
@FileOpen $FN
$AM=@ActivateMap
@Map.SelectLayer ID70005
$SO=@Map.SelectedObject
@Map.Object[$SO].Parameter[ID7000521] $NONE
@Map.Object[$SO].Parameter[ID7000562] $NONE
@Map.DeselectAll
@Map.SelectLayer ID70006
@Map.Selected.Delete
@Map.SaveToFile $FN
@CloseMap $AM
@if $I<$FC then @Goto %Loop

Спасибо. Буду обкатывать.

UPD. Отлично. Работает. Благодарю.