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

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

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

Ответить
BlazeBio
Местный житель
Сообщения: 386
Зарегистрирован: 27 апр 2010, 14:31
Контактная информация:

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

Сообщение BlazeBio »

В стандартном отчёте 'СКЛАДСКОЙ ОРДЕР С ГРУППИРОВКОЙ МЦ ПО ПАРТИЯМ (РУБ) ' требуется посчитать новую общую сумму по группам матценности SumPR и заменить старую этой новой суммой. В интерфейсе сумму можно было бы посчитать через функцию во вью, а здесь нет. Можно ли в данном случае как-то обойти невозможность использования функции в присоединённой форме ?
RAJAH
Местный житель
Сообщения: 932
Зарегистрирован: 18 фев 2008, 12:49

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

Сообщение RAJAH »

Объявите в секции .var ... .endvar свою переменную, и в тексте формы присваивайте ей нужное значение. Заменять значение переменной SumPR не надо, просто в секции .fields ... .endfields укажите вывод новой переменной, а не SumPR.
Masygreen
Местный житель
Сообщения: 1089
Зарегистрирован: 04 сен 2008, 11:27
Откуда: Москва
Контактная информация:

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

Сообщение Masygreen »

+1 Зачем вам именно функция??
1. делайте свой виев вызывайте в begin end
2. делайте свой интерфейс вызывайте в begin end
3. подменяйте в fields своей переменной
Время ведет!
Алексей
Местный житель
Сообщения: 2896
Зарегистрирован: 24 июн 2005, 12:12
Откуда: Иркутская область

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

Сообщение Алексей »

есть же агрегирующая команда, что-то типа fieldname 'SUM'
пишется в филдсах и сама считает сумму по полям.
BlazeBio
Местный житель
Сообщения: 386
Зарегистрирован: 27 апр 2010, 14:31
Контактная информация:

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

Сообщение BlazeBio »

