Звіти в ГІС 6

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

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

Alexolei
Повідомлень: 7
З нами з: 19 вересня 2014, 14:21

Re: Отчеты в GIS6

Повідомлення Alexolei » 19 вересня 2014, 15:51

Письмо отправил на почту, спасибо.

dhhdh
Повідомлень: 14
З нами з: 13 лютого 2014, 14:14

Re: Отчеты в GIS6

Повідомлення dhhdh » 15 жовтня 2014, 12:26

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

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

Re: Отчеты в GIS6

Повідомлення NickS » 15 жовтня 2014, 15:30

dhhdh писав:Підскажіть, будь ласка, як підключити ось такі бази у звіті

І не буде таких таблиць в інших шаблонах! :-) Звісно, допоки Ви не створите їх.
Річ в тому, що дані таблиці - це не таблиці з бази даних GISа, а це тимчасові таблиці створені з sql-запитів. Саме тому в одних звітових формах вони є, а в інших не має. Вони створюються вручну в редакторі по кнопці ADO - "Запит ADO" (таблиці з'являються в нижній частині сторінки як окремі компоненти). Ви даєте цій тимчасовій таблиці будь-яке ім'я і присвоюєте в коді sql-запит, який і заповнить цю таблицю даними. Після закриття шаблона, таблиці теж закриваються.

dhhdh
Повідомлень: 14
З нами з: 13 лютого 2014, 14:14

Re: Отчеты в GIS6

Повідомлення dhhdh » 16 жовтня 2014, 08:48

Дякую. Буду розбирати)

Fater
Повідомлень: 72
З нами з: 21 грудня 2011, 21:26
Звідки: Донецкая область

Re: Отчеты в GIS6

Повідомлення Fater » 03 грудня 2014, 13:08

Допоможіть будь-ласка.
Необхідно щоб у звітній формі виводилося найменування постійного користувача або орендатора, але жодна з готових форм не працює, навіть "Госакт на право постоянного пользования А4.fr3" залишає це поле пустим.

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

Re: Отчеты в GIS6

Повідомлення feNICKs » 04 грудня 2014, 12:16

Fater писав:Допоможіть будь-ласка.
Необхідно щоб у звітній формі виводилося найменування постійного користувача або орендатора, але жодна з готових форм не працює, навіть "Госакт на право постоянного пользования А4.fr3" залишає це поле пустим.

В этой отч.форме выводиться на печать только Владелец (Субъект) права.
Чтоб выводило владельца или арендатора, то нужно задавать проверку по виду документации (например в техничке) и в зависимости от вида права собственности перебирать или субъеков права или арендаторов.

Вот рабочий код:
Создаем переменные:

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

Var
   CustomerWho, CustomerWho3, CustomerWho2, NameTest,Owner, FunkName: String;


Смотрим в техничке Форму документа:

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

 If RecordCount( 'DM1.QiTechDoc') > 0 Then
    Begin
      If LocateData( 'DM2.TbTypeTake', 'ID_TypeTake', <DM1.QiTechDoc."ID_TypeTake">) Then
          Begin
             If <DM2.TbTypeTake."ID_TypeTake"> In [ 5, 9] Then
                Owner := 'lease';//Аренда

             If <DM2.TbTypeTake."ID_TypeTake"> In [ 1, 2, 3, 6, 7, ] Then
                Owner := 'owner';//Постоянное пользование
          End
   End;


Создаем список Субъектов или Арендаторов

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

If Owner = 'owner' Then
           QuerySQL ('Select * From UserRec Where (ID_Object = ' + IntToStr(<DM1.QbObject."ID_Object">) + ') And (DateFirst <= GETDATE()) And (DateLast Is Null Or DateLast > GETDATE()) Order By ID_People, ID_Firm')
        Else
           QuerySQL( 'SET DATEFORMAT dmy; Select A.ID_LeaserType, A.ID_LeaserFirm, A.ID_LeaserPeople, A.LeaserName '+
                     'From [Object] O, Lease A, LeasePoly LP ' +
                     'Where (O.ID_Object = ' + IntToStr( <DM1.QbObject."ID_Object">) +
                     ') And (LP.ID_Object = O.ID_Object) And (A.ID_Lease = LP.ID_Lease) And ' +
                     '(A.DateFirst < GETDATE()) And ((A.DateLast > GETDATE()) Or (A.DateLast is Null ))');


Перебираем созданный список и выводим в переменные список владельцев и функциональное

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

