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

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

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

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

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

Повідомлення NickS » 12 грудня 2018, 16:30

007stas писав:Напевно десь так?


Краще так:

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

If Length(Trim(<DM1.TbPoint."Name">)) > 0 then
  DetailData1.Visible := true //показываем координату без Имени
else
  DetailData1.Visible := false; //скрываем координату без Имени

007stas
Повідомлень: 82
З нами з: 03 червня 2011, 09:15

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

Повідомлення 007stas » 13 грудня 2018, 09:56

доброго дня. Підкажіть чи є можливість отримати інформацію про полілінії (полігони), що знаходяться в косметичних слоях? Як приклад інформація про угіддя - 'DM1.TbPlan', агрогрупи - 'DM1.TbAgro', обмеження - 'DM1.TbLimination'

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

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

Повідомлення NickS » 13 грудня 2018, 13:10

007stas писав:доброго дня. Підкажіть чи є можливість отримати інформацію про полілінії (полігони), що знаходяться в косметичних слоях? Як приклад інформація про угіддя - 'DM1.TbPlan', агрогрупи - 'DM1.TbAgro', обмеження - 'DM1.TbLimination'

Можливість є. Але для цього треба створити ADO-запит і для нього скласти спеціальний запит, за яким шукатиметься потрібний об'єкт.
Ось запит, який виведе всі об'єкти на всіх косметичних шарах:

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

Select N.*
From Note N
Where (N.ID_Object = 123)

де, 123 - ID_Object поточної ділянки

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

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

Повідомлення NoViChoK » 21 березня 2019, 17:47

Какой код нужен что бы сразу считал общую площадь участков в гектарах с точностью 4 знака после комы?
Или может настройки как то нужно подредактировать?

Есть массив участков с общей площадью 145,6997 (если суммировать в гектарах с точностью 4 знака после комы). Пересчитал все вручную.
Но шаблон fastreports выдает мне 145,6993. Я так понимаю что это просто из за того что подсчет идет в метрах квадратных, а потом пересчет в га.

В шаблоне такой код:

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

 //---------------------------------------------------------------------------------------------------
   //Площадя в разрезе по целевым

   Query('Select Sum(O.Area) S, T.Number, T.Name From Object O, TypeUse T Where O.OK = ''ю'' And T.ID_TypeUse = (Select Top 1 L.ID_TypeUse From UserRec U, Uses S, UsesLnk L Where U.ID_Object = O.ID_Object And (U.DateFirst <= GETDATE()) And ((U.DateLast Is Null) Or (U.DateLast > GETDATE())) And S.ID_Uses = U.ID_Uses And L.ID_Uses = S.ID_Uses) Group by T.Number, T.Name');

   AreaAll  := 0; //Площадь всех участков
   AreaUses := ''; //Площадь по целевым

   DATAFIRST( 'DM1.Query');

   While DATAEOF( 'DM1.Query') = False Do
   begin
     AreaAll := AreaAll + GetValue('DM1.Query', 'S');
     AreaUses := AreaUses + Lowercase(GetValue('DM1.Query', 'Name')) + ' площею ' + FORMATFLOAT(fdLandAreaG, GetValue('DM1.Query', 'S')/10000) + ' га, ';

     DATANEXT( 'DM1.Query');
   end;
  //------------------------------------------------------------------------------------------------


настройки округления:
Вкладення
2019-03-21_174234.jpg

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

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

Повідомлення NickS » 22 березня 2019, 09:22

NoViChoK писав:Какой код нужен что бы сразу считал общую площадь участков в гектарах с точностью 4 знака после комы?
Или может настройки как то нужно подредактировать?

Есть массив участков с общей площадью 145,6997 (если суммировать в гектарах с точностью 4 знака после комы). Пересчитал все вручную.
Но шаблон fastreports выдает мне 145,6993. Я так понимаю что это просто из за того что подсчет идет в метрах квадратных, а потом пересчет в га.


Вы должны понимать, что округление суммы точных значений и сумма округлённых значений - это разные значения.
Например:
У Вас есть 3 контура:
1 - 1,6 кв.м.
2 - 2,7 кв.м.
3 - 5,6 кв.м.

Округление суммы:
1,6 + 2,7 + 5,6 = 9,9 кв.м.
а в гектарах = 0,0010 га

Сумма округлений:
1,6 кв.м. = 0,0002 га
2,7 кв.м. = 0,0003 га
5,6 кв.м. = 0,0006 га
0,0002 + 0,0003 + 0,0006 = 0,0011 га

У Вас в коде сначала подсчитывается сумма точных значений, а потом округляется. Если Вы хотите чтобы суммировались округлённые значения, тогда надо строку:

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

AreaAll := AreaAll + GetValue('DM1.Query', 'S');

исправить так:

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

AreaAll := AreaAll + StrToFloat(FormatFloat(fdLandAreaG, GetValue('DM1.Query', 'S')/10000));


Но не забудьте! Что теперь сумма у Вас будет в гектарах и в тексте не надо делить на 10000:

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

[FormatFloat(fdLandAreaG, AreaAll)]

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

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

Повідомлення NoViChoK » 27 квітня 2019, 19:19

Заменил строку на предложенную вами.
Выбило ошибку несовместимые типы интегер и екстендед.
Сделал переменную AreaAll екстендед, посчитало, но результат выдает такой же как и при расчете округленных сумм точных значений.

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

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

Повідомлення NickS » 02 травня 2019, 11:26

NoViChoK писав:Заменил строку на предложенную вами.
Выбило ошибку несовместимые типы интегер и екстендед.
Сделал переменную AreaAll екстендед, посчитало, но результат выдает такой же как и при расчете округленных сумм точных значений.

Не понятно как у Вас в шаблоне описаны переменные и какой код. Прикрепите шаблон или хотя бы код связанный с этими переменными.

007stas
Повідомлень: 82
З нами з: 03 червня 2011, 09:15

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

Повідомлення 007stas » 13 травня 2019, 15:44

Який код потрібен, щоб перевірити чи слой за номером (назвою) 1:gtPlan увімкнений, або ні?

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

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

Повідомлення NickS » 17 травня 2019, 11:22

007stas писав:Який код потрібен, щоб перевірити чи слой за номером (назвою) 1:gtPlan увімкнений, або ні?

Нажаль, такої функції не має. Або Ви не трогаєте шари і орієнтуєтесь по вікну "Камеральні функції" або задаєте так включення шарів, як потрібно.

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

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

Повідомлення NoViChoK » 05 лютого 2020, 17:51

В шаблон "Акт приёмо-передачи межевых знаков 2017" пытаюсь внести небольшие правки, но не выходит.

А именно:
На странице 2 к коду picture1 хочу добавить возможность отображения внутренних углов и полуокружности внутреннего угла (VisibleGisMenu('ShowCutIn', true); и VisibleGisMenu('ShowLineCutIn', true);), но при их добавлении и включении их на рисунок не выводит. Как поправить?

На странице 3 к коду picture2 тоже хочу добавить возможность включать и выключать меню и слои, но при добавлении кода просит добавить ";" . Не могу понять как правильно вписать.