Звіти в ГІС 6

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

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

zigura_a
Повідомлень: 37
З нами з: 19 березня 2014, 08:26

Re: Отчеты в GIS6

Повідомлення zigura_a » 08 квітня 2014, 11:18

Доброго дня. Підскажіть: якщо виготовляється технічна документація по встановленню меж (наприклад держакт на пай власник якого помер) то районне Держземагентство вимагає щоб в технічці вказували П.І.Б і померлої людини (тієї що вказана в акті) і спадкоємця а також приписку спадкоємця. Підкажіть щоб Ви могли порадити в даній ситуації, П.І.Б. померлої людини я заповнюю в закладці "Субєкт права" а от куди внести данні на спадкоємця (з данних спадкоємця потрібно П.І.Б. щоб відмінялось та приписку більше нічого). І щоб ці данні можна було роздрукувати за допомогою отчота .frf. Можливо ці данні якось можна вписати в коментарі і потім якось вивести на дркук? Дякую.

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

Re: Отчеты в GIS6

Повідомлення Dorochenko_iv » 08 квітня 2014, 17:42

Якщо дані власника і спадкоємця на різних документах, то ,як варіант, робимо наступне: Створюємо одного суб'єкта права та заповнюємо на нього дані, потім на іншого суб'єкта (http://www.shels.ru/blog.htm?b=58). У вікні "Земельні ділянки" вибираємо першого (наприклад власника) та видруковуємо всі документи де він зустрічається. Теж саме робимо зі спадкоємцем.
Якщо на одномому то потрібно створювати новий шаблон.

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

Re: Отчеты в GIS6

Повідомлення NickS » 08 квітня 2014, 18:03

zigura_a писав:І щоб ці данні можна було роздрукувати за допомогою отчота .frf.

Не рекомендую використовувати frf. Зараз ми всі шаблони робимо для fr3 - в ньому більше функцій і простіше працювати. Розбирайтесь з новим редактором, бо в frf далеко не все можна зробити, а коли доведеться, то перетворювати із frf в fr3 дуже складно.

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

Правильно робити так: померлій людині ставите дату припинення права (наприклад, дату смерті), дублюєте суб'єкта права і йому вже назначаєте іншу фіз.особу (набувача) і дату виникнення права теж поставте нову. В полі "Вид записи" виберіть "Переход права". З'явиться поле "Связь с прочими субъектами права..." от там треба вказати померлого. Таким чином це буде максимально правильно для структури бази GIS6. А вже щоб в шаблон вивести, то треба спеціальний код прописувати.

zigura_a писав:Можливо ці данні якось можна вписати в коментарі і потім якось вивести на дркук? Дякую.

Можна і так. Тоді достатньо буде просто витягувати значення коментарів із суб'єкту права:
[DM1.TbUser."Note"]

zigura_a
Повідомлень: 37
З нами з: 19 березня 2014, 08:26

Re: Отчеты в GIS6

Повідомлення zigura_a » 09 квітня 2014, 14:44

"Правильно робити так: померлій людині ставите дату припинення права (наприклад, дату смерті), дублюєте суб'єкта права і йому вже назначаєте іншу фіз.особу (набувача) і дату виникнення права теж поставте нову. В полі "Вид записи" виберіть "Переход права". З'явиться поле "Связь с прочими субъектами права..." от там треба вказати померлого. Таким чином це буде максимально правильно для структури бази GIS6. А вже щоб в шаблон вивести, то треба спеціальний код прописувати." - я розумію що як все це зробити по цій переписці Ви мені не розповісте, але все ж таки підкажіть будьласка в двух словах (приведіть пару прикладів):
1. які формули треба прописувати в шаблоні.
2. до кого можна звернутися щоб розпробив шаблони в яких би данні відображалиь так як потрібно мені (підскажіть контактні телефони або елетронні адреси).
3. якщо все зробити так як радите Ви, то чи буде програма вірно робити хмл? (в хмл у полі власник та в полі державний акт повинно стояти прізвище власника державного акту тобто померлої людини)

zigura_a
Повідомлень: 37
З нами з: 19 березня 2014, 08:26

Re: Отчеты в GIS6

Повідомлення zigura_a » 09 квітня 2014, 16:13

Підскажіть: у шаблоні вказана формувла [DM1.QsPeople."Family3"] а відображає не прізвище що стоїт в закладці "Субєкт права"-"Владельца (кого?)" а зовсім іншої людини, чому так?

feNICKs
Повідомлень: 412
З нами з: 13 січня 2012, 16:03
Контактна інформація:

Re: Отчеты в GIS6

Повідомлення feNICKs » 09 квітня 2014, 16:27

zigura_a писав:Підскажіть: у шаблоні вказана формувла [DM1.QsPeople."Family3"] а відображає не прізвище що стоїт в закладці "Субєкт права"-"Владельца (кого?)" а зовсім іншої людини, чому так?

1. в параметрах "Субъекта права" физ. лицо заполняется с таблицы DM1.QbPeople, а Вы выводите с DM1.QsPeople.
2. потому что нужно сперва найти в таблице физических лиц запись, которая используется в Субъекте права, а потом уже выводить значение [DM1.QsPeople."Family3"].
Пример

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

If LocateData( 'DM1.QsPeople','ID_People', <DM1.TbUser."ID_People">) Then
   CustomerWho3  := <DM1.QsPeople."Family">;

// где CustomerWho3  - переменная, котрую нужно огласить в разделе Var - CustomerWho3: String; // смотрите в коде по аналогии


п.с. Все типичные примеры описаны здесь :\Books\Метод доступа до полей 5 и 6.pdf
п.п.с. Описание всех служебн.переменных и функций: C:\Program Files\GIS6\_Описание переменных.txt

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

Re: Отчеты в GIS6

Повідомлення NoViChoK » 10 квітня 2014, 10:21

В продолжении вопроса zigura_a о адресе участков: никак не получается настроить код так как нужно.
Например когда зелёной меткой помечено 2 участка за пределами населённого пункта пусть вот с такими адресами:
1) Київська область, Васильківський район, Здорівська сільська рада, пай №1
2) Київська область, Васильківський район, Крушинська сільська рада (Здорівська сільська рада), пай №2
то нужно что бы переменная, пусть будет [Adress] результат выдавала так: земельні ділянки знаходяться на територіїі
Київської області, Васильківського району, Здорівської сільської ради, пай №1 та Київської області, Васильківського
району, Крушинської сільської ради (Здорівської сільської ради), пай №2
(в скобках хотел показать что код не должен
зависеть от того в одной раде или в разных находятся земельные участки).Участков может быть больше чем 2.
Такой вот код: (ObjectAdress := ObjectAdress + <DM1.QbObject."Address">) - выдаёт но не склоняет, о который "по
кусочкам" - склоняет, но выдаёт адрес только на 1 участок (ну покрайней мере у меня так...не знаю что я не так делаю).
Если в пределах населённого пункта отметить несколько участков например с такими адресами:
1) Київська область, Васильківський район, с.Здорівка вул.Жовтнева,1
2) Київська область, Васильківський район, с.Здорівка (какой то там огород например)
то нужно что бы переменная [Adress] результат выдавала так: земельні ділянки знаходяться за адресою: Київська область, Васильківський район, с.Здорівка вул.Жовтнева,1 та на території с.Здорівка Васильківського району Київської області. (ориентироватся на заполненые поля "вулиця" и "будинок")Ну либо что то подобное.
И вот такое я хотел впихнуть в 1 шаблон ) не знаю правда возможно ли это.
Кто как у себя это сделал? Поделитесь пожалуйста, а то у меня уже нервный тик начинается от этих кодов :shock: :? :). Либо,уважаемый feNICKs напишите пожалуйста как всё это реализовать, я знаю что вы знаете как :)

