Звіти в ГІС 6
Re: Отчеты в GIS6
Письмо отправил на почту, спасибо.
Re: Отчеты в GIS6
Добрий день.
Підскажіть, будь ласка, як підключити ось такі бази у звіті
Справа в тому що в одній підшивці (яку я використовую як базу) у вікні "дані звіту" є такі прапорці:
а в іншій, яку я створюю такі прапорці і встановити то нікуди
Підскажіть, будь ласка, як підключити ось такі бази у звіті
Справа в тому що в одній підшивці (яку я використовую як базу) у вікні "дані звіту" є такі прапорці:
а в іншій, яку я створюю такі прапорці і встановити то нікуди
Re: Отчеты в GIS6
dhhdh писав:Підскажіть, будь ласка, як підключити ось такі бази у звіті
І не буде таких таблиць в інших шаблонах! Звісно, допоки Ви не створите їх.
Річ в тому, що дані таблиці - це не таблиці з бази даних GISа, а це тимчасові таблиці створені з sql-запитів. Саме тому в одних звітових формах вони є, а в інших не має. Вони створюються вручну в редакторі по кнопці ADO - "Запит ADO" (таблиці з'являються в нижній частині сторінки як окремі компоненти). Ви даєте цій тимчасовій таблиці будь-яке ім'я і присвоюєте в коді sql-запит, який і заповнить цю таблицю даними. Після закриття шаблона, таблиці теж закриваються.
Re: Отчеты в GIS6
Дякую. Буду розбирати)
Re: Отчеты в GIS6
Допоможіть будь-ласка.
Необхідно щоб у звітній формі виводилося найменування постійного користувача або орендатора, але жодна з готових форм не працює, навіть "Госакт на право постоянного пользования А4.fr3" залишає це поле пустим.
Необхідно щоб у звітній формі виводилося найменування постійного користувача або орендатора, але жодна з готових форм не працює, навіть "Госакт на право постоянного пользования А4.fr3" залишає це поле пустим.
Re: Отчеты в GIS6
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;
Re: Отчеты в GIS6
feNICKs писав:Fater писав:Допоможіть будь-ласка.
Необхідно щоб у звітній формі виводилося найменування постійного користувача або орендатора, але жодна з готових форм не працює, навіть "Госакт на право постоянного пользования А4.fr3" залишає це поле пустим.
В этой отч.форме выводиться на печать только Владелец (Субъект) права.
Чтоб выводило владельца или арендатора, то нужно задавать проверку по виду документации (например в техничке) и в зависимости от вида права собственности перебирать или субъеков права или арендаторов.
Вот рабочий код:
Создаем переменные:
.......
Спасибо за великолепный ответ, но я не программист, я пользователь, для меня это "китайская грамота".
Может быть Вы в следующих обновлениях добавите шаблоны для изготовления документов по аренде и по праву постоянного пользования или исправите ошибки в стандартном наборе шаблонов.
Re: Отчеты в GIS6
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)?
Re: Отчеты в GIS6
Який код потрібно дописати щоб отримати адресу проживання та телефон поточного суб'єкта (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;
Re: Отчеты в GIS6
Підскажіть новічку, що треба зробити в отчёте Акт приёма передачи межевих знаків 2013, щоб масштаб для кожного межевого знака був різним