DataFirst('DM1.QuerySQL');

        While Not DataEOF('DM1.QuerySQL') Do
        Begin
            If Owner = 'owner' Then
            Begin
               If (LocateData( 'DM2.TbTypeOwner', 'ID_TypeOwner', GetValue( 'DM1.QuerySQL', 'ID_TypeOwner'))) And (Pos( GetValue( 'DM1.QuerySQL', 'NameUser') + ', ',NameTest) = 0) Then
               Begin
                  NameTest                := NameTest + GetValue( 'DM1.QuerySQL', 'NameUser') + ', ';

                  If (Length(Trim(CustomerWho2)) > 0) Then
                  Begin
                     CustomerWho         := CustomerWho + #13;
                     CustomerWho2        := CustomerWho2 + #13;
                     CustomerWho3        := CustomerWho3 + ', ' + #13;
                  End;

                  //-----> фіз.особа
                  If (<DM2.TbTypeOwner."ID_TypeUser"> = False) And (LocateData( 'DM1.QsPeople','ID_People', GetValue( 'DM1.QuerySQL', 'ID_People'))) Then
                  Begin
                     CustomerWho         := CustomerWho  + 'гр. ' + FamilyShort( <DM1.QsPeople."Family">);
                     CustomerWho2        := CustomerWho2 + 'гр. ' + <DM1.QsPeople."Family2">;
                     CustomerWho3        := CustomerWho3 + 'гр. ' + <DM1.QsPeople."Family3">;
                  End;

                  //-----> Юр.особі
                  If (<DM2.TbTypeOwner."ID_TypeUser"> = True) And (LocateData( 'DM1.QsFirm','ID_Firm',GetValue( 'DM1.QuerySQL', 'ID_Firm'))) Then
                  Begin
                     CustomerWho         := CustomerWho + <DM1.QsFirm."Name_Who">;
                     CustomerWho2        := CustomerWho2 + <DM1.QsFirm."Name_Towhom">;
                     CustomerWho3        := CustomerWho3 + <DM1.QsFirm."Name_Whom">;
                  End;
               End;

               //------> Цільове використання
               If LocateData( 'DM2.TbUses', 'ID_Uses',  GetValue('DM1.QuerySQL', 'ID_Uses')) Then
                  If RecordCount('DM2.TbUsesLnk') > 0 Then
                     If (LocateData( 'DM2.TbTypeUse', 'ID_TypeUse', GetValue('DM2.TbUsesLnk', 'ID_TypeUse'))) And (Pos( Lowercase( <DM2.TbTypeUse."Name">), FunkName) = 0) Then
                     Begin
                        If Length( Trim( FunkName)) > 0 Then
                           FunkName := FunkName + ' та ';

                        FunkName    := FunkName + IIF( Pos( 'для ', Lowercase( <DM2.TbTypeUse."Name">)) = 0, 'для ', '') + Lowercase( <DM2.TbTypeUse."Name">);
                     End;
            End
            Else
            Begin
               If Pos( GetValue( 'DM1.QuerySQL', 'LeaserName') + ', ', NameTest) = 0 Then
               Begin
                  NameTest        := NameTest + GetValue( 'DM1.QuerySQL', 'LeaserName') + ', ';

                  If (Length(Trim(CustomerWho2)) > 0) Then
                  Begin
                     CustomerWho  := CustomerWho + #13;
                     CustomerWho2 := CustomerWho2 + #13;
                     CustomerWho3 := CustomerWho3 + ', ' + #13;
                  End;

                  //-----> фіз.особа
                  If (GetValue( 'DM1.QuerySQL', 'ID_TypeLeaser') < 3) And (LocateData( 'DM1.QsPeople','ID_People', GetValue( 'DM1.QuerySQL', 'ID_LeaserPeople'))) Then
                  Begin
                     CustomerWho  := CustomerWho  + 'гр. ' + FamilyShort( <DM1.QsPeople."Family">);
                     CustomerWho2 := CustomerWho2 + 'гр. ' + <DM1.QsPeople."Family2">;
                     CustomerWho3 := CustomerWho3 + 'гр. ' + <DM1.QsPeople."Family3">;
                  End;

                  //-----> Юр.особі
                  If (GetValue( 'DM1.QuerySQL', 'ID_TypeLeaser') > 2) And (LocateData( 'DM1.QsFirm','ID_Firm',GetValue( 'DM1.QuerySQL', 'ID_LeaserFirm'))) Then
                  Begin
                     CustomerWho         := CustomerWho + <DM1.QsFirm."Name_Who">;
                     CustomerWho2        := CustomerWho2 + <DM1.QsFirm."Name_Towhom">;
                     CustomerWho3        := CustomerWho3 + <DM1.QsFirm."Name_Whom">;
                  End;
               End;
            End;

            DataNext( 'DM1.QuerySQL');
        End;
        //-------------------------------------------->

        If Owner = 'lease' Then
        Begin
           QuerySQL( 'Select ID_Uses From UserRec Where (ID_Object = ' + IntToStr(<DM1.QbObject."ID_Object">) + ') And (DateFirst <= GETDATE()) And (DateLast Is Null Or DateLast > GETDATE()) Group By ID_Uses');

           If RecordCount( 'DM1.QuerySQL') > 0 Then
              While Not DataEOF( 'DM1.QuerySQL') Do
              Begin
                 If LocateData( 'DM2.TbUses', 'ID_Uses',  GetValue('DM1.QuerySQL', 'ID_Uses')) Then
                  If RecordCount('DM2.TbUsesLnk') > 0 Then
                     If (LocateData( 'DM2.TbTypeUse', 'ID_TypeUse', GetValue('DM2.TbUsesLnk', 'ID_TypeUse'))) And (Pos( Lowercase( <DM2.TbTypeUse."Name">), FunkName) = 0) Then
                     Begin
                        If Length( Trim( FunkName)) > 0 Then
                           FunkName := FunkName + ' та ';

                        FunkName    := FunkName + IIF( Pos( 'для ', Lowercase( <DM2.TbTypeUse."Name">)) = 0, 'для ', '') + Lowercase( <DM2.TbTypeUse."Name">);
                     End;

                 DataNext( 'DM1.QuerySQL');
              End;
        End;

