Отчет расчет с контрагентами

Программирование на Атлантисе (VIP, FCOM, ARD), FastReport

Модераторы: m0p3e, edward_K, Модераторы

Ответить
korvanakorvana
Местный житель
Сообщения: 429
Зарегистрирован: 24 сен 2008, 11:53

Отчет расчет с контрагентами

Сообщение korvanakorvana »

Код: Выделить всё

.LinkForm 'ALLPLATS_AZBH_SLK' Prototype is ALLPLATS							
.Group '3. Реестр операций с контрагентами'								
.NameInList 'Акт сверки с контрагентом'								
.SlkNumber									
.create view MyDate as									
select katorg.name (fieldname=NameOrg), systdate.nboss (fieldname=NameBoss), systdate.nmainbuh (fieldname=NameBuh)	
from systdate, katorg									
where 										
((										
systdate.nrecmyorg/==katorg.nrec								
));										
 										
.var										
  IndexArray:Integer									
  AllPrint:Boolean									
  DbPrint:Boolean									
  KrPrint:Boolean									
  DbStatusVal:Boolean									
  KrStatusVal:Boolean									
  NalichStatus:Boolean									
  NalichNomRec:Integer									
  DbNomRec:Integer									
  KrNomRec:Integer									
  DbDocDatVal:String									
  DbDocNomVal:String									
  DbDocTipVal:String									
  DbDocSumVal:Double									
  KrBDocDatVal:String									
  KrBDocNomVal:String									
  KrBDocSumVal:String									
  KrDocDatVal:String									
  KonDatDoc:String									
  KrDocNomVal:String									
  KrDocTipVal:String									
  KrDocSumVal:Double									
  DbStatus:ARRAY[1..1000] of Boolean								
  DbDocDat:ARRAY[1..1000] of String								
  DbDocNom:ARRAY[1..1000] of String								
  DbDocTip:ARRAY[1..1000] of String								
  DbDocSum:ARRAY[1..1000] of Double								
  KrStatus:ARRAY[1..1000] of Boolean								
  KrBDocDat:ARRAY[1..1000] of String								
  KrBDocNom:ARRAY[1..1000] of String								
  KrBDocSum:ARRAY[1..1000] of String								
  KrDocDat:ARRAY[1..1000] of String								
  KrDocNom:ARRAY[1..1000] of String								
  KrDocTip:ARRAY[1..1000] of String								
  KrDocSum:ARRAY[1..1000] of Double								
.endvar										
.fields										
 MyDate.NameOrg									
  header1										
  kontrname									
  kontraddr										
  kontrtel										
  bankname									
  bankschet									
  bankmfo										
  valtar										
  valtar										
  valtar										
  DbDocDatVal									
  DbDocNomVal									
  DbDocTipVal									
  DbDocSumVal									
  KrBDocDatVal									
  KrBDocNomVal									
  KrBDocSumVal									
  KrDocDatVal									
  KrDocNomVal									
  KrDocTipVal									
  KrDocSumVal									
  DbDocDatVal									
  DbDocNomVal									
  DbDocTipVal									
  DbDocSumVal									
  KrBDocDatVal									
  KrBDocNomVal									
  KrBDocSumVal									
  KrDocDatVal									
  KrDocNomVal									
  KrDocTipVal									
  KrDocSumVal									
  dsummakon									
  ksummakon									
  KonDatDoc									
 MyDate.NameOrg									
  abs(saldokon)									
 MyDate.NameOrg									
  KonDatDoc									
  abs(saldokon)									
  KonDatDoc									
// MyDate.NameOrg									
// MyDate.NameBoss									
// MyDate.NameBuh									
sGetTune('MyOrg')									
sGetTune('Boss')									
sGetTune('Mainbuh')									
  kontrname									
