Аналитика
http://geosystema.net/forum/

Формирорвание отчета в Reports
http://geosystema.net/forum/viewtopic.php?f=1&t=295
Страница 48 из 49

Автор:  Vladimirart08 [ 21 июн 2020 07:34 ]
Заголовок сообщения:  Re: Формирорвание отчета в Reports

[quote="Stas"]Добрий день. Підкажіть будь-ласка щодо створення шаблонів для техдокументації та проектів.
Посмотрите zem.kiev.ua

Автор:  Stas [ 21 июн 2020 08:01 ]
Заголовок сообщения:  Re: Формирорвание отчета в Reports

Vladimirart08 писал(а):
Stas писал(а):
Добрий день. Підкажіть будь-ласка щодо створення шаблонів для техдокументації та проектів.
Посмотрите zem.kiev.ua


Дякую!

Автор:  petrogeo [ 04 сен 2020 13:45 ]
Заголовок сообщения:  Re: Формирорвание отчета в Reports

Доброго дня.
Підкажіть будь-ласка, чи можна при формуванні документу в Reports, забрати (скрить) це вікно
Вложение:
.jpg
.jpg [ 19.58 Кб | Просмотров: 8253 ]

Воно з'являється після відпрацювання скрипта, під час запуску шаблону Reports із скрипта командою
@Run $Papka\Reports.exe -t$Papka\Templates\Шаблон.fr3.

Автор:  Руслан Пархуць [ 07 сен 2020 01:15 ]
Заголовок сообщения:  Re: Формирорвание отчета в Reports

petrogeo писал(а):
Доброго дня.
Підкажіть будь-ласка, чи можна при формуванні документу в Reports, забрати (скрить) це вікно
Вложение:
.jpg

Воно з'являється після відпрацювання скрипта, під час запуску шаблону Reports із скрипта командою
@Run $Papka\Reports.exe -t$Papka\Templates\Шаблон.fr3.

Напишiть, що робить даний скрипт i якi данi передаються в Reports (вiн працює з буферними даними у форматi XML, а отримує щось iнше, тому i вискакує дане вiкно).

Автор:  petrogeo [ 07 сен 2020 09:28 ]
Заголовок сообщения:  Re: Формирорвание отчета в Reports

Руслан Пархуць писал(а):
Напишiть, що робить даний скрипт i якi данi передаються в Reports