Алексей писал(а):есть же агрегирующая команда, что-то типа fieldname 'SUM'
пишется в филдсах и сама считает сумму по полям.
Сделал через 'SUM'. Сумма в итого по матценности не проставляется (нулевая) :-( :

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

.LinkForm 'SKORDER_NEW05' Prototype is 'SKORDER'
.Group 'Складской ордер'
.NameInList 'СКЛАДСКОЙ ОРДЕР С ГРУППИРОВКОЙ МЦ ПО ПАРТИЯМ (РУБ) (Новый)'
.DEFO LANDSCAPE
.var
  Sender:String
  senderpost:String
  Recipient:String
  RecipientPost:String
  katmcnrec:comp
.endvar
.Create  view localSklOrder
from
  SklOrder
;
.Create                 view v1 (osum, osumv)as select sporder.kol*sporder.rsrprice, sporder.kol*sporder.rvprice from sporder
where ((SpOrderRec== sporder.nrec));
.Create            view v2 (summak,summakv)as select katsopr.summa, katsopr.sumval from sklorder,katsopr
where((SKLORDERREC==sklorder.nrec and sklorder.csopr==katsopr.nrec));
.Create                 view v3 (SumGR) as select sporder.kol*sporder.rsrprice from sporder
where ((SKLORDERREC== sporder.csklorder and katmcnrec==sporder.cmc));
.Create                 view v4 (katmcnrec)as select katmc.nrec from katmc
where ((MC==katmc.name));
.fields
  CommonFormHeader
  OrdName
  nOrder
  dOrder
  Osnov
  Sklad
  MOL
  Mol_Post
  'в '+RublSimv
  'в '+RublSimv
  NNomer
  MC
  ED
  Party
  Kol
  Price
  v3.SumGR//Summ
  NNomer
  MC
  ED
  countpart
  SumK
  v3.SumGR:'sum'//SumPR
  v2.summak//Itogo
  Senderpost
  Sender
  RecipientPost
  Recipient
.endfields
.{
 ^

                      @@@@@@@@@ СКЛАДСКОЙ ОРДЕР №  ^
                            от ^

.if SKLORDER01
  Основание: ^
.if SKLORDER02
.else
.end
.else
.end
  Склад    : @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
  МОЛ      : @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
  Должность: @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

──────────────┬────────────────────────────┬─────────┬───────────┬──────────────────┬───────────────┬─────────────────
Номенклатурный│      Наименование МЦ       │ Единица │  Серия    │    Количество    │     Цена      │   Стоимость
    номер     │                            │измерения│           │                  │ @~@@@@@@@@@@@ │  @~@@@@@@@@@@@
──────────────┴────────────────────────────┴─────────┴───────────┴──────────────────┴───────────────┴─────────────────
.{
.begin
  If v4.getfirst katmc=tsok
	{
	  katmcnrec:=v4.katmc.nrec;
	if v3.getfirst sporder=tsOk
	  {
	  }
	}
end.
.{

&&&&&&&&&&&&&& @@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@ @@@@@@@@@@@ &'&&&&&&&&&&&&&&&& &&&&&&&&&&&&&&& &'&&&&&&&&&&&&&&&
.}


 Итого по                                             Количество
 матценности :                                            серий:
&&&&&&&&&&&&&& @@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@ &&&&&&&&&&  &'&&&&&&&&&&&&&&&&                 &&&&&&&&&&&&&&&&&
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
.}
.begin
if v2.getfirst SklOrder=0 {
   if v2.getfirst katsopr=0 {
      }
   }
end.
   Итого :                                                                                           &&&&&&&&&&&&&&&&&
.begin
  localSklOrder.GetFirst SklOrder where ((SklOrderRec == SklOrder.nRec));
  if (localSklOrder.SklOrder.vidOrder = 0) // приходный
  {
    sender := Mol;
    Senderpost := mol_post;
  }
  if (localSklOrder.SklOrder.vidOrder = 1) // расходный
  {
    recipient := Mol;
    RecipientPost := mol_post;
  }
end.

   Принял: @@@@@@@@@@@@@@@@@@@@@@@@@@@@               @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
                    должность              подпись           расшифровка подписи
   Сдал :  @@@@@@@@@@@@@@@@@@@@@@@@@@@@               @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
                    должность              подпись           расшифровка подписи


.}
.endform
Алексей
Местный житель
Сообщения: 2896
Зарегистрирован: 24 июн 2005, 12:12
Откуда: Иркутская область

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

Сообщение Алексей »

я на полях своей таблицы не пробовал. а данные то вообще есть? попробуйте сами складывать в какую-нибудь переменную и после вывести.
BlazeBio
Местный житель
Сообщения: 386
Зарегистрирован: 27 апр 2010, 14:31
Контактная информация:

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

Сообщение BlazeBio »

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

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

.LinkForm 'SKORDER_05_PAA' Prototype is 'SKORDER'
.Group 'Складской ордер'
.NameInList 'СКЛАДСКОЙ ОРДЕР С ГРУППИРОВКОЙ МЦ ПО ПАРТИЯМ (РУБ) (Керамин)'
.DEFO LANDSCAPE
.var
  Sender:String
  senderpost:String
  Recipient:String
  RecipientPost:String
  mcnrec,mcnrec2:comp
  summaGR:double
.endvar
.Create  view localSklOrder
from
  SklOrder
;
//.Create                 view v1 (osum, osumv)as select sporder.kol*sporder.rsrprice, sporder.kol*sporder.rvprice from sporder
//where ((SpOrderRec== sporder.nrec));
.Create            view v2 (summak,summakv)as select katsopr.summa, katsopr.sumval from sklorder,katsopr
where((SKLORDERREC==sklorder.nrec and sklorder.csopr==katsopr.nrec));
.Create                 view v3 (SumGR)as select sporder.kol*sporder.rsrprice ,* from katmc,sporder
where ((SKLORDERREC== sporder.csklorder and mcnrec==sporder.cmc and SpOrderRec==sporder.nrec(noindex)));
.Create                 view v4 as select * from katmc
where ((MC==katmc.name));
.fields
  CommonFormHeader
  OrdName
  nOrder
  dOrder
  Osnov
  Sklad
  MOL
  Mol_Post
  'в '+RublSimv
  'в '+RublSimv
  NNomer
  MC
  ED
  Party
  Kol
  Price
  v3.SumGR//Summ
  NNomer
  MC
  ED
  countpart
  SumK
  summaGR//v3.SumGR:'sum'//SumPR
  v2.summak//Itogo
  Senderpost
  Sender
  RecipientPost
  Recipient
.endfields
.{
 ^

                      @@@@@@@@@ СКЛАДСКОЙ ОРДЕР №  ^
                            от ^

.if SKLORDER01
  Основание: ^
.if SKLORDER02
.else
.end
.else
.end
  Склад    : @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
  МОЛ      : @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
  Должность: @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

──────────────┬────────────────────────────┬─────────┬───────────┬──────────────────┬───────────────┬─────────────────
Номенклатурный│      Наименование МЦ       │ Единица │  Серия    │    Количество    │     Цена      │   Стоимость
    номер     │                            │измерения│           │                  │ @~@@@@@@@@@@@ │  @~@@@@@@@@@@@
──────────────┴────────────────────────────┴─────────┴───────────┴──────────────────┴───────────────┴─────────────────
.{
.begin
  If v4.getfirst katmc=tsok
	{
	  				mcnrec:=v4.katmc.nrec;
			if v3.getfirst sporder=tsOk
			  {
			  if (mcnrec=mcnrec2)
			  {
		  		summaGR:=summaGR+v3.SumGR;
			  }
			  else
			  {
				summaGR:=v3.SumGR;
			  }
				LogStrToFile ('reportlog.txt', 'Количество='+v3.sporder.kol+' цена='+v3.sporder.rsrprice+
				  ' сумма='+v3.SumGR+'mcnrec= '+mcnrec+' mcnrec2='+mcnrec2);
				  			  mcnrec2:=mcnrec;
			  }
	}
end.
.{

&&&&&&&&&&&&&& @@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@ @@@@@@@@@@@ &'&&&&&&&&&&&&&&&& &&&&&&&&&&&&&&& &'&&&&&&&&&&&&&&&
.}

 Итого по                                             Количество
 матценности :                                            серий:
&&&&&&&&&&&&&& @@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@ &&&&&&&&&&  &'&&&&&&&&&&&&&&&&                 &&&&&&&&&&&&&&&&&
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
.}
.begin
if v2.getfirst SklOrder=0 {
   if v2.getfirst katsopr=0 {
      }
   }
end.
   Итого :                                                                                           &&&&&&&&&&&&&&&&&
.begin
  localSklOrder.GetFirst SklOrder where ((SklOrderRec == SklOrder.nRec));
  if (localSklOrder.SklOrder.vidOrder = 0) // приходный
  {
    sender := Mol;
    Senderpost := mol_post;
  }
  if (localSklOrder.SklOrder.vidOrder = 1) // расходный
  {
    recipient := Mol;
    RecipientPost := mol_post;
  }
end.

   Принял: @@@@@@@@@@@@@@@@@@@@@@@@@@@@               @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
                    должность              подпись           расшифровка подписи
   Сдал :  @@@@@@@@@@@@@@@@@@@@@@@@@@@@               @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
                    должность              подпись           расшифровка подписи


.}
.endform
BlazeBio
Местный житель
Сообщения: 386
Зарегистрирован: 27 апр 2010, 14:31
Контактная информация:

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

Сообщение BlazeBio »

Всё теперь работает. Сместил выбрку во внутренний цикл.

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

.{

.{
.begin
  If v4.getfirst katmc=tsok
	{
	  				mcnrec:=v4.katmc.nrec;
			if v3.getfirst sporder=tsOk
			  {
			  if (mcnrec=mcnrec2)
			  {
		  		summaGR:=summaGR+v3.SumGR;
			  }
			  else
			  {
				summaGR:=v3.SumGR;
			  }
				LogStrToFile ('reportlog.txt', 'Количество='+v3.sporder.kol+' цена='+v3.sporder.rsrprice+
				  ' сумма='+v3.SumGR+'mcnrec= '+mcnrec+' mcnrec2='+mcnrec2);
				  			  mcnrec2:=mcnrec;
			  }
	}
end.
&&&&&&&&&&&&&& @@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@ @@@@@@@@@@@ &'&&&&&&&&&&&&&&&& &&&&&&&&&&&&&&& &'&&&&&&&&&&&&&&&
.}

 Итого по                                             Количество
 матценности :                                            серий:
&&&&&&&&&&&&&& @@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@ &&&&&&&&&&  &'&&&&&&&&&&&&&&&&                 &&&&&&&&&&&&&&&&&
Только не пойму какая в отчёте должна быть группировка по партиям. Тут только идёт по рядом стоящим МЦ, причём в рабочей версии Галактики аналогичный отчёт также группируется(Ордер с группировкой МЦ по партиям это всё-таки стандартный ордер или нет?).
BlazeBio
Местный житель
Сообщения: 386
Зарегистрирован: 27 апр 2010, 14:31
Контактная информация:

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

Сообщение BlazeBio »

В группе "Cтандартный ордер" есть также какой-то "Акт по переоценке". Зачем он нужен?
Алексей
Местный житель
Сообщения: 2896
Зарегистрирован: 24 июн 2005, 12:12
Откуда: Иркутская область

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

Сообщение Алексей »

Ну видимо кому-то нужен. Мы 99.9% стандартных форм вообще не используем :)
Ответить