.endfields										
.{table 'MyDate'									
										
^										
.}										
Акт сверки с контрагентом								
^										
.{										
.begin										
 IndexArray := 1									
 While(IndexArray <= 1000)								
  {										
   DbStatus[IndexArray] := False								
   KrStatus[IndexArray] := False								
   IndexArray := IndexArray + 1								
  }										
end.										
										
Контрагент : ^									
Адрес : ^  Тел. : ^									
Банковские реквизиты : ^  р/с : ^  МФО : ^							
										
ДЕБЕТ (поступления товаров/денег)	 	 	КРЕДИТ (наши платежи/поставки товаров)	 	 
Дата	Номер	Тип	Сумма	Дата	Номер	Сумма	Дата	Номер	Тип	Сумма
 	 	док.	в ^	ДО	ДО	в ^	 	 	док.	в ^
.begin										
 DbNomRec    := 1									
 KrNomRec     := 1									
end.										
.{										
.begin										
 IndexArray := 1									
 NalichStatus := False									
 NalichNomRec := 0									
 DbDocDatVal  := 0									
 DbDocDatVal  := String(DDate)								
 DbDocNomVal  := 0									
 DbDocNomVal  := SubStr(SubStr(DDocument, InStr('N', DDocument)+2, 8), 1, InStr(' ', SubStr(DDocument, InStr('N', DDocument)+2, 8))-1)	
 DbDocTipval  := 0									
 DbDocTipVal  := SubStr(DDocument, 1, InStr('N', DDocument)-1)						
 DbDocSumVal  := 0									
 DbDocSumVal  := Double(DSumma)								
 KrBDocDatVal := 0									
 KrBDocDatVal := String(KBaseD)								
 KrBDocNomVal := 0									
 KrBDocNomVal := String(KBaseN)								
 KrBDocSumVal := 0									
 KrBDocSumVal := String(KBaseS)								
 KrDocDatVal  := 0									
 KrDocDatVal  := String(KDate)								
 KrDocNomVal  := 0									
 KrDocNomVal  := SubStr(SubStr(KDocument, InStr('N', KDocument)+2, 8), 1, InStr(' ', SubStr(KDocument, InStr('N', KDocument)+2, 8))-1)	
 KrDocTipVal  := 0									
 KrDocTipVal  := SubStr(KDocument, 1, InStr('N', KDocument)-1)						
 KrDocSumVal  := 0									
 KrDocSumVal  := Double(KSumma)								
 KonDatDoc    := SubStr(header2,43,12)								
 If(InStr('Накладн', DbDocTipVal) = 0)								
  {										
   While(IndexArray <= (DbNomRec - 1))								
    {										
     If((DbDocNom[IndexArray] = DbDocNomVal) And (DbDocTip[IndexArray] = DbDocTipVal) and (DbDocDat[IndexArray] = DbDocDatVal))	
      {										
       NalichStatus := True								
       NalichNomRec := IndexArray								
      }										
     IndexArray := IndexArray + 1								
    }										
  }										
 If(DbDocSumVal <> 0)									
  {										
   If(NalichStatus = True)								
    {										
     DbDocSum[NalichNomRec] := DbDocSum[NalichNomRec] + DbDocSumVal					
    }										
   Else										
    {										
     DbStatus[DbNomRec] := True								
     DbDocDat[DbNomRec] := DbDocDatVal								
     DbDocNom[DbNomRec] := DbDocNomVal								
     DbDocTip[DbNomRec] := DbDocTipVal								
     DbDocSum[DbNomRec] := DbDocSumVal								
     DbNomRec := DbNomRec + 1								
    }										
  }										
 If(KrDocSumVal <> 0)									
  {										
   KrStatus[KrNomRec]  := True								
   KrBDocDat[KrNomRec] := KrBDocDatVal								
   KrBDocNom[KrNomRec] := KrBDocNomVal								
   KrBDocSum[KrNomRec] := KrBDocSumVal								
   KrDocDat[KrNomRec]  := KrDocDatVal								
   KrDocNom[KrNomRec]  := KrDocNomVal								
   KrDocTip[KrNomRec]  := KrDocTipVal								
   KrDocSum[KrNomRec]  := KrDocSumVal								
   KrNomRec := KrNomRec + 1								
  }										
end.										
.}										
.begin										
 IndexArray   := 1									
 NalichStatus := True									
end.										
.{while (NalichStatus <> False)								
.begin										
 AllPrint := False									
 DbPrint  := False									
 KrPrint  := False									
 DbStatusVal := DbStatus[IndexArray]								
 KrStatusVal := KrStatus[IndexArray]								
 If((DbStatusVal = True) And (KrStatusVal = True))							
  {										
   AllPrint := True									
  }										
 If((DbStatusVal = True) And (KrStatusVal = False))							
  {										
   DbPrint := True									
  }										
 If((DbStatusVal = False) And (KrStatusVal = True))							
  {										
   KrPrint := True									
  }										
 If(DbStatusVal = True)									
  {										
   DbDocDatVal := DbDocDat[IndexArray]								
   DbDocNomVal := DbDocNom[IndexArray]								
   DbDocTipVal := DbDocTip[IndexArray]								
   DbDocSumVal := DbDocSum[IndexArray]								
  }										
 If(KrStatusVal = True)									
  {										
   KrBDocDatVal := KrBDocDat[IndexArray]								
   KrBDocNomVal := KrBDocNom[IndexArray]								
   If(Double(KrBDocSum[IndexArray]) <> 0)								
    {										
     KrBDocSumVal := KrBDocSum[IndexArray]							
    }										
   If(Double(KrBDocSum[IndexArray]) = 0)								
    {										
     KrBDocSumVal := ''									
    }										
   KrDocDatVal  := KrDocDat[IndexArray]								
   KrDocNomVal  := KrDocNom[IndexArray]								
   KrDocTipVal  := KrDocTip[IndexArray]								
   KrDocSumVal  := KrDocSum[IndexArray]								
 }										
 end.										
.{?internal;AllPrint=True									
^	^	^	&&&&&&&&&&.&&	^	^	&&&&&&&&&&.&&	^	^	^	&&&&&&&&&&.&&
.}										
.{?internal;DbPrint=True									
^	^	^	&&&&&&&&&&.&&	 	 	 	 	 	 	 
.}										
.{?internal;KrPrint=True									
 	 	 	 	^	^	&&&&&&&&&&.&&	^	^	^	&&&&&&&&&&.&&
.}										
.begin										
 IndexArray := IndexArray + 1								
 If((IndexArray > (KrNomRec - 1)) And (IndexArray > (DbNomRec - 1)))						
  {										
   NalichStatus := False									
  }										
end.										
.}										
ВСЕГО по контрагенту	 	&&&&&&&&&&.&&	 	 	 	 	 	 	&&&&&&&&&&.&&
										
.{?internal;dsummakon<ksummakon								
Задолжность контрагента по состоянию на  &&&&&&&&&&&& перед ^						
составляет	&&&&&&&&&&.&&								
.}										
.{?internal;dsummakon>ksummakon								
Задолженность ^ перед контрагентом по состоянию на &&&&&&&&&&&&&& 					
составляет	&&&&&&&&&&.&&								
.}										
.{?internal;dsummakon=ksummakon								
Задолженность по состоянию на &&&&&&&&&&&&&&							
отсутствует.									
.}										
.}										
.{table 'MyDate'									
										
Задолжность  подтверждаем:								
										
От ^										
										
Директор		^		 	 					
										
Главный бухгалтер	^		 	 					
.}										
										
