Группировка полей для расчета формулы
Добавлено: 29 апр 2017, 00:29
Всем доброго времени суток. Суть вопроса следующая. Пишу vip интерфейс.Пытаюсь произвести подсчет сумм по условию, но вместо одной строки получаю 4 то есть например в организации есть 4 услуги , первое что я делаю это отбираю услуги по первым трем символам кода( каждая услуга расчет верно) например
1 код "007001" сумма 20
2 код "007002" сумма 10
3 код "006001" сумма 5
4 код "006002" сумма 50
пытаюсь выбросить из временной таблицы в excel в таком виде
Организация | 30 | 55 |
в итоге у меня в Excel
организация 20
организация 10
организация 5
организация 50
вот то что я пишу в коде
procedure MakeTable;
{
startNewVisual(vtNumericVisual, vftimer + vfBreak + vfConfirm, 'Анализ данных...', 1);
_loop Sgoods
{
_loop spvidsobsl
{
if ( GetFirst katusl = tsOk )
_loop Sptarifpso
if(GetFirst tarifpso = tsOk )
{
if not ( month(tarifpso.datebeg) = wMes and year(tarifpso.datebeg) = wYear )
continue;
if ( GetFirst rstoUsl where (( sgoods.invnumb==rsto.invnom and katusl.kod == rstoUsl.kodusl )) <> tsOk )
{
ClearBuffer(#rstoUsl);
rstoUsl.kodusl := katusl.kod;
insert current rstoUsl;
}
if ( GetFirst rsto where (( katusl.kod == rsto.kodusl )) = tsOk )
{
if substr(KATUSL.KOD, 1, 3) = 'О07'
rsto.Sumto1:=rsto.Sumto1 + ((sgoods.wuse-Sptarifpso.maxfloor)*Sptarifpso.ost+SPTARIFPSO.BAZA)
if substr(KATUSL.KOD,1,3)='О06'
rsto.Sumto2:= rsto.Sumto2 + ((sgoods.wuse-Sptarifpso.maxfloor)*Sptarifpso.ost+SPTARIFPSO.BAZA)*12
update current rsto;
}
else
{
ClearBuffer(#rsto);
rsto.kodorg := katorg.code;
rsto.OrgName := KatOrg.Name;
rsto.kolost := sgoods.wuse;
rsto.invnom := sgoods.INVNUMB;
rsto.datetarif := Tarifpso.datebeg;
rsto.kodtarif := Tarifpso.kod;
rsto.kodusl := katusl.kod;
rsto.vidobsl:=vidsobsl.name;
if substr(KATUSL.KOD,1,3) = 'О07'
rsto.Sumto1:= ((sgoods.wuse-Sptarifpso.maxfloor)*Sptarifpso.ost+SPTARIFPSO.BAZA)
if substr(KATUSL.KOD,1,3)='О06'
rsto.Sumto2:= ((sgoods.wuse-Sptarifpso.maxfloor)*Sptarifpso.ost+SPTARIFPSO.BAZA)*12
insert current rsto;
}
if (not NextVisual)
break;
}
}
}
Stopvisual('', 0);
}
За ранее благодарю
предполагаю что сама уже зациклилась и не вижу
1 код "007001" сумма 20
2 код "007002" сумма 10
3 код "006001" сумма 5
4 код "006002" сумма 50
пытаюсь выбросить из временной таблицы в excel в таком виде
Организация | 30 | 55 |
в итоге у меня в Excel
организация 20
организация 10
организация 5
организация 50
вот то что я пишу в коде
procedure MakeTable;
{
startNewVisual(vtNumericVisual, vftimer + vfBreak + vfConfirm, 'Анализ данных...', 1);
_loop Sgoods
{
_loop spvidsobsl
{
if ( GetFirst katusl = tsOk )
_loop Sptarifpso
if(GetFirst tarifpso = tsOk )
{
if not ( month(tarifpso.datebeg) = wMes and year(tarifpso.datebeg) = wYear )
continue;
if ( GetFirst rstoUsl where (( sgoods.invnumb==rsto.invnom and katusl.kod == rstoUsl.kodusl )) <> tsOk )
{
ClearBuffer(#rstoUsl);
rstoUsl.kodusl := katusl.kod;
insert current rstoUsl;
}
if ( GetFirst rsto where (( katusl.kod == rsto.kodusl )) = tsOk )
{
if substr(KATUSL.KOD, 1, 3) = 'О07'
rsto.Sumto1:=rsto.Sumto1 + ((sgoods.wuse-Sptarifpso.maxfloor)*Sptarifpso.ost+SPTARIFPSO.BAZA)
if substr(KATUSL.KOD,1,3)='О06'
rsto.Sumto2:= rsto.Sumto2 + ((sgoods.wuse-Sptarifpso.maxfloor)*Sptarifpso.ost+SPTARIFPSO.BAZA)*12
update current rsto;
}
else
{
ClearBuffer(#rsto);
rsto.kodorg := katorg.code;
rsto.OrgName := KatOrg.Name;
rsto.kolost := sgoods.wuse;
rsto.invnom := sgoods.INVNUMB;
rsto.datetarif := Tarifpso.datebeg;
rsto.kodtarif := Tarifpso.kod;
rsto.kodusl := katusl.kod;
rsto.vidobsl:=vidsobsl.name;
if substr(KATUSL.KOD,1,3) = 'О07'
rsto.Sumto1:= ((sgoods.wuse-Sptarifpso.maxfloor)*Sptarifpso.ost+SPTARIFPSO.BAZA)
if substr(KATUSL.KOD,1,3)='О06'
rsto.Sumto2:= ((sgoods.wuse-Sptarifpso.maxfloor)*Sptarifpso.ost+SPTARIFPSO.BAZA)*12
insert current rsto;
}
if (not NextVisual)
break;
}
}
}
Stopvisual('', 0);
}
За ранее благодарю
предполагаю что сама уже зациклилась и не вижу