Головна » 2016 » Квітень » 10 » Функції та формули шаблонів DMT
12:37
Функції та формули шаблонів DMT

Для формування графічного звіту в програмі Digitals використовуються спеціальні DMT-шаблони. Викликаються вони командою Сервіс/Документи.

Дані шаблони являють собою звичайну карту, але з тою відмінністю, що всі лінійні об'єкти та полігони, що у статусі Правка після формування звіту автоматично замінюються на відповідні об'єкти оригінальної карти, а значення параметрів на відповідні значення параметрів оригінальної карти.

Щоб створити DMT-шаблон потрібно створити новий чистий листок і зберегти його в корні папки Digitals  під назвою Назва шаблону.dmt. Тобто, обов'язково додати в кінці назви крапку і три малі букви dmt. Або зберегти у форматі dmf, а потім у файловому менеджері змінити розширення файлу на dmt. Прямої можливості зберегти у формат dmt  в програмі поки що не реалізовано.

Та простіше, мабуть, створити шаблон на основі одного із вже готових, які можна знайти в тій же папці.

Після додавання нового шаблону для того, щоб він появився в меню Сервіс/Документи обов'язково треба перезапустити програму Digitals.

Якщо потрібно, щоб в меню Сервіс/Документи був пункт, який запускатиме відразу декілька шаблонів, тоді в папці Digitals потрібно створити папку під назвою Назва.dmt і перемістити туди ті шаблони (також обов'язково із розширенням .dmt), які потрібно згрупувати.

Редагуються шаблони, як звичайні карти. Але всі рамки, лінії, умовні знаки обов'язково слід переводити в статус Видимий або Вибір. Інакше вони просто зникатимуть. Зробити це можна в менеджері шарів. В той же час, ті лінійні об'єкти та полігони, які повинні замінитися об'єктами з вихідної карти (квартал, ділянка, суміжники, угіддя тощо) повинні обов'язково залишатися в статусі Правка.

Розглянемо більш детально функції та формули, які можна використовувати у шаблонах.

Вставляються дані функції просто в текст і на їх місці після генерації звіту отримуємо відповідні значення. Додатково можна переглянути спеціальну серію відеоуроків.

P[порядковий номер чи id параметра] - функція, яка витягує значення потрібного параметра по його порядковому номеру чи id

P[54] - витягне вміст параметра Цільове призначення по порядковому номеру параметра

P[ID7000511] - витягне вміст параметра Цільове призначення по коду параметра. Даний варіант є більш надійний, бо код параметра завжди один і той, а порядковий номер може мінятися, якщо ви добавите на карту інші параметри.

P[ID7000512] - витягне Форму власності

P[ID7000509] - витягне Категорію земель

Площа ділянки - P[0] га - приклад змішування тексту з формулою, яка витягує площу.

PARENT[номер чи id параметра](id шару) - витягує значення потрібного параметра з іншого (вказаного) шару. Бо коли ми формуємо звіт, то вибираємо один із шарів, найчастіше шар Земельна ділянка. Відповідно, щоб витягнути інформацію з інших шарів (Кадастрова зона, Кадастровий квартал, Реквізити тощо) слід використовувати дану функцію. Увага! Дана функція не призначена для угідь і інших об'єктів, які не ідентичні контуру виділеного полігону. Для угідь є інша функція.

Parent[ID7000301](ID70003):Parent[ID7000401](ID70004):P[ID7000513] - витягне повний кадастровий номер

Neighbors[номер параметра] - витягує вміст відповідного параметра із усіх суміжних об'єктів і формує ці значення через кому в одному рядку.

Neighbors[107] - витягне із усіх суміжників вміст параметру Додаткова інформаця і з'єднує всі витягнуті значення в один рядок через кому. Для коректної роботи функції в шаблоні повинна бути таблиця експлікацій. Приклад дивіться в шаблоні Акт согласования границ.DMT, який є в стандартному комплекті програми. Правда, там на прикладі ще старого IN4

XMP(Землі загального користування) - повертає значення суміжників. Те, що в дужках буде прописано коли значення пусте. Зазвичай, вставляється в табличку експлікації суміжників.

Повний варіант ПІБ:
Від А до Б - SEL(P[id7001000],|XMP(FULL,Землі загального користування) - кадастровий номер відсутній|*|XMP(FULL,Землі загального користування) - кадастровий номер P[id7001000])

Скорочено ПІБ:
Від А до Б - SEL(P[id7001000],|XMP(Землі загального користування) - кадастровий номер відсутній|*|XMP(Землі загального користування) - кадастровий номер P[id7001000])

XPT(id параметра,"Назва вузла") - витягує текстове значення вузла із параметра XML, коли в параметрі не тільки саме значення, а ще додаткові теги. Щоб переглянути структуру параметра з тегами, потрібно скопіювати вміст параметра в блокнот. Наприклад, скопіюємо адресу ділянки:

<ParcelLocationInfo><Region>Львівська область</Region><District>Дрогобицький район</District><Settlement>с.Уличне</Settlement><ParcelLocation><Urban/></ParcelLocation><ParcelAddress><StreetType>вулиця</StreetType><StreetName>Зелена</StreetName><Building>25</Building><Block>4</Block></ParcelAddress></ParcelLocationInfo>

Як бачимо, назва області знаходиться між тегами <Region>. Щоб її витягнути, потрібно скористатися такою формулою:

XPT(P[ID7000500],"Region") - поверне назву області із параметра ID7000500 (Місце розташування земельної ділянки).

XPT(P[ID7000500],"Settlement") - поверне назву населеного пункту.

Розглянемо більш складний випадок. Скопіюємо в блокнот вміст параметру Блок опису всіх власників та землекористувачів:

<Proprietors><ProprietorInfo><Authentication><NaturalPerson><FullName><LastName>Карпа</LastName><FirstName>Володимир</FirstName><MiddleName>Мар’янович</MiddleName></FullName><TaxNumber>3641783258</TaxNumber><Passport><DocumentType>Паспорт громадянина України</DocumentType><PassportNumber>444256</PassportNumber><PassportIssuedDate>1997-07-06</PassportIssuedDate><IssuanceAuthority>Дрогобицьким РВ УМВС України у Львівській області</IssuanceAuthority><PassportSeries>КА</PassportSeries></Passport><Citizenship>804</Citizenship><Address><Country>804</Country><Region>Львівська область</Region><District>Дрогобицький район</District><Settlement>село Снятинка</Settlement><Street>вулиця Зелена</Street><Building>56</Building></Address></NaturalPerson></Authentication><ProprietorCode>22</ProprietorCode><PropertyAcquisitionJustification><Document>001</Document><DocumentDate>2013-11-28</DocumentDate><DocumentNumber>4 сесія 7 скликання №12</DocumentNumber><ApprovalAuthority>Снятинська сільська рада</ApprovalAuthority></PropertyAcquisitionJustification></ProprietorInfo></Proprietors>

Тут, щоб, наприклад, витягнути прізвище землевласника/землекористувача, потрібно вказати повний шлях до відповідного тегу, в якому знаходиться потрібне нам значення.

XPT(P[ID7000520],"/Proprietors/ProprietorInfo/Authentication/NaturalPerson/FullName/LastName") - поверне прізвище землевласника/землекористувача.

XPT(P[ID7000520],"/Proprietors/ProprietorInfo/Authentication/NaturalPerson/FullName/MiddleName") - поверне по батькові землевласника/землекористувача.

Тобто, якщо так розібратися, перший загальний тег (в даному випадку це Proprietors) ми ігноруємо, а шукаємо всі наступні, в які вміщене потрібне нам значення. Кожний тег відкривається і закривається. Коли закривається - то має перед назвою похилий слеш (/).

XPT(P[ID7000520],"/Proprietors/ProprietorInfo/Authentication/NaturalPerson/TaxNumber") - поверне ідентифікаційний код землевласника/землекористувача.

XPT(P[ID7000520],"/Proprietors/ProprietorInfo/PropertyAcquisitionJustification/DocumentNumber") - поверне номер рішення, сесії та скликання.

XPT(P[ID7000520],"/Proprietors/ProprietorInfo/Authentication/NaturalPerson/FullName/LastName") XPT(P[ID7000520],"/Proprietors/ProprietorInfo/Authentication/NaturalPerson/FullName/FirstName") XPT(P[ID7000520],"/Proprietors/ProprietorInfo/Authentication/NaturalPerson/FullName/MiddleName") - витягне повністю Прізвище Ім'я По батькові землевласника/землекористувача.

XPT(P[ID7000520],"ProprietorInfo/ProprietorCode") - поверне категорію землекористування

Якщо ділянка має кілька співвласників, то щоб витягнути ПІБ наступних, потрібно формулу ось так:

XPT(P[ID7000520],"/Proprietors/ProprietorInfo[2]/Authentication/NaturalPerson/FullName/LastName") - поверне Прізвище другого співвласника

Якщо власник/користувач не фізична, а юридична особа:

XPT(P[ID7000520],"/ProprietorInfo/Authentication/LegalEntity/Name") - поверне назву юридичної особи

XPT(Parent[ID7000007](ID70000),"CompanyName") - витягне назву організації чи ФОП з реквізитів обмінного файлу

CLA(P[значення параметра]) - очищує вміст параметра від від пустих полів та ком між ними.

CLA(XPT(P[ID7000500],"Settlement"),  XPT(P[ID7000500],"ParcelAddress/StreetType") XPT(P[ID7000500],"ParcelAddress/StreetName"), XPT(P[ID7000500],"ParcelAddress/Building") XPT(P[ID7000500],"ParcelAddress/BuildingUnit")), XPT(P[ID7000500],"District"), XPT(P[ID7000500],"Region") - поверне адресу ділянки без пустих полів

ROP(P[значення параметра]) - переводить відповідне значення (ПІБ) в родовий відмінок.

ROP(XPT(P[ID7000520],"ProprietorInfo/Authentication/NaturalPerson/FullName/LastName") XPT(P[ID7000520],"ProprietorInfo/Authentication/NaturalPerson/FullName/FirstName") XPT(P[ID7000520],"ProprietorInfo/Authentication/NaturalPerson/FullName/MiddleName")) - поверне Прізвище Ім'я По батькові в родовому відмінку

DAP(P[значення параметра]) - переводить відповідне значення (ПІБ) в давальний відмінок.

FIO(P[значення параметра])Прізвище Ім'я По батькові скорочено.

FIR(P[значення параметра]) - Прізвище Ім'я По батькові скорочено в родовому відмінку.

FID(P[значення параметра])Прізвище Ім'я По батькові скорочено в давальному відмінку.

GET(номер частини,значення) - витягує відповідну частину рядка між комами чи пробілами

GET(1 P[id7000510]), GET(1 P[id7000510], 0) - витягне перше слово із параметра Цільове призначення, тобто, тільки код цільового призначення. Другий варіант функції повертає 0, якщо нічого не знайдено.

GET(-1 P[ID7000510]) - витягне весь рядок, крім першого слова, тобто назву цільового призначення

Дана функція, як і більшість інших була призначена для файлів IN4. Тоді частини параметрів розділялися комами. І якщо вказати GET(1,P[ххх]), то функція повертала частину параметра до коми. Ще варіантом було GET(1/3,P[ххх]) - перша частина до пробілу третьої частини до коми. Зараз це вже не потрібно. Витягувати якесь значення до коми нема сенсу.

​SEF(значення,назва файлу) - шукає певне значення у файлі та повертає відповідне йому значення з файлу

​SEF(GET(1 P[id7000510], 0),KZ.txt) - витягне з файлу KZ.txt відповідне значення коду цільового призначення. У файлі KZ.txt повинні бути перераховані всі потрібні коди цільового призначення та, через знак табуляції, їх значення. Наприклад:
​01.01   ТСГВ
01.03   ОСГ
02.03   ОЖБ

Файл, на який посилається функція повинен знаходитися у папці Digitals/List

SEF(XPT(P[ID7000522],"DocumentationType"),TechDocumentationTypes.txt) - прочитає з XML код типу документації і поверне за ним назву документації по текстовому файлу TechDocumentationTypes.txt

SEF(CUT(1,8,Parent[ID7000301](ID70003)),Rada.txt) - поверне назву місцевої ради по КОАТУУ (обрізавши його до 8 цифр) за файлом Rada.txt

FIL(Setup.ini,назва констани) - витягує відповідну константу із файлу Setup.ini. В даному файлі зберігаються ваші реквізити. Файл знаходиться у папці Template. Читайте, як редагувати ваші реквізити.

FIL(Setup.ini,Виконав) - витягне назву виконавця робіт

FIL(Setup.ini,Перевірив) - витягне назву того, хто перевірив

LEN(Значення) - повертає довжину рядка, тобто кількість символів в ньому

SEL(Значення,Значення1|Результат1|Значення2|Результат2|*|Інше) - якщо відповідне значення дорівнює заданому Значенню1, то отримаємо Результат1, якщо відповідне значення дорівнює Значенню2, отримаємо Результат2, якщо інше - отримаємо слово "Інше".

SEL(LEN(P[id7000513]),4|P[id7000513]|*|відсутній) - якщо довжина параметра Унікальний номер ділянки дорівнює 4, то поверне його значення. Якщо ні, то появиться слово "відсутній"

SEL(XPT(P[ID7000522],"DocumentationType"),006|ТД|*|ПЗ) - якщо код виду документації 006, отримаємо значення ТД, інакше - ПЗ

POS(Частина значення,Значення) - повертає позицію, в якій знаходиться частина певного значення

CUT(Початковий символ,Кількість,Значення) - витягує частину певного значення, починаючи з Початкового символу і довжиною в Кількість символів

CUT(11,1000,P[id7000509]) - поверне 1000 символів, починаючи із 11 із параметра Категорія земель. Тобто, відкине код категорії та слово Землі, а поверне, наприклад, сільськогосподарського призначення

CUT(9,2,XPT(P[ID7000522],"DraftingDate")).CUT(6,2,XPT(P[ID7000522],"DraftingDate")).CUT(1,4,XPT(P[ID7000522],"DraftingDate")) р. - витягне дату складання документації у форматі число.місяць.рік

XPT(Parent[ID7000007](ID70000),"Executor/ExecutorName/LastName") CUT(1,1,XPT(Parent[ID7000007](ID70000),"Executor/ExecutorName/FirstName")). CUT(1,1,XPT(Parent[ID7000007](ID70000),"Executor/ExecutorName/MiddleName")). - витягне прізвище та ініціали виконавця робіт з реквізитів обмінного файлу
 

OBJECTSCALE - відображає значення автоматично підібраного масштабу для згенерованого документу. Наявність даної функції в шаблоні сигналізує програмі, що даний шаблон треба автоматично масштабувати. Увага! Дана функція повинна бути в текстовому блоці без іншого тексту спереду чи позаду.

Date - повертає поточну дату.

P[0](номер параметра=значення1,номер параметра=значення2...) - повертає площу об'єктів, номер заданого параметра яких відповідає заданим значенням.

P[0](93=001.00,93=001.01,93=002.01,93=002.02,93=002.03) - поверне значення площі сільськогосподарських угідь, тобто, площу всіх об'єктів, параметр 93 яких, відповідає заданим кодам.

P[0](93=002.03) - поверне загальну площу садів

P[0](93=002.01) - поверне загальну площу сіножатей

FFF(Назва файлу) - дозволяє розмістити довгий вираз формули у зовнішньому файлі у папці Lists. Тобто, в текстовому файлі можна написати будь-яку із вище перерахованих функцій і даною функцією викликати її прямо з цього файлу. Це зручно, коли формули дуже великі, бо вони не красиво виглядають в шаблоні. Також, якщо довжина формули дуже велика, то вона може просто не працювати, бо є обмеження на довжину формули на карті.
 

DeltaX, DeltaY, DeltaZ
Функції повертають розмах об'єкта по Х-координаті, Y-координаті та Z-координаті відповідно.

SlopeAngle
Вертикальний кут нахилу об'єкта.

SlopeDir
Дирекційний кут спрямування ухилу об'єкта.

Latitude, Longitude
Повертають широту та довготу центру об'єкта відповідно.

AreaDeviation
Повертає середньоквадратичну помилку обчислення площі об'єкта, з умови, що точність визначення координат об'єкта становить 1 метр. Для приведення помилки, через * (зірочку) слід вказати реальну точність визначення координат об'єктів картки.

Наприклад, параметр виду =AreaDeviation*0.1 поверне помилку площі для точності визначення координат в 0.1 м.

Length3D
Обчислює тривимірну (просторову) довжину об'єкта. Нагадаємо, що фіксований параметр із кодом -1 “Довжина” обчислює довжину без урахування координати Z (тобто у проекції на горизонтальну площину).

_ (підкреслення)
Використовується як заміна пропуску при конкатенуванні текстових параметрів. (Нагадаємо, що символ пропуску використовується для відокремлення виразу від імені параметра, тому використовувати його безпосередньо при з'єднанні рядків не можна.)

Наприклад, з'єднати два параметри через пробіл в один рядок можна так: “=P[1]_P[2] Два в одному”.

FIO(Рядок)
Перша із сімейства функцій, призначених для відмінювання імен за відмінками. У дужках зазвичай задається посилання на параметр, що містить прізвище, ім'я та по батькові через пропуск. Ця функція повертає коротку форму запису імені (прізвище та ініціали) у називному відмінку.

Наприклад, якщо параметр номер 10 містить рядок Іванов Іван Іванович, параметр виду “=FIO(P[10])” поверне Іванов І. І.

ROP(), FIR()
Схиляють у родовий відмінок (Кого? Чого?). Функції повертають повну та коротку форму імені відповідно. Наприклад: Іванова Івана Івановича та Іванова І. І.

DAP(), FID()
Схиляють у дальний відмінок (Кому? Чому?).

VIP(), FIV()
Схиляють у знахідний відмінок (Кого? Що?).

TVT(), FIT()
Схиляють у орудний відмінок (Ким? Чим?).

PRP(), FIP()
Схиляють у прийменниковий відмінок (Про кого? Про що?).

Правила перетворення закінчень для кожного відмінка задаються у зовнішніх файлах, що знаходяться у програмній папці. Спочатку програма переглядає файл Names.txt, який містить чоловічі імена. Потім з файлів Rod.txt, Dat.txt, Vin.txt, Tvo.txt, Pre.txt вибирається відповідне закінчення (кожен із файлів відповідає за певний відмінок).

Файли закінчень містять три колонки: вихідне закінчення, закінчення для чоловічих імен, закінчення для жіночих. Якщо певний рядок закінчень позначений символом M або F, ці закінчення застосовуються тільки для чоловічого або жіночого імені відповідно.

LEN(Рядок)
Повертає довжину рядка. Рядок можна задати посиланням на параметр.

FST(Ліміт,Рядок), RST(Ліміт,Рядок)
FST повертає початкову частину Рядки з кількістю символів не більше Ліміт, обрізану за найближчим пробілом або комою. RST повертає залишок Рядки після останнього перед Ліміт символу пробілу або комою.

Функції зазвичай працюють у парі та застосовуються для розбивки довгої Рядки на дві частини. Приклад застосування даних функцій можна знайти у шаблоні держакту Держакт (блакитний) лицьова.DMT.

Переглядів: 13524 | Додав: Микола | Рейтинг: 5.0/3
Всього коментарів: 761 2 »
avatar
73 fullmetal_777 • 15:56, 18.01.2022
Підкажіть будь ласка, чи можна за допомогою функції CUT обрізати рядок з кінця?
avatar
1
74 Микола • 16:11, 18.01.2022
CUT(11,1000,P[id7000509]) - поверне 1000 символів. Поставте таке число, яке гарантовано більше за кількість символів у рядку. Або, можливо, вам підійде більше така функція - GET(-1 P[ID7000510]) - витягне весь рядок, крім першого слова, тобто назву цільового призначення
avatar
75 fullmetal_777 • 16:42, 18.01.2022
Справа в тому що я хотіла б витягти інформацію про суміжників із блоку додаткової інформації, але витягує некоректно, у такому форматі:
Від А до Б <AdditionalInfoBlock><AdditionalInfo>землі Котелевської селищної ради (кадастровий номер відсутній)</AdditionalInfo></AdditionalInfoBlock>
Від Б до В <AdditionalInfoBlock><AdditionalInfo>зем. ділянка гр. Нечипоренко Г.О. (кадастровий номер відсутній)</AdditionalInfo></AdditionalInfoBlock>
Від В до Г <AdditionalInfoBlock><AdditionalInfo>зем. ділянка гр. Малохліб Є.О. (кадастровий номер відсутній)</AdditionalInfo></AdditionalInfoBlock>
Від Г до Д <AdditionalInfoBlock><AdditionalInfo>зем. ділянка гр. Мигловець В.В. (кадастровий номер відсутній)</AdditionalInfo></AdditionalInfoBlock>
Від Д до А <AdditionalInfoBlock><AdditionalInfo>землі Котелевської селищної ради (кадастровий номер відсутній)</AdditionalInfo></AdditionalInfoBlock>

Фунція:
Від А до Б P[ID7001004]
Від А до Б P[ID7001004]


Завдяки CUT вдалося вирізати першу зайву частину:

Фунція:
Від А до Б CUT(37,1000,P[ID7001004])
Від А до Б CUT(37,1000,P[ID7001004])


Результат:
Від А до Б землі Котелевської селищної ради (кадастровий номер відсутній)</AdditionalInfo></AdditionalInfoBlock>
Від Б до В зем. ділянка гр. Нечипоренко Г.О. (кадастровий номер відсутній)</AdditionalInfo></AdditionalInfoBlock>
Від В до Г зем. ділянка гр. Малохліб Є.О. (кадастровий номер відсутній)</AdditionalInfo></AdditionalInfoBlock>
Від Г до Д зем. ділянка гр. Мигловець В.В. (кадастровий номер відсутній)</AdditionalInfo></AdditionalInfoBlock>
Від Д до А землі Котелевської селищної ради (кадастровий номер відсутній)</AdditionalInfo></AdditionalInfoBlock>

Якби була можливість вирізати останню частину, бо кількість потрібних символів завжди різна, а непотрібних однакова що на початку рядка, що в кінці. Дякую за відповідь!
avatar
0
76 Микола • 17:08, 18.01.2022
Для цього є функція XPT:
Від А до Б XPT(P[ID7001004],"AdditionalInfoBlock/AdditionalInfo"))
avatar
69 lvivsurveyer • 13:10, 20.11.2020
підкажіть чи функція GET працює в вкладці інфо
задача наступна є шар який називається "1 ділянка" (параметр -5, необхідно вивести на карту номер ділянки, тобто "1"
я пробував це записати так
"=GET(1 P[-5]) Номер ділянки скорочений" та "=GET(1 P[-5], 0) Номер ділянки скорочений"
в результаті отримав "GET(1"
підкажіть де я накосячив :\'( 
хотів зробити по аналогії з ПІБ яке відміняється чи в якому обрізаються ініціали і лишається лиш прізвище
посилання на скрін прикріплюю
https://drive.google.com/file/d/1MvsgqPulRredtNbL_VpRrqM2Lf-eAtRQ/view?usp=sharing
avatar
0
70 Микола • 15:12, 20.11.2020
В параметрах на закладці інфо пробіл є роздільником між формулою на власне назвою параметру. Тому функції dmt, які мають в собі пробіли не підтримуються тут.
avatar
71 lvivsurveyer • 16:24, 20.11.2020
в такому випадку можна іншим чином вирішити дану проблему?
avatar
0
72 Микола • 22:02, 20.11.2020
Користуйтеся скриптом, який це робить:
Вкажіть id шару (рядок 1), id параметра, з якого копіювати (рядок 2) та в який копіювати (рядок 3)
avatar
66 matskows • 01:01, 31.10.2020
Доброї ночі! Хочу запитати в чому може бути проблема якщо не тягне Виконавця робіт у dmt шаблон якщо він привязаний до скрипта, при вписуванні в ньому різних формул які наведені вище!
Пробував добавити теги у самій кнопці
;------Виконавець
@Map.DeselectAll
@Map.SelectLayer ID70000
$MON=@Map.SelectedObject
$VR=@Map.Object[$MON].Parameter[ID7000007]
$Company=@XML.XPath Companyname $P
$Trudyaga=@XML.XPath ChiefName $P
;------Виконавець
avatar
67 Анонімно • 16:27, 31.10.2020
Спробуйте так:
;------Виконавець
;@OpenLog
@Map.DeselectAll
@Map.SelectLayer ID70000
$MON=@Map.SelectedObject
$VR=@Map.Object[$MON].Parameter[ID7000007]
$Company=@XML.XPath /Executor/CompanyName $VR
$TrudyagaLN=@XML.XPath /Executor/Chief/ChiefName/LastName $VR
$TrudyagaFN=@XML.XPath /Executor/Chief/ChiefName/FirstName $VR
$TrudyagaMN=@XML.XPath /Executor/Chief/ChiefName/MiddleName $VR
$Trudyaga=$TrudyagaLN $TrudyagaFN $TrudyagaMN
@Dialog.Message $Company|$Trudyaga
;@CloseLog D:\5463.txt
;------Виконавець
avatar
68 matskows • 21:37, 31.10.2020
Назву фірми витягнуло, а директора всерівно не хоче, в dmt залишає $Trudyaga cry 
Але велике дякую за допомогу biggrin
avatar
64 SerjN • 21:26, 27.10.2020
Микола, підскажіть, скрипт обробки подій обробляє тільки одну подію чи можна туди вписати скрипти для різних подій? Чи є якісь особливості при вписанні скриптів для декількох подій?
avatar
0
65 Микола • 22:26, 27.10.2020
можна і декількох одночасно, наприклад, я собі на карті-базі, в якій десятки тисяч обмінників, написав внутрішній (меню Карта - Скрипт обробки подій) скрипт карти:
%Events.OnActivateMap
@SelectTab 2
%Events.OnFileOpen
@SelectTab 2
%Events.OnSelect
@SelectTab 2
%Events.OnAdd
@Window.ShowSelected

Він означає:
Подія 1. Якщо карту активувати - програма зразу переходить на закладку Правка (щоб не відбувався аналіз карти на закладці Інфо).
Подія 2. Якщо карту просто тільки відкрили - програма також переходить на закладку Правка
Подія 3. Якщо виділити якийсь інших об'єкт на карті - так само переходить на закладку Правка
Подія 4. Якщо на карту додати новий об'єкт (додаю для перевірки накладок) - то карта автоматично центрується на цьому об'єкті.

І всі ці події спрацьовують не залежно від їхнього розміщення (перша чи друга, чи остання)
avatar
62 SerjN • 00:09, 24.10.2020
Микола, підскажіть, яка функцієя виводить в шаблон значення змінної, отримане під час роботи скрипта?
avatar
0
63 Микола • 19:22, 24.10.2020
@Map.ReplaceTableVariables - сканує текст таблиць і замінює змінні їх значеннями
avatar
60 Анонімно • 15:16, 28.05.2020
Добрый день. Подскажите пожалуйста почему функция OBJECTSCALE масштабирует но не в координатах? Мой участок улетает с 5-й зоны в 12-ю, с 4-й в 25-ю.
avatar
0
61 Микола • 18:16, 28.05.2020
Добрий день!
Бо так працює дана функція. Вона завжди вставляє об'єкт в центр шаблону так само як функція Спеціальна вставка - В центр екрану.

В модулі "Документація" для автомасштабу використаний інший, спеціально розроблений функціонал, який перед формуванням відкриває кожний шаблон, рахує розмах об'єкту так, щоб він вмістився в цей шаблон і зразу змінює масштаб шаблону. І аж тільки після цього запускає формування звіту. Таким чином, ділянка завжди у вихідних координатах. Не знаю, чому розробники Digitals в стандартних шаблонах кадастрових планів, які були колись для in4 за замовчуванням не використовували таку функцію. Це на багато зручніше, ніж OBJECTSCALE
avatar
54 ukr_geo • 21:21, 23.05.2020
Добрый вечер подскажите почему у меня не работает функция FFF
Я создаю шаблон ДМТ, в нем вставляю текст и прописываю FFF(AD.txt); затем в папке Lists создаю текстовый документ AD.txt и прописываю в нем : CLA(XPT(P[ID7000500],"Settlement"),  XPT(P[ID7000500],"ParcelAddress/StreetType") XPT(P[ID7000500],"ParcelAddress/StreetName"),  XPT(P[ID7000500],"ParcelAddress/Building") XPT(P[ID7000500],"ParcelAddress/BuildingUnit")), XPT(P[ID7000500],"District"), XPT(P[ID7000500],"Region")
А мне вместо полного адреса выкидывает только две запятые 
в чем проблема? Просто если я пропишу P[ID7000509] то он выкидывает категорию( 200 землі .....) ,а вот на большую функцию не работает
avatar
0
55 Микола • 21:55, 23.05.2020
Використання функції XPT у файлі, який викликається функцією FFF не підтримується. Інші йдуть. Не знаю, з чим це пов'язано. Може з тим, що дана функція появилася значно пізніше від FFF і тому FFF просто не розуміє її. Звертайтеся до розробників Digitals з цим питанням, щоб виправили.
avatar
56 ukr_geo • 23:36, 23.05.2020
Тогда у этой функции очень малый диапазон использования! Большая половина информация которая заложена в ХМЛ втягивается с помощью ХМР. Зачем тогда нужна функция FFF???
avatar
57 ukr_geo • 00:07, 24.05.2020
Подскажите еще пожалуйста как правильно пользоваться функцией CUT?
К примеру CUT(9,2,XPT(P[ID7000522],"DraftingDate")).
CUT(6,2,XPT(P[ID7000522],"DraftingDate")).
CUT(1,4,XPT(P[ID7000522],"DraftingDate")) р.
 - витягне дату складання документації у форматі число.місяць.рік
Не очень понимаю как мне вытянуть - дату реестрації документації у форматі число.місяць.рік
я понимаю что цифры 2,2,4 - это количество символов которые нужно вытянуть, а 9,6,1 - ???? как они связаны с датой?
avatar
0
58 Микола • 11:25, 24.05.2020
У значенні дати є 10 символів

CUT(9,2, означає, що функція витягне 2 символи, починаючи з дев'ятого
CUT(6,2 означає, що функція витягне 2 символи, починаючи з шостого
CUT(1,4 означає, що функція витягне 4 символи, починаючи з першого
avatar
59 ukr_geo • 12:49, 24.05.2020
Дякую!:ok:
avatar
49 00zakachka00 • 14:34, 05.02.2020
Очень интересно, но ничего не понятно smile
avatar
0
51 Микола • 16:10, 05.02.2020
Ви про Функції та формули шаблонів DMT?))
avatar
48 natali_kiss87 • 14:01, 05.02.2020
Доброго дня! Я новачок у даній програмі, тому дуже потребую допомоги. Скажіть будь ласка,як мені додати той шаблон, чи як правильно назвати, коли я при розроблені ТД,коли сформовані план меж, кадастровий, матеріали польових та список межових знаків, натискаю " генератор отчетов", і немає того що мені потрібно, але воно знаходиться в закладці "дизайнер" пакет  документов" і як обраний документ додати на панель зліва? Коли натискаю ок, воно ніби зіскакує і нічого не відбується....
avatar
0
50 Микола • 16:05, 05.02.2020
Так зрозумів, що ви запитуєте про програму FastReports, яка запускаєтья через меню Digitals Сервіс - Генератор звітів? Вибачте, але я з даною програмою не працюю і не дуже орієнтуюся, як там що додається. Зверніться з цим питанням в техпідтримку Digitals (меню Допомога - Про програму). В мене документація (основні сторінки) формується не через Генератор звітів, а за допомогою спеціально скрипту - Скрипт-модуль "Документація".
avatar
52 natali_kiss87 • 16:15, 05.02.2020
Цей скрипт модуль потрібно купити, так?
avatar
0
53 Микола • 17:10, 05.02.2020
якщо хочете
avatar
46 prozerpina7 • 15:09, 14.03.2019
Добрый день. При помощи каких функций программы можно выделить цветом смежников, угодья?
avatar
0
47 Микола • 00:22, 15.03.2019
щоб суміжники були різними кольорами, в шаблон через менеджер шарів потрібно додати шари Border

див. приклад

Щоб зробити угіддя різнокольоровими (залежно від значення певного параметра, наприклад, коду угіддя, площі), потрібно виділити всі угіддя та перейти в меню Карта - Створити тематичний вигляд. У списку, який появиться, вибрати потрібний параметр (наприклад, код угіддя). Все.
avatar
44 Іванов Иван • 21:47, 11.03.2019
Микола мається на увазі вусик на самом кадастровом плане відображення суміжника еапрямок суміжника (стрелочка) та букви ББ'
avatar
0
45 Микола • 22:02, 11.03.2019
я скільки працюю в геодезії, не бачив кадастрового плану, де від вкралпеного контура йде вусик із стрілочкою. І що ця стрілочко значить? Адже стрілка це напрям. Напрям куди? Мені здається, що більш доцільно робити виноски.
avatar
42 Іванов Иван • 20:30, 11.03.2019
Микола дуже дякую, все працю. Але хотів уточнити якщо це можливо - як добавити вираз Від Д до Д' та вусик на кад плані суміжника.?
avatar
0
43 Микола • 21:23, 11.03.2019
замініть в коді скрипту рядок
@if $Kontrol=1 then $Result=$B1($B1')$Tab$Res
на
@if $Kontrol=1 then $Result=від $B1 до $B1'$Tab$Res

А який вусик ви маєте на увазі? Там створюється спеціальна виноска - лінія із підписом
avatar
40 Іванов Иван • 16:19, 10.03.2019
Микола пробачте я не зрозумів а куди цей скрипт треба вставляти в отдельно в кнапку чи в карту скриптов их подій підскажіть будь-ласка
avatar
0
41 Микола • 16:48, 10.03.2019
окремою кнопкою
при цьому копіюйте і другу частину коду і вкажіть у рядку
@ExecuteDocument Кад план
назву вашого шаблону.
Читайте в описі скрипту, там написано як це зробити.
avatar
38 bk2013 • 09:33, 08.03.2019
Микола, у Вас в скрипті акт реалізовано опис меж з вкрапленими контурами підскажіть будь-ласка де я можу почитати цей скрипт так як Ваш скрипт компільваний під ключ я не взмозі побачити. ДЯКУЮ
avatar
0
39 Микола • 12:56, 10.03.2019
я вам дав ярлик на готовий скрипт, для чого вам ще акт?
avatar
36 bk2013 • 20:03, 06.03.2019
Микола, при формувані звіту (кадастрового плану) з вкраплиними контурами XML в опису меж не з'являється опис вкрапленого контуру я використовую 
Від А до Б XMP(FULL,Землі загального користування)
Від А до Б XMP(FULL,Землі загального користування) 
можливо ще є варианти для опису меж з вкраплиними контурами.
avatar
0
37 Микола • 00:06, 07.03.2019
тут є один варіант - формувати експлікацію суміжників скриптами. Див. Скрипт, який створює експлікацію суміжників із вкрапленими контурами. В коді скрипту замість
$Res=@Map.Object[$N].CalculateFormula XMP(пусто)
поставте свій варіант для повного вигляду ПІБ:
$Res=@Map.Object[$N].CalculateFormula XMP(FULL,Землі загального користування)
avatar
Доброго дня! А можна зробити список суміжників Прізвище, І`мя, По батькові повністю бо при обрізанні до ініціалів не відмінює суміжника?
avatar
0
34 Микола • 15:00, 15.01.2019
Доброго дня! Список суміжників в повній формі я в себе формую скриптами (перемінна $SumizList ). Як це реалізувати через DMT-формули не знаю.
avatar
35 mrskorobagatyj • 23:53, 16.01.2019
$S=@Map.Parameters.Get ID7001007
@if $S= then @Map.Parameters.Add 7001007 5 Суміжник у називному відмінку
;додаємо параметр ID7001007 до шару XML : Суміжник
$S=@Map.Layers.GetValidParameters ID70010
@Map.Layers.SetValidParameters ID70010 $S ID7001007
;створюємо параметр ID7001008
$S=@Map.Parameters.Get ID7001008
@if $S= then @Map.Parameters.Add 7001008 5 =ROP(P[ID7001007]) Суміжник в родовому відмінку
;добавляем параметр ID7001008 в слой XML : Суміжник
$S=@Map.Layers.GetValidParameters ID70010
@Map.Layers.SetValidParameters ID70010 $S ID7001008
;добавляем параметр ID70010013 в слой XML : Суміжник
$S=@Map.Layers.GetValidParameters ID70010
@Map.Layers.SetValidParameters ID70010 $S ID7001013
$S=@Map.Parameters.Get ID7001013
@if $S= then @Map.Parameters.Add 7001013 5 кад. номер невизначений
;добавляем параметр ID7001008 в слой XML : Суміжник
$S=@Map.Layers.GetValidParameters ID70010
@Map.Parameters.Mask ID7001013 *=(кад. номер невизначений)
@Map.Layers.SetValidParameters ID70010 $S ID7001013

Опис меж:
Від А до Б    P[ID7001006]_P[ID7001008]_P[ID7001000]_P[ID7001013]
Від А до Б    P[ID7001006]_P[ID7001008]_P[ID7001000]_P[ID7001013]

P[ID7001006] це приставка (земельна ділянка гр. та землі державної власності)
avatar
результат ,,
avatar
0
32 Микола • 17:10, 10.01.2019
спробував в себе і справді дана функція не працює із новими функціями типу XPT. Це пов'язано, мабуть, з тим, що дана функція дуже рідко використовується на практиці і її просто не протестували, додавши XPT. Раніше, коли ще були ін4, вона була призначена в першу чергу для винесення коду типу цього:
Sel(GET(1/1,P[41]),21|"особистого селянського господарства"|22|"обслуговування житлового будинку, господарських будівель та споруд").
Але і тут вона рідко використовувалася із появою функції SEF, де можна зробити те саме, але без розкидання у різні текстові файли. Наприклад:
SEF(FUNC,func.txt)
а в файлі func.txt
Код:
FUNC<tab>SEF(CRITERIA,VALUE1|SEF(FUNC1,func.txt) |VALUE2|SEF(FUNC2,func.txt)|*|SEF(FUNCOTHER,func.txt))
FUNC1<tab>.....
FUNC2<tab>.....
FUNCOTHER<tab>.....
avatar
Підкажіть як конкретно використовувути FFF в дмт шаблонах.
avatar
0
30 Микола • 15:38, 10.01.2019
Функція FFF створена для випадків, коли формула не вміщається в назву параметра. Все що йде слідом за нею розглядається як назва файлу, в якому зберігається формула.
Наприклад у шаблоні прописуємо:
FFF(Формула.txt)

У текстовому файлі Формула.txt (який треба створити у папці Lists):
CLA(XPT(P[ID7000500],"Settlement"),  XPT(P[ID7000500],"ParcelAddress/StreetType") XPT(P[ID7000500],"ParcelAddress/StreetName"),  XPT(P[ID7000500],"ParcelAddress/Building") XPT(P[ID7000500],"ParcelAddress/BuildingUnit")), XPT(P[ID7000500],"District"), XPT(P[ID7000500],"Region")

В результаті отримаємо адресу ділянки.

Перевага даної функції в тому, що не треба  в шаблонах прописувати ці всі довгі коди. Їх можна винести в окремий текстовий файл.
avatar
27 bk2013 • 17:32, 13.12.2018
Микола, підскажіть будь-ласка при функції XPT(P[ID7000500],"Region") витягує Назву області та назву "область" 
А яким чином витягнути тільки назву області, пробував таким чином ROP(CLA(GET(1 P[ID7000500]))) області, витягує, але витягує в такому форматі <ParcelLocationInfo><Region>Херсонської області. Яким чином щоб тільки Херсонської витягувало. Дякую.
avatar
1
28 Микола • 23:59, 13.12.2018
Ви у формулі упустили XPT
ROP(GET(1 XPT(P[ID7000500],"Region")))
CLA тут, мабуть, зайве буде, тому його викинув
avatar
25 bk2013 • 13:23, 05.10.2018
Скільки буде коштувати скрипт який розбиває, добавляє на сторінки по шаблону ДМТ
каталог координат
avatar
0
26 Микола • 17:02, 05.10.2018
той каталог, який формується програмним методом я не знаю, як розбити на сторінки, бо там всесь текст читаєтся скриптом як один рядок і ніякі розділювачі не можу підібрати, щоб розбити дану таблицю на рядки.
1-20 21-30
avatar