От ^										
										
Директор		 	 	 	 					
										
Главный бухгалтер	 	 	 	 					
.endform										

В галактике я человек новый , вот нужно подредактировать этот отчет , а я не могу разобраться , что здесь что. От куда берутся к примеру вот эти переменные

Код: Выделить всё

 header1										
  kontrname									
  kontraddr										
  kontrtel										
  bankname									
  bankschet									
  bankmfo										
  valtar
и т.п. Помогите разобраться). Наверно буду казаться дурочкой, но извините какая есть)
Den
Местный житель
Сообщения: 1844
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Ярославская область ОАО "Часовой завод Чайка" г. Углич
Контактная информация:

Сообщение Den »

Читайте документацию :

"
Для расширения возможностей по созданию и модификации форм отчетов разработан механизм присоединенных форм.

Присоединенные формы позволяют:

создавать множество форм отчетов, отвечающих требованиям наибольшей наглядности, информативности, удобства использования и тому подобное, для одного потока данных и команд (управляемые формы) или использующих единые обращения к БД (автономные формы);

облегчают конечному пользователю создание новых форм отчетов;

получать несколько отчетов в одном запуске программы, причем время, затраченное на получение как одного, так и нескольких отчетов, практически одинаковое.

Форма-прототип является основной формой. Присоединенная форма без формы-прототипа функционировать не может.