Fater
Повідомлень: 72
З нами з: 21 грудня 2011, 21:26
Звідки: Донецкая область

Re: Отчеты в GIS6

Повідомлення Fater » 15 грудня 2014, 15:08

feNICKs писав:
Fater писав:Допоможіть будь-ласка.
Необхідно щоб у звітній формі виводилося найменування постійного користувача або орендатора, але жодна з готових форм не працює, навіть "Госакт на право постоянного пользования А4.fr3" залишає це поле пустим.

В этой отч.форме выводиться на печать только Владелец (Субъект) права.
Чтоб выводило владельца или арендатора, то нужно задавать проверку по виду документации (например в техничке) и в зависимости от вида права собственности перебирать или субъеков права или арендаторов.

Вот рабочий код:
Создаем переменные:
.......

Спасибо за великолепный ответ, но я не программист, я пользователь, для меня это "китайская грамота".
Может быть Вы в следующих обновлениях добавите шаблоны для изготовления документов по аренде и по праву постоянного пользования или исправите ошибки в стандартном наборе шаблонов.

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

Re: Отчеты в GIS6

Повідомлення NoViChoK » 27 грудня 2014, 16:57

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

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

NickS писав:
zigura_a писав:1. які формули треба прописувати в шаблоні.

Самий простий варіант, коли хочемо отримати лише назву су'єктів:

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

  NameUser  := ''; //Название текущего субъекта                                                                                                       
  NameUserP := ''; //Название субъекта от которого перешло право                                                         

  NameUser  := <DM1.TbUser."NameUser">;     
  If LocateData('DM1.TbUserLnk', 'ID_Primary', <DM1.TbUser."ID_User">) then
     NameUserP := GetValue('DM1.TbUserLnk', 'NameUser');


Який код потрібно дописати щоб отримати адресу проживання та телефон поточного суб'єкта (NameUser)?

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

Re: Отчеты в GIS6

Повідомлення feNICKs » 29 грудня 2014, 09:24

Який код потрібно дописати щоб отримати адресу проживання та телефон поточного суб'єкта (NameUser)?

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

    IF (<DM2.TbTypeOwner."ID_TypeUser"> = False) And (LocateData('DM1.QsPeople','ID_People', <DM1.TbUser."ID_People">)) Then
    Begin
         UserPhone     := <DM1.QsPeople."Phone">;
         UserAddress  := <DM1.QsPeople."Address">;
    End;

acpekttov
Повідомлень: 19
З нами з: 04 червня 2014, 16:13
Звідки: Запорожская область

Re: Отчеты в GIS6

Повідомлення acpekttov » 18 лютого 2015, 13:47

Підскажіть новічку, що треба зробити в отчёте Акт приёма передачи межевих знаків 2013, щоб масштаб для кожного межевого знака був різним