feNICKs
Повідомлень: 412
З нами з: 13 січня 2012, 16:03
Контактна інформація:

Re: Отчеты в GIS6

Повідомлення feNICKs » 10 квітня 2014, 14:24

Если хотите, чтоб у Вас склоняло адреса, то тут нужно будет повозиться.
<DM1.QbObject."Address"> - это поле БД, в котором хранится уже готовый адрес и склонять его отдельные элементы можно разве что в конкретных случаях. Если хотите сделать универсальную форму, чтоб в не зависимости от адреса, склоняло любой совет, район, область, тогда Вам нужно в самой отч.форме сформировать адрес по Кадастровому номеру (точнее по коду КУАТУ).
Пример довольно большой, но если разберетесь, он Вам очень сильно пригодиться:

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

Var
   Territory, City, Street, StreetTo, Address, Numb_House : String;

//----------------------------------------------------->

// Функция, формирует полное местоположения участка в разных форматах
Function GetFullTerritory( IKN : String; Type_Territory : Byte; Symbol : String) : String;
Var
   Ter, Area, Region, Advice, City : String;
Begin
   SeekIKN( IKN);

   Area   := GetArea( Name_Area);
   Region := GetRegion( Name_Region, 3);
   Advice := GetAdvice( Name_Advice);
   City   := '';

   If (Length( Name_Place) > 0) And ((Pos( 'м.', Name_Place) > 0) Or (Pos( 'с.', Name_Place) > 0) Or (Pos( 'смт',Name_Place) > 0) Or (Pos( 'c-', Name_Place) > 0)) Then
       City := ( Name_Place)
   Else
      If (Length( Name_Advice) > 0) And ((Pos( 'м.', Name_Advice) > 0) Or (Pos( 'с.', Name_Advice) > 0) Or (Pos( 'смт',Name_Advice) > 0) Or (Pos( 'c-', Name_Advice) > 0)) Then
         City := ( Name_Advice)
      Else
         If (Length( Name_Region) > 0) And ((Pos( 'м.', Name_Region) > 0) Or (Pos( 'с.', Name_Region) > 0) Or (Pos( 'смт',Name_Region) > 0) Or (Pos( 'c-', Name_Region) > 0)) Then
            City := ( Name_Region)
         Else
            If (Length( Name_Area) > 0) And ((Pos( 'м.', Name_Area) > 0) Or (Pos( 'с.', Name_Area) > 0) Or (Pos( 'смт',Name_Area) > 0) Or (Pos( 'c-', Name_Area) > 0)) Then
               City := ( Name_Area);

   Case Type_Territory Of
      1 : Begin
            Ter := 'на території ';

            //Рада
            If Length( Advice) > 0 then
               Ter := Ter +  Advice;

            //Район
            If Length( Region) > 0 Then
               Ter := Ter + Symbol + Region;

            //Область
            If Length( Area) > 0 then
               Ter := Ter + Symbol + Area;
          End;

      2 : Begin
             Ter := '';

            //Область
            If Length( Area) > 0 then
               Ter := Area;

            //Район
            If Length( Region) > 0 Then
               Ter := Ter + Symbol + Region;

             //Рада
            If Length( Advice) > 0 then
               Ter := Ter + Symbol + Advice;
          End;

      3 : Begin
             Ter := '';

            If Length( City) > 0 then
               Ter := Ter + City;

            //Рада
            If Length( Advice) > 0 then
               Ter := Ter + Symbol + Advice;

            //Район
            If Length( Region) > 0 Then
               Ter := Ter + Symbol + Region;

            //Область
            If Length( Area) > 0 then
               Ter := Ter + Symbol + Area;
          End;
   End;

   Result := Ter;