Скрипт опрацьовує карту (аналізує об'єкти карти по певних критеріях), результат опрацювання записується у текстовий файл.
А Reports зчитує дані з текстового файлу, по ключі:
var
NameFile:String;
Дата:String;
Назва:String;
NP01:String;
....
begin
NameFile:=File('Obrobitok.ini','Назва файла');
Дата:=File('Obrobitok.ini','Дата');
Назва:=File('Obrobitok.ini','Назва');
NP01:=File('Analizpolya.ini','NP01');
....
end.
Цитата:
(вiн працює з буферними даними у форматi XML, а отримує щось iнше, тому i вискакує дане вiкно)

Цей шаблон був зроблений на основі одного з шаблонів що є в папці Templates, тому можливо.

Автор:  Руслан Пархуць [ 07 сен 2020 13:26 ]
Заголовок сообщения:  Re: Формирорвание отчета в Reports

petrogeo писал(а):
Руслан Пархуць писал(а):
Напишiть, що робить даний скрипт i якi данi передаються в Reports

Скрипт опрацьовує карту (аналізує об'єкти карти по певних критеріях), результат опрацювання записується у текстовий файл.
А Reports зчитує дані з текстового файлу, по ключі:
var
NameFile:String;
Дата:String;
Назва:String;
NP01:String;
....
begin
NameFile:=File('Obrobitok.ini','Назва файла');
Дата:=File('Obrobitok.ini','Дата');
Назва:=File('Obrobitok.ini','Назва');
NP01:=File('Analizpolya.ini','NP01');
....
end.
Цитата:
(вiн працює з буферними даними у форматi XML, а отримує щось iнше, тому i вискакує дане вiкно)

Цей шаблон був зроблений на основі одного з шаблонів що є в папці Templates, тому можливо.

Спробуйте, використавши @Text[N].Add Value створити текст приблизного вмiсту
    <?xml version="1.0" encoding="utf-8" ?>
    <param>
    <value>1</value>
    <scale>2000</scale>
    </param>
i все це скопiювати в буфер за допомогою @Text[N].Copy, пiсля чого викликати @Run $Papka\Reports.exe -t$Papka\Templates\Шаблон.fr3.
З Reports за допомогою ф-цiї XPath отримуєте данi [value, scale], переданi скриптом. Десь був приклад на форумi, але не пам'ятаю, де я його бачив.

Автор:  petrogeo [ 08 сен 2020 10:40 ]
Заголовок сообщения:  Re: Формирорвание отчета в Reports

Руслан Пархуць писал(а):
Спробуйте, використавши @Text[N].Add Value створити текст приблизного вмiсту
    <?xml version="1.0" encoding="utf-8" ?>
    <param>
    <value>1</value>
    <scale>2000</scale>
    </param>
i все це скопiювати в буфер за допомогою @Text[N].Copy, пiсля чого викликати @Run $Papka\Reports.exe -t$Papka\Templates\Шаблон.fr3.
З Reports за допомогою ф-цiї XPath отримуєте данi [value, scale], переданi скриптом. Десь був приклад на форумi, але не пам'ятаю, де я його бачив.

Велике дякую. Допомогло. :D

Автор:  ТОВ Аспект [ 02 июн 2021 15:28 ]
Заголовок сообщения:  Re: Формирорвание отчета в Reports

<area>
1 2.0000 Для ведення
2 1.9999
....
</area>
AS:=XPath('./area');
N:=StringPart(AS,2,chr(9));
Допоможіть витягти з AS:
N: другої або іншої строки

Автор:  Руслан Пархуць [ 02 июн 2021 22:18 ]
Заголовок сообщения:  Re: Формирорвание отчета в Reports

ТОВ Аспект писал(а):
<area>
1 2.0000 Для ведення
2 1.9999
....
</area>
AS:=XPath('./area');
N:=StringPart(AS,2,chr(9));
Допоможіть витягти з AS:
N: другої або іншої строки

Цiкавий формат запису тегiв XML. Скиньте детальну структуру Вашого файлу, можливо пошук потрiбно робити, як у звичайнiй текстовiй стрiчцi.
Якщо це XML - тодi дивiться на використання ф-цiї NodesCount (XPath('./area['+IntToStr(N)+']').

Автор:  ТОВ Аспект [ 03 июн 2021 10:59 ]
Заголовок сообщения:  Re: Формирорвание отчета в Reports

Файл XML звичайний. Метою є створення ТД для поділу. З відкритих файлів xml скриптом витягую номер ділянки площу та інше. В результаті маю більше однієї строки та не розумію як їх обробляти. З функцією NodesCount не вистачає параметрів  (що тільки не робив) тому прошу допомоги, розпишіть будь ласко з самого початку.
Ось скрипт
$PrPath=@ProgramPath
$Tab=@Calc char(9)
$Tab=@DequoteText $Tab
@Text.Clear
@Text.Add <?xml version="1.0" encoding="utf-8" ?>
@Text.Add <report>
@Text.Add <area>
$MC=@MapCount
@ActivateMap 1
$Zagal=0
$I=0
%LoopObject
$I=$I+1
@if $MC<0 then @Goto %Continue
@ActivateMap $I
%Library.Obmejena
@Map.SelectLayer ID70005
$D=@Map.SelectedObject
$P=@Map.Object[$D].Parameter[0]
$CV=@Map.Object[$D].Parameter[ID7000510]
$P=%Library.ReplaceComma $P
$P=@DequoteText $P
$L=$I$Tab$P
$L=$L$Tab$CV
$L=@Text.Add $L
$F=@Text.Text
$Zagal=$Zagal+$P
@Map.DeselectAll
%Continue
@if $I<$MC then @Goto %LoopObject
@Text.Add </area>
@Text.Add <MapCount>$MC</MapCount>
@Text.Add </report>
@Text.Copy
@Run $PrPath\Reports.exe -tTemplates\TD sectionOPG.fr3

Автор:  Руслан Пархуць [ 03 июн 2021 23:48 ]
Заголовок сообщения:  Re: Формирорвание отчета в Reports

ТОВ Аспект писал(а):
Файл XML звичайний. Метою є створення ТД для поділу. З відкритих файлів xml скриптом витягую номер ділянки площу та інше. В результаті маю більше однієї строки та не розумію як їх обробляти. З функцією NodesCount не вистачає параметрів  (що тільки не робив) тому прошу допомоги, розпишіть будь ласко з самого початку.

Я б робив скрипт приблизно такого змiсту, i далi в Reports обробляв отриману iнформацiю (закоментував деякi рядки, оскiльки вони не були потрiбнi для аналiзу):
Код:
$PrPath=@ProgramPath
$Tab=@Calc char(9)
$Tab=@DequoteText $Tab
@Text.Clear
@Text.Add <?xml version="1.0" encoding="utf-8" ?>
@Text.Add <Report>
@Text.Add <Parcels>
;
$MC=@MapCount
@ActivateMap 1
;$Zagal=0
$I=0
%LoopObject
$I=$I+1
@if $MC<0 then @Goto %Continue
@ActivateMap $I
;%Library.Obmejena
@Text.Add <ParcelInfo>
@Map.SelectLayer ID70005
$D=@Map.SelectedObject
$P=@Map.Object[$D].Parameter[0]
$CV=@Map.Object[$D].Parameter[ID7000510]
$P=%Library.ReplaceComma $P
$P=@DequoteText $P
@Text.Add <Area>$P</Area>
@Text.Add <Purpose>$CV</Purpose>
;$L=$I$Tab$P
;$L=$L$Tab$CV
;$L=@Text.Add $L
;$F=@Text.Text
;$Zagal=$Zagal+$P
@Map.DeselectAll
@Text.Add </ParcelInfo>
%Continue
@if $I<$MC then @Goto %LoopObject
;
@Text.Add </Parcels>
@Text.Add <MapCount>$MC</MapCount>
@Text.Add </Report>
$Buf=@Text.Text
@Dialog.Message $Buf
;@Text.Copy
;@Run $PrPath\Reports.exe -tTemplates\TD sectionOPG.fr3

Якщо потрiбно обробляти отриманий Вами результат (у виглядi стрiчки), тодi напишiть, проаналiзуємо :)

Автор:  ТОВ Аспект [ 11 июн 2021 10:53 ]
Заголовок сообщения:  Re: Формирорвание отчета в Reports

Зробив як Ви рекомендували, та не знаю як додати номер ділянки.
var
I,N: Integer;
AS: String;

begin
N:=NodesCount('./Parcels','ParcelInfo');
I:=0;
if N=1
then begin
ShowMessage('Однієї ділянки не достатньо для поділу, формування звіту зупинено');
Engine.StopReport;
end;
begin
for I:=1 to N do
AS:=AS+'діл. № '+(XPath('/Parcels/ParcelInfo['+IntToStr(I)+']/Area'))+' га '+(XPath('/Parcels/ParcelInfo['+IntToStr(I)+']/Purpose'))+#13#10;
end;
end.
А також CV розбити на код. Щоб було діл. №1 0.2500 га (02.01).

Автор:  Руслан Пархуць [ 11 июн 2021 13:00 ]
Заголовок сообщения:  Re: Формирорвание отчета в Reports

ТОВ Аспект писал(а):
Зробив як Ви рекомендували, та не знаю як додати номер ділянки.
А також CV розбити на код. Щоб було діл. №1 0.2500 га (02.01).

потрiбно визначити змiнну AS а також додати саму нумерацiю ну i StringPart - для отримання першого значення зi стрiчки ЦВ
Код:
AS:='';
AS:=AS+'діл. № '+IntToStr(I) + ' ' + XPath('/Parcels/ParcelInfo['+IntToStr(I)+']/Area') + ' га '+ StringPart(XPath('/Parcels/ParcelInfo['+IntToStr(I)+']/Purpose'),1,' ') + #13#10;

Автор:  ТОВ Аспект [ 11 июн 2021 15:52 ]
Заголовок сообщения:  Re: Формирорвание отчета в Reports

Дякую! З StringPart що тільки не робив, від тепер буду знати.

Автор:  ТОВ Аспект [ 03 фев 2022 13:55 ]
Заголовок сообщения:  Re: Формирорвание отчета в Reports

Доброго дня. Прошу допомогти розібратися, в файлі XML коли більше одного власника, мемо3 становиться вище,
тоді Мемо1 та 2 підіймаю на Height Memo3, під Мемо1,2,3 є аналогічні мемо4,5,6:ShiftMode=smAlways які в такому випадку зміщується нижче, але одне мемо, мемо4 не зміщується. Підкажіть будь ласко що ще треба зробити.

Вложения:
NMLists.fr3 [5.08 Кб]
Скачиваний: 232

Страница 48 из 49 Часовой пояс: UTC + 2 часа
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/