Звітні форми. Площа, експлікація і т.д.

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

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

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

Звітні форми. Площа, експлікація і т.д.

Повідомлення NickS » 01 лютого 2010, 16:21

Здесь рассматриваем работу с площадью, экспликацией, угодьями, на уровне программирования отчётных форм. :ugeek:

NTD
Повідомлень: 26
З нами з: 23 липня 2008, 10:29

Re: Отчётные формы. Площадь, экспликация и т.д.

Повідомлення NTD » 01 лютого 2010, 16:27

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

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

Re: Отчётные формы. Площадь, экспликация и т.д.

Повідомлення NickS » 01 лютого 2010, 16:48

Вот, смотрите, обычный пример вывода площади в кв.м.:

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

FORMATFLOAT(fdLandAreaM, <DM1.QbObject."Area">)

В данном случае:
<DM1.QbObject."Area"> - поле общей площади участка (имейте ввиду, в программе все площади в кв.м., потому, для отображения в га, всегда нужно переводить)
fdLandAreaM - это переменная, которая берёт из установок (меню Сервис, подменю Установки, вкладка Расчёты, параметр Площадь, участка, округление до знака после запятой, м.кв) количество нулей для отображения в кв.м.

Чтобы перевести в гектары, эта формула должна иметь такой вид:

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

FormatFloat(fdLandAreaG, <DM1.QbObject."Area">/10000)

Обратите внимания, воспользовались другой переменной fdLandAreaG из установок (меню Сервис, подменю Установки, вкладка Расчёты, параметр Площадь, участка, округление до знака после запятой, га), в которой хранится количество нулей для гектаров.

А если использовать "переключатель" в участке (поле <DM1.QbObject."Area_Type">), то наша формула будет иметь такой вид:

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

IIf(<DM1.QbObject."Area_Type"> = 1, FormatFloat(fdLandAreaG, <DM1.QbObject."Area">/10000), FormatFloat(fdLandAreaM, <DM1.QbObject."Area">))

Аватар користувача
Dorochenko_iv
Повідомлень: 162
З нами з: 12 березня 2010, 21:55
Звідки: м.Чернігів
Контактна інформація:

Re: Отчётные формы. Площадь, экспликация и т.д.

Повідомлення Dorochenko_iv » 18 червня 2010, 23:06

Добрый вечер. Подскажите, пожалуйста, можно ли написать код, чтобы в экспликации в случае отсутствия угодий ставилось не нули, не пустое место, а прочерк? Если да, то какой?

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

Re: Отчётные формы. Площадь, экспликация и т.д.

Повідомлення NickS » 21 червня 2010, 10:17

Dorochenko_iv писав:Добрый вечер. Подскажите, пожалуйста, можно ли написать код, чтобы в экспликации в случае отсутствия угодий ставилось не нули, не пустое место, а прочерк? Если да, то какой?

Можно, конечно! Некоторые отчётные формы именно такой принцип и имеют. Для этого, надо проверять не равна ли нолю нужная площадь, например
<DM1.QbObject."Area_Garden"> - площадь сада
В самом простом варианте наш код может выглядеть так (для fr3):
пустое место:

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

 IIf(<DM1.QbObject."Area_Garden"> > 0, <DM1.QbObject."Area_Garden">, '')


прочерк:

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

 IIf(<DM1.QbObject."Area_Garden"> > 0, <DM1.QbObject."Area_Garden">, '-')


Если взять сложный вариант (прочерк):

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

 IIf(<DM1.QbObject."Area_Garden"> > 0, IIf(<DM1.QbObject."Area_Type"> = 1, FormatFloat(fdLandAreaG, <DM1.QbObject."Area_Garden">/10000), FormatFloat(fdLandAreaM, <DM1.QbObject."Area_Garden">)), '-')

Аватар користувача
Dorochenko_iv
Повідомлень: 162
З нами з: 12 березня 2010, 21:55
Звідки: м.Чернігів
Контактна інформація:

Re: Отчётные формы. Площадь, экспликация и т.д.

Повідомлення Dorochenko_iv » 24 червня 2010, 02:45

Спасибо за описание. Теперь задача стоит поставить год рождения владельца с подписью "року". Каким образом можно разбить число, месяц, год на составные?

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

Re: Отчётные формы. Площадь, экспликация и т.д.

Повідомлення NickS » 24 червня 2010, 09:46

Dorochenko_iv писав:Теперь задача стоит поставить год рождения владельца с подписью "року". Каким образом можно разбить число, месяц, год на составные?

Есть специальные функции:
DayOf() - из даты берёт день месяца
MonthOf() - из даты берёт номер месяца в году
YearOf() - из даты берёт год

Стоит заметить, что дата - это переменная или поле формата Date. А результатом будет целое число - Integer

Например, дата рождения физического лица - <DM1.QbPeople."DateBirthes">. Чтобы взять с неё только год и добавить слово "року", нужно использовать функцию:

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

IntToStr(YearOf(<DM1.QbPeople."DateBirthes">)) + ' року'

dgasmin
Повідомлень: 1
З нами з: 16 серпня 2010, 08:07

Re: Отчётные формы. Площадь, экспликация и т.д.

Повідомлення dgasmin » 16 серпня 2010, 08:15

Добрый день! Подскажите, пожалуйста, как в отчётную форму втянуть ФИО "смежников". (без направлений - "Від А до Б").

Аватар користувача
shelsadmin
Администратор
Повідомлень: 130
З нами з: 29 лютого 2008, 12:46
Звідки: Компания ШЕЛС
Контактна інформація:

Re: Отчётные формы. Площадь, экспликация и т.д.

Повідомлення shelsadmin » 19 серпня 2010, 10:43

dgasmin писав:Добрый день! Подскажите, пожалуйста, как в отчётную форму втянуть ФИО "смежников". (без направлений - "Від А до Б").


Один из вариантов - это разложить переменную OpisMej которая автоматичести формируется при открытии отчётной формы.
Подобный пример есть в шаблоне - "Государственный акт на право собственности А4"
Значения добавляються в мемо поле - MemoOpisMej.Lines.Add( MasOpis);

Var
sMej, sStr, Mas1, Mas2, MasOpis : string;

begin
sMej := OpisMej;

While Length( sMej) > 0 Do
Begin
If Pos( ';', sMej) > 0 Then
Begin
sStr := Trim( Copy( sMej, 1, Pos( ';', sMej)));
sMej := Trim( Copy( sMej, Pos( ';', sMej) +1, Length( sMej) -Pos( ';', sMej)));
End
Else
Begin
sStr := Trim( sMej);
sMej := '';
End;

Mas1 := Copy(sStr, 1, 1);
Mas2 := Copy(sStr, 6, 1);
MasOpis := Copy(sStr, 8, LENGTH(sStr));

MemoOpisMej.Lines.Add( MasOpis);
End;
end

Аватар користувача
Dorochenko_iv
Повідомлень: 162
З нами з: 12 березня 2010, 21:55
Звідки: м.Чернігів
Контактна інформація:

Отчётные формы. Площадь, экспликация и т.д.

Повідомлення Dorochenko_iv » 30 вересня 2010, 15:59

Добрый день! Скажите пожалуйста, можно ли разложить название документации взятое из поля "Вид технической документации in4" (закладка техническая документация) на составные? Например в поле стоит "проект із землеустрою щодо відведення земельної ділянки в оренду", а нужно отдельно взять "проект із землеустрою" и "щодо відведення земельної ділянки в оренду", более того "проект із землеустрою" нужно сделать заглавными. Спасибо.