End;
//----------------------------------------------------->

//функция, формирует полный адрес в разных форматах
Function GetFullAddress( IKN, AdrBefor, Numb_House : String; ID_Street, TypeAdress : Integer) : String;
Var
   Adr, City, Street, StreetTo, Area, Region, Advice, NumbHouse, : String;
Begin
   Adr        := '';
   City       := '';
   Street     := '';
   NumbHouse  := '';
   Area       := '';
   Region     := '';
   Advice     := '';

   SeekIKN( IKN);

   //Рада
   If Length(Name_Advice) > 0 then
      Advice := GetAdvice( Name_Advice) + ' ';

   //Район
   If Length(Name_Region) > 0 Then
      Region := GetRegion( Name_Region, 3) + ' ';

   //Область
   If Length(Name_Area) > 0 then
      Area:=  GetArea( Name_Area) + ' ';

   //Населений пункт
   If (Length( Name_Place) > 0) And ((Pos( 'м.', Name_Place) > 0) Or (Pos( 'с.', Name_Place) > 0) Or (Pos( 'смт',Name_Place) > 0) Or (Pos( 'c-', Name_Place) > 0)) Then
       City := CityFull( Name_Place)
   Else
      If (Length( Name_Advice) > 0) And ((Pos( 'м.', Name_Advice) > 0) Or (Pos( 'с.', Name_Advice) > 0) Or (Pos( 'смт',Name_Advice) > 0) Or (Pos( 'c-', Name_Advice) > 0)) Then
         City := CityFull( Name_Advice)
      Else
         If (Length( Name_Region) > 0) And ((Pos( 'м.', Name_Region) > 0) Or (Pos( 'с.', Name_Region) > 0) Or (Pos( 'смт',Name_Region) > 0) Or (Pos( 'c-', Name_Region) > 0)) Then
            City := CityFull( Name_Region)
         Else
            If (Length( Name_Area) > 0) And ((Pos( 'м.', Name_Area) > 0) Or (Pos( 'с.', Name_Area) > 0) Or (Pos( 'смт',Name_Area) > 0) Or (Pos( 'c-', Name_Area) > 0)) Then
               City := CityFull( Name_Area);

       // Назва вулиці
       Query('Select S.* From Street S Where S.ID_Street='+IntToStr( ID_Street));

       If RecordCount( 'DM1.Query') > 0 Then
       Begin
         If LocateData( 'DM2.TbTypeStreet','ID_TypeStreet', GetValue( 'DM1.Query','ID_TypeStreet')) Then
             Street := GetValue('DM2.TbTypeStreet','Name');

          Street := Street + ' ' + GetValue( 'DM1.Query','NameStreet');
       End;

       // Номер вулиці/будинку
       If Length( Numb_House) > 0 Then
          NumbHouse := Numb_House
       Else
          NumbHouse := 'б/н';


       Case TypeAdress Of
          // нас.пункт, вулиця, буд.
          1 : Begin
                 If Length( AdrBefor) > 0 Then
                    Adr := AdrBefor;

                 If Length( Adr) = 0 Then
                 Begin
                    Adr := Adr + City;
                    Adr := Adr + ', ' + Street;
                    Adr := Adr + ', ' + NumbHouse;
                 End
                 Else
                 Begin
                    If Pos( City, Adr) = 0 Then
                    Begin
                       Adr := Adr + ' та в ' +City;

                       If Pos( Street, Adr) = 0 Then
                          Adr := Adr + ' по ' +Street;
                    End;

                    If Pos( Street, Adr)=0 Then
                       Adr := Adr + ' та по ' +Street;

                    If Pos( Numb_House, Adr)=0 Then
                       Adr := Adr + IIF( Length( NumbHouse)>0, ' та ' + NumbHouse, '');
                 End;
              End;
          // нас.пункт, вулиця, буд., рада, район, область
          2 : Begin
                 If Length( AdrBefor) > 0 Then
                    Adr := AdrBefor;

                 If Length( Adr) = 0 Then
                 Begin
                    Adr := Adr + City;
                    Adr := Adr + ', ' + Street;
                    Adr := Adr + IIF( Length( Adr) > 0, ', ', '') + NumbHouse;
                    Adr := Adr + IIF( Length( Adr) > 0, ', ', '') + Advice;
                    Adr := Adr + IIF( Length( Adr) > 0, ', ', '') + Region;
                    Adr := Adr + IIF( Length( Adr) > 0, ', ', '') + Area;
                 End
                 Else
                 Begin
                    If Pos( City, Adr) = 0 Then
                    Begin
                       Adr := Adr + ' та в ' +City;

                       If Pos( Street, Adr) = 0 Then
                          Adr := Adr + ' по ' +Street;
                    End;

                    If Pos( Street, Adr)=0 Then
                       Adr := Adr + ' та по ' +Street;

                    If Pos( Numb_House, Adr)=0 Then
                       Adr := Adr + IIF( Length( Numb_House)>0, ' та ' + Numb_House, '');

                 End;
              End;
          //  область, район, рада, нас.пункт, вулиця, буд.,
          3 : Begin
                 If Length( AdrBefor) > 0 Then
                    Adr := AdrBefor;

                 If Length( Adr) = 0 Then
                 Begin
                    Adr := Adr + Name_Area;
                    Adr := Adr + IIF( Length( Adr) > 0, ', ', '') + Name_Region;
                    Adr := Adr + IIF( Length( Adr) > 0, ', ', '') + Name_Advice;
                    Adr := Adr + IIF( Length( Adr) > 0, ', ', '') + City;
                    Adr := Adr + IIF( Length( Adr) > 0, ', ', '') + Street;
                    Adr := Adr + IIF( Length( Adr) > 0, ', ', '') + NumbHouse;
                 End
                 Else
                 Begin
                    If Pos( Name_Area, Adr) = 0 Then
                    Begin
                       Adr := Adr + ' та ' + Name_Area;
                       Adr := Adr + IIF( Length( Adr) > 0, ', ', '') + Name_Region;
                       Adr := Adr + IIF( Length( Adr) > 0, ', ', '') + Name_Advice;
                       Adr := Adr + IIF( Length( Adr) > 0, ', ', '') + City;
                       Adr := Adr + IIF( Length( Adr) > 0, ', ', '') + Street;
                       Adr := Adr + IIF( Length( Adr) > 0, ', ', '') + NumbHouse;
                    End
                    Else
                       If Pos( Name_Region, Adr) = 0 Then
                       Begin
                          Adr := Adr + ' та ' + Name_Region;
                          Adr := Adr + IIF( Length( Adr) > 0, ', ', '') + Name_Advice;
                          Adr := Adr + IIF( Length( Adr) > 0, ', ', '') + City;
                          Adr := Adr + IIF( Length( Adr) > 0, ', ', '') + Street;
                          Adr := Adr + IIF( Length( Adr) > 0, ', ', '') + NumbHouse;
                       End
                       Else
                          If Pos( Name_Advice, Adr) = 0 Then
                          Begin
                             Adr := Advice + ' та ' + Name_Advice;
                             Adr := Adr + IIF( Length( Adr) > 0, ', ', '') + City;
                             Adr := Adr + IIF( Length( Adr) > 0, ', ', '') + Street;
                             Adr := Adr + IIF( Length( Adr) > 0, ', ', '') + NumbHouse;
                          End
                          Else
                          Begin
                             If Pos( City, Adr) = 0 Then
                             Begin
                                Adr := Adr + ' та в ' +City;

                                If Pos( Street, Adr) = 0 Then
                                   Adr := Adr + ' по ' +Street;
                             End;

                             If Pos( Street, Adr)=0 Then
                                Adr := Adr + ' та по ' +Street;

                             If Pos( Numb_House, Adr)=0 Then
                                Adr := Adr + IIF( Length( Numb_House)>0, ' та ' + Numb_House, '');
                          End;
                 End;
              End;
          // в области, районе, совете, нас.пункте, по  улице
          4 : Begin
                 If Length( AdrBefor) > 0 Then
                    Adr := AdrBefor;

                 If Length( Adr) = 0 Then
                 Begin
                    Adr := Adr + Area;
                    Adr := Adr + IIF( Length( Adr) > 0, ', ', '') + Region;
                    Adr := Adr + IIF( Length( Adr) > 0, ', ', '') + Advice;
                    Adr := Adr + IIF( Length( Adr) > 0, ', ', '') + City;
                    Adr := Adr + IIF( Length( Adr) > 0, ', ', '') + Street;
                    Adr := Adr + IIF( Length( Adr) > 0, ', ', '') + NumbHouse;
                 End
                 Else
                 Begin
                    If Pos( Area, Adr) = 0 Then
                    Begin
                       Adr := Adr + ' та в ' + Area;
                       Adr := Adr + IIF( Length( Adr) > 0, ', ', '') + Region;
                       Adr := Adr + IIF( Length( Adr) > 0, ', ', '') + Advice;
                       Adr := Adr + IIF( Length( Adr) > 0, ', ', '') + City;
                       Adr := Adr + IIF( Length( Adr) > 0, ', ', '') + Street;
                       Adr := Adr + IIF( Length( Adr) > 0, ', ', '') + NumbHouse;
                    End
                    Else
                       If Pos( Region, Adr) = 0 Then
                       Begin
                          Adr := Adr + ' та в ' + Region;
                          Adr := Adr + IIF( Length( Adr) > 0, ', ', '') + Advice;
                          Adr := Adr + IIF( Length( Adr) > 0, ', ', '') + City;
                          Adr := Adr + IIF( Length( Adr) > 0, ', ', '') + Street;
                          Adr := Adr + IIF( Length( Adr) > 0, ', ', '') + NumbHouse;
                       End
                       Else
                          If Pos( Advice, Adr) = 0 Then
                          Begin
                             Adr := Advice + ' та в ' + Advice;
                             Adr := Adr + IIF( Length( Adr) > 0, ', ', '') + City;
                             Adr := Adr + IIF( Length( Adr) > 0, ', ', '') + Street;
                             Adr := Adr + IIF( Length( Adr) > 0, ', ', '') + NumbHouse;
                          End
                          Else
                          Begin
                             If Pos( City, Adr) = 0 Then
                             Begin
                                Adr := Adr + ' та в ' +City;

                                If Pos( Street, Adr) = 0 Then
                                   Adr := Adr + ' по ' +Street;
                             End;

                             If Pos( Street, Adr)=0 Then
                                Adr := Adr + ' та по ' +Street;

                             If Pos( Numb_House, Adr)=0 Then
                                Adr := Adr + IIF( Length( Numb_House)>0, ' та ' + Numb_House, '');
                          End;
                 End;
              End;
              // вулиця, буд., район, нас.пункт,
          5 : Begin
                 If Length( AdrBefor) > 0 Then
                    Adr := AdrBefor;

                 If Length( Adr) = 0 Then
                 Begin
                    Adr := Street;
                    Adr := Adr + IIF( Length( NumbHouse)>0, ', ' + NumbHouse, '');
                    Adr := Adr + GetRegion( Name_Region, 2);
                    Adr := Adr + IIF( Pos( 'Київ', City) > 0, ' м. Києва', City);
                 End
                 Else
                    // в різних районах
                    If Pos( GetRegion( Name_Region, 2), Adr) = 0 Then
                    Begin
                       Adr := Adr + ' та ' + Street;
                       Adr := Adr + IIF( Length( Numb_House)>0, ', ' + Numb_House, '');
                       Adr := Adr + GetRegion( Name_Region, 2);
                       Adr := Adr + IIF( Pos( 'Київ', City) > 0, ' м. Києва', City);
                    End
                    Else
                    Begin
                       // на різних вулицях
                       If Pos( Street, Adr) = 0 Then
                          Adr :=  Copy( Adr, 0, Pos( GetRegion( Name_Region, 2), Adr)) +
                                  ' та ' + Street + IIF( Length( Numb_House)>0, ', ' + Numb_House, '') +
                                  Copy( Adr, Pos(  GetRegion( Name_Region, 2), Adr) , Length( Adr) - Length( GetRegion( Name_Region, 2))+2)
                       Else
                          If (Pos( Street, Adr) > 0) And (Pos( Numb_House, Adr)=0) Then
                             Adr := Copy( Adr, 0, Pos( Street + ', ', Adr)-1 + Length( Street + ', ')) + Numb_House + ' та ' +
                                    Copy( Adr, Pos( Street + ', ', Adr) + Length( Street + ', '), Length( Adr) - Length( Street + ', '));
                    End;
              End;
       End;

   Result := Adr;