Форма-прототип в процессе формирования отчета получает поток данных и команд из прикладной программы (для управляемых форм) или делает обращения к базе данных (для автономных форм), которые используются также присоединенными формами.

В присоединенной форме можно:

отфильтровать поток данных, поступающий из формы-прототипа в присоединенную форму;

создать собственные логические таблицы и ввести обращения к внешним логическим таблицам;

ввести новые циклы, в том числе циклы по логическим таблицам. Удалить лишние циклы (для управляемых форм - путем организации пустых циклов);

ввести программные блоки для вычисления переменных, элементов массивов, которые используются для создания вычисляемых полей, арифметических и логических выражений формы;

ввести новые вычисляемые поля, в том числе ввести поля-агрегаты типа суммы, максимума, минимума или среднего;

изменить форматы и взаимное расположение полей, удалить лишние поля;

изменить текстовую часть формы;

удалить или изменить заголовки и подножия;

изменить опции формы;

изменить формат формы (отчета) и редактор;

изменить стилевое оформление отчета: размер и тип шрифта, цветовое оформление, ввести оглавление и так далее. Возможности стилевого оформления определяются типом выбранного редактора.


"
korvanakorvana
Местный житель
Сообщения: 429
Зарегистрирован: 24 сен 2008, 11:53

Сообщение korvanakorvana »

это понятно. а где же найти эту прототип функцию(
Vik
Местный житель
Сообщения: 370
Зарегистрирован: 28 сен 2006, 15:43
Откуда: Санкт-Петербург
Контактная информация:

Сообщение Vik »

Если есть не слк и не ртф - форма с этим же прототипом, то в режиме редактирования, правая кнопка мыши - показать прототип. Если нет, то в каталоге галактики в папке FRM можно поискать нужный прототип
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5188
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Сообщение edward_K »

да уж писатели.
не учитесь на этом отчете. Лучше переписать его.
и версия у вас наверное 711 и ниже - в первых строках это видно 8) .
korvanakorvana
Местный житель
Сообщения: 429
Зарегистрирован: 24 сен 2008, 11:53

Сообщение korvanakorvana »

может кто подскажет ). Мне вообще этот отчет надо переделать таким образом, чтобы отчет выводился не по контрагентам а по грузополучателю). Может вопрос не сложный, а то я уже все справки перечитала и не могу разобраться.((((
Den
Местный житель
Сообщения: 1844
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Ярославская область ОАО "Часовой завод Чайка" г. Углич
Контактная информация:

Сообщение Den »

korvanakorvana писал(а):может кто подскажет ).... а то я уже все справки перечитала и не могу разобраться.((((
Можете сформулировать что именно Вам непонятно ?
korvanakorvana
Местный житель
Сообщения: 429
Зарегистрирован: 24 сен 2008, 11:53

Сообщение korvanakorvana »

как сделать выборку по грузополучателю (из модуля Управление сбытом - документы - счета до на продажу - какой либо счет- расширенная инфаормация, грузополучатель )так чтобы в данном отчете выводимая информация была не по контрагенту а по грузополучателю.
Den
Местный житель
Сообщения: 1844
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Ярославская область ОАО "Часовой завод Чайка" г. Углич
Контактная информация:

Сообщение Den »

Хм..по всей видимости никак. Наверняка базовый алгоритм, на основе которого формируется прототип анализирует необходимую информацию именно по контрагенту.
Действительно легче переписать его, наверное
Ответить