Капстрой, отчет "Выполнение плана капитального строит-в

Контур оперативного управления

Модератор: ZYG

Ответить
PViP
партнер
Сообщения: 71
Зарегистрирован: Пт, 19/10/2007 11:38
Имя Фамилия: Павел Полухин
Откуда: Галактика-Красноярск
Контактная информация:

Капстрой, отчет "Выполнение плана капитального строит-в

Сообщение PViP »

отчет который есть в системе нас не устраивает.
сделал свой вариант, но суммы не сходятся иногда.
Делаю такую вьюху:

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

.create view a1 as
select *
from katstroy, planvar, planvalue planvalue1, planvalue planvalue2, katvarpl
where ((
  PlanNrec == planvar.cplan and
!  '0001000000000047h' == plstroy.nrec and
  planvar.nrec == spplan.cplanvar(noindex) and
  word(2101) == spplan.wtable and
  word(0) == spplan.wkau and
  spplan.cobject == katstroy.nrec and
  word(1) == planvalue1.imode and
  spplan.nrec == planvalue1.crec and
  comp(0) == planvalue1.cperiod(noindex) and
  word(0) == planvalue1.iregister and
  word(1) == planvalue1.iprice and
  word(1) == planvalue2.imode and
  spplan.nrec == planvalue2.crec and
  comp(0) == planvalue2.cperiod(noindex) and
  word(1) == planvalue2.iregister and
  word(0) == planvalue2.iprice and
  planvar.cname == katvarpl.nrec
));
planvalue1 = плановые паказатели
planvalue2 = фактические показатели

правильно ли я разобрался с плановыми и фактическими показателями?
Как вообще строится этот отчет поясните?
Zankevich
топ-софт
Сообщения: 18
Зарегистрирован: Чт, 28/02/2008 12:15
Имя Фамилия: Евгений Занкевич
Откуда: ТопСофт

Сообщение Zankevich »

Добрый день, надо еще зацепиться по полю:
PlanValue.iArticle
PViP
партнер
Сообщения: 71
Зарегистрирован: Пт, 19/10/2007 11:38
Имя Фамилия: Павел Полухин
Откуда: Галактика-Красноярск
Контактная информация:

Сообщение PViP »

у себя в коде я пишу такой код

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

  if (a1.PlanValue1.iarticle <> ''){
    code := 'p'+string(a1.planvalue1.iarticle); //установка признака планового показателя
  } else {
    code := 'f'+string(a1.planvalue2.iarticle); //установка признака фактического показателя
  }
а потом разбираю в какую графу занести сумму

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

  case code of
    'p301': outputdata[Position].SmrPlan := outputdata[Position].SmrPlan + a1.Planvalue1.fvalue;
    'p302': outputdata[Position].OborPlan := outputdata[Position].OborPlan + a1.Planvalue1.fvalue;
    'p303': outputdata[Position].PIRPlan := outputdata[Position].PIRPlan + a1.Planvalue1.fvalue;
    'p399': outputdata[Position].OtherPlan := outputdata[Position].OtherPlan + a1.Planvalue1.fvalue;
    'f301': outputdata[Position].SmrFact := outputdata[Position].SmrFact + a1.Planvalue2.fvalue;
    'f302': outputdata[Position].OborFact := outputdata[Position].OborFact + a1.Planvalue2.fvalue;
    'f303': outputdata[Position].PIRFact := outputdata[Position].PIRFact + a1.Planvalue2.fvalue;
    'f399': outputdata[Position].OtherFact := outputdata[Position].OtherFact + a1.Planvalue2.fvalue;
  end;
  outputdata[Position].VsegoPlan := outputdata[Position].SmrPlan+outputdata[Position].OborPlan+outputdata[Position].PIRPlan+outputdata[Position].OtherPlan;
  outputdata[Position].VsegoFact := outputdata[Position].SmrFact+outputdata[Position].OborFact+outputdata[Position].PIRFact+outputdata[Position].OtherFact;
поэтому не цепляюсь по PlanValue.iArticle.
vadim
топ-софт
Сообщения: 197
Зарегистрирован: Чт, 06/09/2007 17:38
Имя Фамилия: Вадим Володько
Откуда: ТопСофт
Контактная информация:

Сообщение vadim »

Павел, с Вашего позволения я чуть "облагородил" Ваш код:

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

.create view a1 as
select 
  *
from 
  katstroy
, planvar
, planvalue planvalue1  // плановые паказатели
, planvalue planvalue2  // фактические показатели
, katvarpl

where 
((
     PlanNrec 	   == planvar.cplan

and  planvar.nrec   == spplan.cplanvar(noindex)
and  word(2101)     == spplan.wtable
and  word(0)        == spplan.wkau

and  spplan.cobject == katstroy.nrec

and  word(1)        == planvalue1.imode
and  spplan.nrec    == planvalue1.crec
and  comp(0) 	    == planvalue1.cperiod(noindex)
and  word(0)        == planvalue1.iregister
and  word(1)        == planvalue1.iprice

and  word(1)        == planvalue2.imode
and  spplan.nrec    == planvalue2.crec
and  comp(0)        == planvalue2.cperiod(noindex)
and  word(1)        == planvalue2.iregister
and  word(0)        == planvalue2.iprice

and  planvar.cname  == katvarpl.nrec
));
так меньше рябит в глазах и намного удобнее анализировать и Вам и сторонним людям - рекомендую!
Zankevich
топ-софт
Сообщения: 18
Зарегистрирован: Чт, 28/02/2008 12:15
Имя Фамилия: Евгений Занкевич
Откуда: ТопСофт

Сообщение Zankevich »

все же считаю вместо:

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

if (a1.PlanValue1.iarticle <> '')
  code := 'p'+string(a1.planvalue1.iarticle); //установка признака планового показателя 
else
  code := 'f'+string(a1.planvalue2.iarticle); //установка признака фактического показателя 
лучше использовать подцепку. Тогда planvalue1 и planvalue2 будут отобраны по этому признаку.

Больше ничего посоветовать не могу.
Ответить