End;
//----------------------------------------------------->

Function GetArea( AreaName : String) : String;
Begin
   Result := AreaName;

   If Pos('ька ', AreaName) > 0 Then
      Result := Copy(AreaName, 1, Pos('ька ', AreaName)) + 'кої області'
   Else
      Result := CityFull( AreaName) + ' ';
End;

//----------------------------------------------------->

Function GetRegion( RegionName : String; Type : Byte) : String;
Begin
   Result := RegionName;

   Case Type Of
   2 : If Pos( 'ький ', RegionName) > 0 Then
           Result:= ' у ' + Copy( RegionName, 1, Pos( 'ький ', RegionName)) + 'кому районі'
        Else
           If Pos( 'ний ', RegionName) > 0 Then
              Result := ' у ' + Copy( RegionName, 1, Pos( 'ний ', RegionName)) + 'ному районі'
           Else
              Result := CityFull( RegionName) + ' ';
   3 :  If Pos( 'ький ', RegionName) > 0 Then
           Result:= Copy( RegionName, 1, Pos( 'ький ', RegionName)) + 'кого району'
        Else
           If Pos( 'ний ', RegionName) > 0 Then
              Result := Copy( RegionName, 1, Pos( 'ний ', RegionName)) + 'ного району'
           Else
              Result := CityFull( RegionName) + ' ';
   End;
