Приклади робочих скриптів у звітових формах

Геодезична інформаційна система 6 та Геодезична інформаційна система 6 Агро

Модератори: NickS, feNICKs

Аватар користувача
NickS
Повідомлень: 1393
З нами з: 04 квітня 2008, 12:21

Re: Примеры рабочих скриптов в отчётных формах

Повідомлення NickS » 20 вересня 2017, 16:00

007stas писав:Доброго дня. Підкажіть : де в коді шаблона "Ведомость вычисления координат пикетов" використати значення ('true' or 'false') поля <DM3.PGeomove."Visible">, щоб друкувалися лише пікети станцій видимість яких увімкнена.

Спершу треба для MasterData1 (це бенд группи пікетів) створити подію "OnBeforePrint" і туди записати код:

Код: Виділити все

  MasterData1.Visible   := Not(<DM3.PGeomove."Visible">);
  DetailHeader1.Visible := Not(<DM3.PGeomove."Visible">);
  DetailFooter1.Visible := Not(<DM3.PGeomove."Visible">);

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

Далі, треба перейти в подію "OnBeforePrint" бенда "Band1" (DetailData) і оцей рядок:

Код: Виділити все

  If <Line#> = 1 then

Замінити на:

Код: Виділити все

  If (<Line#> = 1) or <DM3.PGeomove."Visible"> then

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

Аватар користувача
NoViChoK
Повідомлень: 140
З нами з: 10 вересня 2012, 18:09

Re: Примеры рабочих скриптов в отчётных формах

Повідомлення NoViChoK » 30 вересня 2017, 19:19

Как задать выполнение формирования отчета конкретного шаблона для всех отмеченных участков (через код или в FR настройка какая то есть) ?
Например есть такая подшивка:
- поясниловка
- кадастровый план

Как сделать что бы при отмеченных например двух участках кадастровый план формировался для каждого участка.

То есть чтоб бы после запуска подшивки выдало отчет такого формата:
- поясниловка
- кадастровый план для участка 1
- кадастровый план для участка 2

Аватар користувача
NickS
Повідомлень: 1393
З нами з: 04 квітня 2008, 12:21

Re: Примеры рабочих скриптов в отчётных формах

Повідомлення NickS » 02 жовтня 2017, 09:45

NoViChoK писав:Как задать выполнение формирования отчета конкретного шаблона для всех отмеченных участков (через код или в FR настройка какая то есть) ?
Например есть такая подшивка:
- поясниловка
- кадастровый план

Как сделать что бы при отмеченных например двух участках кадастровый план формировался для каждого участка.

То есть чтоб бы после запуска подшивки выдало отчет такого формата:
- поясниловка
- кадастровый план для участка 1
- кадастровый план для участка 2


Это не простая задача в плане понимания. Если надо в одном шаблоне получить информацию по отмеченным участкам, то надо в коде отфильтровать участки по зелёной метке и перебрать эти участки в цикле, собирая по ним информацию. Это для поясниловки. Пример можно увидеть в шаблоне "Титульная 2 (для технической документации).fr3". Если надо чтобы шаблон печатался столько раз, сколько отмеченных участков, как в Вашем случае для кадастрового плана, то надо тоже отфильтровать в коде участки по зелёной метке, но уже на самой странице организовать перебор участков с помощью бендов. Если шаблон не состоит из бендов, как кадастровый план, то можно создать один бенд, к нему подключить наши отфильтрованные участки и в свойствах бенда выставить "Формировать новую страницу", чтобы каждый раз этот бенд выводился с новой страницы. Если в шаблоне есть и другие бенды, то можно начало отчёты подключить так как сказано в предыдущем предложении, а все остальные бенды в шаблоне переделать на бенды уровня выше. Так например, если у Вас там бенды MasterData, то надо их переделать в DetailData. Пример можно увидеть в шаблоне "Акт приёмо-передачи межевых знаков 3.fr3".

chzemlemir
Повідомлень: 71
З нами з: 25 листопада 2016, 11:43

Re: Примеры рабочих скриптов в отчётных формах

Повідомлення chzemlemir » 04 жовтня 2017, 22:32

Питаннячко. Є вмене шаблончик зроблений із "Ведомость вычисления координат пикетов (портрет).fr3"
і виявився такий нюанс, що нулі не ставляться
град[DM3.TmGeoPoint."NChildPoint"]
мин[IIF(<DM3.TmGeoPoint."Lcutm"> <> 0, <DM3.TmGeoPoint."Lcutm">, '')]
сек[IIF(<DM3.TmGeoPoint."Lcutc"> <> 0, FormatFloat('0.0', <DM3.TmGeoPoint."Lcutc">), '')]
що потрібно виправити?
Вкладення
.jpg

Аватар користувача
NickS
Повідомлень: 1393
З нами з: 04 квітня 2008, 12:21

Re: Примеры рабочих скриптов в отчётных формах

Повідомлення NickS » 05 жовтня 2017, 09:11

chzemlemir писав:Питаннячко. Є вмене шаблончик зроблений із "Ведомость вычисления координат пикетов (портрет).fr3"
і виявився такий нюанс, що нулі не ставляться
град[DM3.TmGeoPoint."NChildPoint"]
мин[IIF(<DM3.TmGeoPoint."Lcutm"> <> 0, <DM3.TmGeoPoint."Lcutm">, '')]
сек[IIF(<DM3.TmGeoPoint."Lcutc"> <> 0, FormatFloat('0.0', <DM3.TmGeoPoint."Lcutc">), '')]
що потрібно виправити?

Ось ця формула:

Код: Виділити все

[IIF(<DM3.TmGeoPoint."Lcutm"> <> 0, <DM3.TmGeoPoint."Lcutm">, '')]

Тут функція IIF(<1>, <2>, <3>) має три параметри. Перший - це умова, якщо умова виконується, то підставляється рядок із параметру 2, якщо умова не виконується, то підставляється рядок із параметру 3. Отже, розберемо цю функцію:
Параметр 1 - <DM3.TmGeoPoint."Lcutm"> <> 0 (тобто, якщо мінути кута не дорівнюють нулю)
Параметр 2 - <DM3.TmGeoPoint."Lcutm"> (вставляється значення мінут кута)
Параметр 3 - '' (нічого не вставляється).

Отже, щоб нулі вставлялись в будь-якому випадку, потрібно просто спростити ці формули:

Код: Виділити все

град[DM3.TmGeoPoint."NChildPoint"]
мин[DM3.TmGeoPoint."Lcutm"]
сек[FormatFloat('0.0', <DM3.TmGeoPoint."Lcutc">)]

Аватар користувача
NoViChoK
Повідомлень: 140
З нами з: 10 вересня 2012, 18:09

Re: Примеры рабочих скриптов в отчётных формах

Повідомлення NoViChoK » 23 жовтня 2017, 15:34

Осваиваю понемногу код. Нужна помощь.
Хочу прописать условие: если площадь участка меньше 0.5 то 0, если площадь участка больше 0.5 но меньше 2 то 1, если больше 2 то 2.
Задаю переменную Area = (FormatFloat(fdLandAreaG, <DM1.QbObject."Area">/10000);
Потом делаю с Area число с помощью strtoint и закидаю в переменную Area2.
Но при попытке задать условие например "если Area2 > 2" ругается что не целое число. Как сделать правильно?

Аватар користувача
NickS
Повідомлень: 1393
З нами з: 04 квітня 2008, 12:21

Re: Примеры рабочих скриптов в отчётных формах

Повідомлення NickS » 24 жовтня 2017, 14:40

NoViChoK писав:Осваиваю понемногу код. Нужна помощь.
Хочу прописать условие: если площадь участка меньше 0.5 то 0, если площадь участка больше 0.5 но меньше 2 то 1, если больше 2 то 2.
Задаю переменную Area = (FormatFloat(fdLandAreaG, <DM1.QbObject."Area">/10000);
Потом делаю с Area число с помощью strtoint и закидаю в переменную Area2.
Но при попытке задать условие например "если Area2 > 2" ругается что не целое число. Как сделать правильно?

Если Вы рассчитываете площадь в гектарах и хотите использовать округление из установок, то да, Вам надо использовать функцию "FormatFloat", но она возвращает не число, а строку, потому надо потом это значение преобразовать обратно в вещественный тип. Функция "strtoint" преобразовывает строку в целое чесло. Понятное дело, что строку вида "0.3462" в целое преобразовать напрямую не выйдет!
Код можно представить так:

Код: Виділити все

  // Сразу округляем число в гектарах, конвертируем его в вещественное и берём модуль числа (чтобы не было отрицательных значений).
  // Переменная Area - вещественного типа (double)
  Area := Abs(StrToFloat(FormatFloat(fdLandAreaG, <DM1.QbObject."Area"> / 10000)));

  If (Area >= 0) and (Area <= 0.5) then
  begin
    // 0 ...
  end
  else
  begin
    If (Area > 0.5) and (Area <= 2) then
    begin
      // 1 ...
    end
    else
    begin
       // 2 ...
    end;
  end;

Аватар користувача
NoViChoK
Повідомлень: 140
З нами з: 10 вересня 2012, 18:09

Re: Примеры рабочих скриптов в отчётных формах

Повідомлення NoViChoK » 08 листопада 2017, 18:01

Каким кодом вытянуть вот это (это кусок с xml):

Код: Виділити все

<RegionalContacts>
            <LocalAuthorityHead>
              <LastName>Іванов</LastName>
              <FirstName>І.</FirstName>
              <MiddleName>І.</MiddleName>
            </LocalAuthorityHead>

Интересует значение "Іванов І.І."
[Rda_People] не предлагать. Если участок за пределами то тащит все равно данные главы сельсовета/городского совета.
В параметрах района данные заполнены верно.
Откуда вообще программа тянет эти данные?

Аватар користувача
NickS
Повідомлень: 1393
З нами з: 04 квітня 2008, 12:21

Re: Примеры рабочих скриптов в отчётных формах

Повідомлення NickS » 09 листопада 2017, 09:46

NoViChoK писав:Каким кодом вытянуть вот это (это кусок с xml):

Код: Виділити все

<RegionalContacts>
            <LocalAuthorityHead>
              <LastName>Іванов</LastName>
              <FirstName>І.</FirstName>
              <MiddleName>І.</MiddleName>
            </LocalAuthorityHead>

Интересует значение "Іванов І.І."
[Rda_People] не предлагать. Если участок за пределами то тащит все равно данные главы сельсовета/городского совета.
В параметрах района данные заполнены верно.
Откуда вообще программа тянет эти данные?

Блок "LocalAuthorityHead" это представитель сельского или районного совета. По сути эта та же "Rda_People". Так Вы что хотите вытянуть данные главы именно района?

Аватар користувача
NoViChoK
Повідомлень: 140
З нами з: 10 вересня 2012, 18:09

Re: Примеры рабочих скриптов в отчётных формах

Повідомлення NoViChoK » 09 листопада 2017, 10:55

NickS писав:
NoViChoK писав:Каким кодом вытянуть вот это (это кусок с xml):

Код: Виділити все

<RegionalContacts>
            <LocalAuthorityHead>
              <LastName>Іванов</LastName>
              <FirstName>І.</FirstName>
              <MiddleName>І.</MiddleName>
            </LocalAuthorityHead>

Интересует значение "Іванов І.І."
[Rda_People] не предлагать. Если участок за пределами то тащит все равно данные главы сельсовета/городского совета.
В параметрах района данные заполнены верно.
Откуда вообще программа тянет эти данные?

Блок "LocalAuthorityHead" это представитель сельского или районного совета. По сути эта та же "Rda_People". Так Вы что хотите вытянуть данные главы именно района?

Не совсем. Хочу что бы когда участок в пределах населенного пункта тянуло главу сельского/городского совета, если за пределами населенного пункта - тянуло главу администрации.
В обменник вытягивает инфу правильно. Насколько я понял если участок за пределами то тянет данные с параметров района где у меня в параметре "совет" прописана администрация.
А вот переменную какую подобрать не соображу. Должна вроде быть [Rda_People] но чет не срабатывает.