End;
//----------------------------------------------------->

Function GetAdvice( AdviceName : String) : String;
Begin
   Result := AdviceName;

   If Pos( 'ька ', AdviceName) > 0 then
      If Pos( 'сільська', AdviceName) > 0 then
         Result := Copy( AdviceName, 1, Pos( 'ька ', AdviceName)) + 'кої сільської ради'
      Else
         If Pos( 'міська', AdviceName) > 0 then
            Result := Copy( AdviceName, 1, Pos( 'ька ', AdviceName)) + 'кої міської ради'
          else
             If Pos( 'селищна', AdviceName) > 0 then
                Result := Copy(AdviceName, 1, Pos('ька ', AdviceName)) + 'кої селищної ради'
             else
                Result := CityFull( AdviceName)
   else
      Result := CityFull( AdviceName);

End;
//----------------------------------------------------->

Function CityFull( CityName : String) : String;
Begin
   //Населений пункт (повністю)
   If (Length( CityName) > 0)  And ((Pos( 'м.', CityName) > 0) Or (Pos( 'с.', CityName) > 0) Or (Pos( 'смт', CityName) > 0) Or (Pos( 'c-', CityName) > 0)) Then
   Begin
       If Pos('м.', CityName)>0 Then
          Result := 'місто ' + Trim(Copy(CityName,Pos('м.',CityName)+2, Length(CityName)-2))
       Else
          If Pos('с.', CityName)>0 Then
             Result := 'село ' + Trim(Copy(CityName, Pos('с.', CityName)+3, Length(CityName)-3))
          Else
             If Pos('смт', CityName)>0 Then
                Result  := 'селище міського типу ' + Trim(Copy(CityName, Pos('смт', CityName)+4, Length(CityName)-4))
             Else
                If Pos('c-', CityName)>0 Then
                   Result := 'селище ' + Trim(Copy(CityName, Pos('с-', CityName)+5, Length(CityName)-4));
   End;
End;
//----------------------------------------------------->
begin
    SeekIKN( <DM1.QbObject."IKN">);

    Address   := GetFullAddress( <DM1.QbObject."IKN">, Address, <DM1.QbObject."Num_House">, <DM1.QbObject."ID_Street">, 1);
    Territory := GetFullTerritory( <DM1.QbObject."IKN">, 3, ', ');       
end.


Данный код универсальный и можно использовать под любой адрес. Для адреса используются: Код КУАТУ, улица, номер дома.
Но если в адресе используются дополнительные поля с "Параметров участка", Вы должны его уже добавить сами.

Теперь по параметрам функций:
1. GetFullAddress:
<DM1.QbObject."IKN"> - Кадастровй номер участка
Address - адрес пред.участка (если Вы делаете перебор участков по зеленной метке)
<DM1.QbObject."Num_House"> - номер дома
<DM1.QbObject."ID_Street"> - код улицы
1-5 - формат адреса (см. комментарии под каждым форматом)

2. GetFullTerritory:
<DM1.QbObject."IKN"> - кадастровый номер
3 - формат заполнения местоположения (См. комментарии)
', ' - любой символ в лапках, служит разделителем между словами

feNICKs
Повідомлень: 412
З нами з: 13 січня 2012, 16:03
Контактна інформація:

Re: Отчеты в GIS6

Повідомлення feNICKs » 10 квітня 2014, 14:41

Кстати, для заметки, мы недавно добавили новую функцию ReplaceStr( <строка, в которой нужно поменять слова>, <под-строка, которую нужно найти и заменить >, <под-строка, на которую нужно заменить>)

пример

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

    Str := <DM1.QbObject."Address">; // Ваш  "Київська область, Васильківський район, с.Здорівка вул.Жовтнева,1"

    Str :=  ReplaceStr( Str, 'ська область', 'ької області');
    Str :=  ReplaceStr( Str, 'ький район', 'ького району');
    Str :=  ReplaceStr( Str, 'ний район', 'ного району');
    Str :=  ReplaceStr( Str, 'сільська рада', 'сільської ради');
    Str :=  ReplaceStr( Str, 'міська рада', 'міської ради');
    Str :=  ReplaceStr( Str, 'селищна рада', 'селищної ради');
   
    If Pos( Str, Address) = 0 Then
    Begin
        If Length( Address) > 0 Then
           Adress := Address + ' та ';

       Address := Address + Str;
   
    If Pos( Str, Address) = 0 Then
    Begin
        If Length( Address) > 0 Then
           Adress := Address + ' та ';

       Address := Address + Str;


До: Київська область, Васильківський район, с.Здорівка вул.Жовтнева,1
После: Київської області, Васильківського району, с.Здорівка вул.Жовтнева,1

Данная процедура проще, но Вы не сможете комбинировать слова т.к. только заменяете на нужные кусочки.

zigura_a
Повідомлень: 37
З нами з: 19 березня 2014, 08:26

Re: Отчеты в GIS6

Повідомлення zigura_a » 11 квітня 2014, 12:24

Доброго дня. Підскажіть яку потрібно підставить формулу щоб відображалить данні із закладки "Земельныей участок" графа "Нас. пункт". Наприлкада: Земельна дылянка розташована [(формула яка відображає данні з графи "Нас. пункт] ....
:tnk: