Цитата: Надо тогда полный текст процедуры. Дьявол ведь - он в деталях.
Если полный текст - коммерческая тайна, тогда максимально точное описание того, что она делает.
Прикладываю скрипт процедуры...тайны особой, кроме интеллектуальной нет ))
[more=Процедура]
create or alter procedure NPC_DV (
PODSOSTAV_ID integer = -1,
IN_DOG_ID integer = -1,
RZ integer = -1,
SHOW_ARHIV integer = -1)
returns (
SCH_ID integer,
NP_SROK_OPLATY timestamp,
NP_DATA timestamp,
SROK_POSTAVKI integer,
SROK_POSTAVKI_DATA timestamp,
KLASSIF_GRUPPA_2 varchar(255),
KLASSIF_GRUPPA_1 varchar(255),
DATY_PRIHODOV timestamp,
DATA_OPL_LAST timestamp,
DATA_OPL_FIRST timestamp,
POSTAVSHIK_ID integer,
SCHET_DATA timestamp,
SCHET_N varchar(128),
OPLACHENO_RUB double precision,
OPLACHENO_SCH_RUB double precision,
SUMMA_RUB_S_NDS_DOLYA double precision,
SUMMA_RUB_S_NDS double precision,
OTV_LICO varchar(255),
SUMMA_SCH_RUB_S_NDS double precision,
ZAY_OSTATOK double precision,
ZAY_KOLVO double precision,
TEMATIKA integer,
N_DOG varchar(50),
TIP integer,
DOGOVOR_ID integer,
SLZ_N varchar(200),
NAZVANIE varchar(1000),
GRUPPA integer,
DV_FAKT_DATA_POST timestamp,
DV_NOTE varchar(200),
OPISANIE varchar(1000),
NAZVANIE_TXT varchar(500),
DV_GOTOVNOST integer,
KOD varchar(32),
NOTES varchar(1000),
KOLVO double precision,
ED_IZM integer,
VP_SOSTAV_ID integer,
ID integer,
DV_PEREDANO_NA_OPLATU integer,
POTREB_PERVICH_KOLVO double precision,
PERVICH_ED_IZM integer,
PRISHLO_KOLVO double precision,
NP_SROK_VYDACHI_VP timestamp,
SCHET_DATA_PODPIS timestamp,
SLZ_DATA timestamp,
KOLVO_SPISANO double precision,
OPLACHENO_PROCENTOV double precision,
AKCEPT timestamp,
KONSTRUKTOR_ID integer,
SUMMA_PO_POTREB double precision,
PODSOSTAV1_ID integer,
NE_OPLACHENO_RUB double precision,
ARHIV integer,
DOG_SPIS varchar(1000),
CENA double precision,
GRUPPA_KLASSIF varchar(64),
NN_SPISANIYA varchar(1000),
NN_PRIHODA varchar(1000))
as
declare variable PROD_DOLYA_PO_SUMME double precision;
declare variable SCH_PROD_KOLVO double precision;
declare variable SCH_PROD_CENA_V_VALUTE double precision;
declare variable SCH_SUM double precision;
declare variable SCH_PROD_ID integer;
declare variable PREV_SCH_ID integer = -1;
declare variable RESULT_ROWS_COUNT integer = 0;
begin
for
SELECT
nvp.ID,
nvp.VP_SOSTAV_ID,
nvp.ED_IZM,
nsp.kolvo, --nvp.KOLVO,
nvp.NOTES,
nvp.KOD,
nvp.NAZVANIE_TXT,
nvp.opisanie,
nvp.dv_gotovnost,
nvp.dv_note,
nvp.DV_FAKT_DATA_POST,
nvp.Gruppa,
nvp.DV_PEREDANO_NA_OPLATU,
nvp.POTREB_PERVICH_KOLVO,
nvp.KOLVO_SPISANO,
nvp.AKCEPT,
nvp.podsostav1_id,
nvp.SUMMA_PO_POTREB,
nvs.ed_izm,
nvs.NAZVANIE,
nv.SLZ_N,
nv.DOGOVOR_ID,
nv.tip,
nv.SLZ_DATA,
nv.KONSTRUKTOR_ID,
nd.N_DOG,
nd.tematika,
(select coalesce(sum(kolvo_real),0) from NPC_ZAYAVKI_PROD where VP_PODSOSTAV_ID=nvp.ID) zay_kolvo,
(nvp.KOLVO-(select coalesce(sum(kolvo_real),0) from NPC_ZAYAVKI_PROD where VP_PODSOSTAV_ID=nvp.ID)) zay_ostatok
,ns.OTV_LICO
,nsp.SUMMA_TEXT SUMMA_RUB_S_NDS
,ns.SCHET_N
,ns.SCHET_DATA
,ns.Postavshik_ID
,(select RESULT_SUMMA from NPC_SCHETA_OPL_NEOPL(NS.ID,1,2,null,NS.summa_v_valute_sch)) OPLACHENO_PROCENTOV
,(select min(Data_Opl) from NPC_Scheta_Oplata nso where nso.Schet_ID=nsp.Schet_ID ) DATA_OPL_FIRST --(select min(Data_Opl) from NPC_Scheta_prod nsp,NPC_Scheta_Oplata nso where nsp.VP_PODSOSTAV_ID=nvp.ID and nso.Schet_ID=nsp.Schet_ID ) DATA_OPL_FIRST
,(select case when max(Data_Opl)<>min(Data_Opl) then max(Data_Opl) end from NPC_Scheta_Oplata nso where nso.schet_ID=nsp.Schet_ID ) DATA_OPL_LAST --(select case when max(Data_Opl)<>min(Data_Opl) then max(Data_Opl) end from NPC_Scheta_prod nsp,NPC_Scheta_Oplata nso where nsp.VP_PODSOSTAV_ID=nvp.ID and nso.schet_ID=nsp.Schet_ID ) DATA_OPL_LAST
,
case when (select sum(KOLVO) from NPC_SKLAD_PRIHOD_PROD where schet_prod_id=nsp.id)>=nsp.kolvo then
(select cast(max(nsp1.DATA_SOSTAVLENIYA/*prihod_data*/)as date) from NPC_SKLAD_PRIHOD nsp1,NPC_SKLAD_PRIHOD_PROD nspp1
where nspp1.schet_prod_id=nsp.id and nsp1.id=nspp1.sklad_prihod_id) end daty_prihodov
,(select sum(KOLVO) from NPC_SKLAD_PRIHOD_PROD where schet_prod_id=nsp.id) PRISHLO_KOLVO
-- ,(select ELEMENT_NAME from NPC_KLASSIF_GET_ELEMENT_NAME(nvp.kod,1)) klassif_gruppa_1
-- ,(select ELEMENT_NAME from NPC_KLASSIF_GET_ELEMENT_NAME(nvp.kod,2)) klassif_gruppa_2
,(select gruppa_1_FIX from NPC_Klassifikator where kod_global_fix=nvp.kod) klassif_gruppa_1
,(select gruppa_2_FIX from NPC_Klassifikator where kod_global_fix=nvp.kod) klassif_gruppa_2
,nsp.SROK_POSTAVKI_DATA
,nsp.SROK_POSTAVKI
,case nv.tip
when 0 then (select coalesce(DATA_PLAN,DATA_DIREKTIVNAYA) from NPC_DOGOVORA_NP where Dogovor_ID=nd.ID and Action_ID=20)
when 1 then (select coalesce(DATA_PLAN,DATA_DIREKTIVNAYA) from NPC_DOGOVORA_NP where Dogovor_ID=nd.ID and Action_ID=21)
end NP_DATA
,(case nv.tip
when 0 then (select coalesce(DATA_PLAN,DATA_DIREKTIVNAYA) from NPC_DOGOVORA_NP where Dogovor_ID=nd.ID and Action_ID=20)
when 1 then (select coalesce(DATA_PLAN,DATA_DIREKTIVNAYA) from NPC_DOGOVORA_NP where Dogovor_ID=nd.ID and Action_ID=21)
end - nsp.Srok_postavki /*(select max(Srok_postavki) from NPC_Scheta_prod nsp where VP_PODSOSTAV_ID=nvp.ID)*/) NP_Srok_Oplaty
,case nv.tip
when 0 then (select coalesce(Data_Fakt,coalesce(DATA_PLAN,DATA_DIREKTIVNAYA)) from NPC_DOGOVORA_NP where Dogovor_ID=nd.ID and Action_ID=4)
when 1 then (select coalesce(Data_Fakt,coalesce(DATA_PLAN,DATA_DIREKTIVNAYA)) from NPC_DOGOVORA_NP where Dogovor_ID=nd.ID and Action_ID=10)
end np_srok_vydachi_vp
,ns.id SCH_ID
,ns.data_podpisaniya
,nsp.id
,nsp.cena_v_valute
,nsp.kolvo
,nd.arhiv
,
null--(select list(distinct (select N_Dog from NPC_DOGOVORA nd,npc_vp_podsostav nvp2 where nd.ID=nvp2.DOG_ID and nvp2.id=nssf.otkuda_spisano_podsost_id),', ') from npc_sklad_spisanie_fakt nssf where vp_podsostav_id=nvp.id)DOG_SPIS
,/*nsp.cena*/(select max((select SUMMA from SK_SCHETA_SUMMA(1,nsp2.cena,ns2.nds,0,0))) from npc_scheta ns2,npc_scheta_prod nsp2 where nsp2.vp_podsostav_id=nvp.podsostav_id_source and ns2.id=nsp2.schet_id)
,(select Gruppa_kl from NPC_KLASSIFIKATOR where kod_global_fix=nvp.KOD) Gruppa_KLASSIF
,(select list(distinct n_treb_nakl,', ') from npc_sklad_spisanie_fakt where kuda_spisano_podsost_id=nvp.id)NN_SPISANIYA
,(select list(distinct SPP_PRIHOD_ORDER_N,', ') from NPC_SKLAD_PRIHOD_PROD where schet_prod_id=nsp.id) NN_PRIHODA
--*/
FROM
NPC_VP_PODSOSTAV nvp left join NPC_VP_SOSTAV nvs on nvp.VP_SOSTAV_ID=nvs.ID
left join NPC_VP nv on nvs.VP_ID=nv.ID
left join NPC_DOGOVORA nd on nv.DOGOVOR_ID=nd.ID
left join NPC_Scheta_prod nsp on nsp.VP_PODSOSTAV_ID=nvp.ID
left join NPC_Scheta ns on ns.ID=nsp.Schet_ID
where
--ns.id=10713 and
((:SHOW_ARHIV=-1 and nd.Arhiv is null)or(:SHOW_ARHIV=1 and nd.Arhiv=1)or(:SHOW_ARHIV=2))
and coalesce(nvp.DV_ANNULIROVANO,0)=0 and coalesce(nd.ocenka,0)=0
and ((:RZ=-1 and nd.Tematika<>8)or(:RZ=1 and nd.Tematika=8)or(:RZ=2))
and ( (:PODSOSTAV_ID=-1)or((:PODSOSTAV_ID>-1)and(nvp.ID=:PODSOSTAV_ID)) )
and ( (:IN_DOG_ID=-1)or((:IN_DOG_ID>-1)and(nv.DOGOVOR_ID=:IN_DOG_ID)) )
order by
ns.id
into
ID,
VP_SOSTAV_ID,
ED_IZM,
KOLVO,
NOTES,
KOD,
NAZVANIE_TXT,
opisanie,
dv_gotovnost,
dv_note,
DV_FAKT_DATA_POST,
Gruppa,
DV_PEREDANO_NA_OPLATU,
POTREB_PERVICH_KOLVO,
KOLVO_SPISANO,
AKCEPT,
PODSOSTAV1_ID,
SUMMA_PO_POTREB,
PERVICH_ED_IZM,
NAZVANIE,
SLZ_N,
DOGOVOR_ID,
tip,
SLZ_DATA,
KONSTRUKTOR_ID,
N_DOG,
tematika,
zay_kolvo,
zay_ostatok
-- ,SUMMA_SCH_RUB_S_NDS
,OTV_LICO
,SUMMA_RUB_S_NDS
-- ,SUMMA_RUB_S_NDS_Dolya
-- ,OPLACHENO_SCH_RUB
-- ,OPLACHENO_RUB
,SCHET_N
,SCHET_DATA
,Postavshik_ID
,OPLACHENO_PROCENTOV
,DATA_OPL_FIRST
,DATA_OPL_LAST
,daty_prihodov
,PRISHLO_KOLVO
,klassif_gruppa_1
,klassif_gruppa_2
,SROK_POSTAVKI_DATA
,SROK_POSTAVKI
,NP_DATA
,NP_Srok_Oplaty
,NP_SROK_VYDACHI_VP
,SCH_ID
,SCHET_DATA_PODPIS
,SCH_PROD_ID
,SCH_PROD_cena_v_valute
,SCH_PROD_kolvo
,ARHIV
,DOG_SPIS
,cena
,Gruppa_KLASSIF
,NN_SPISANIYA
,NN_PRIHODA
do
BEGIN
if (not(PODSOSTAV1_ID is null)) then
Begin
for select
nsz.OTV_LICO
,nspz.SUMMA_TEXT SUMMA_RUB_S_NDS
,nsz.SCHET_N
,nsz.SCHET_DATA
,nsz.Postavshik_ID
,(select RESULT_SUMMA from NPC_SCHETA_OPL_NEOPL(NSz.ID,1,2,null,NSz.summa_v_valute_sch)) OPLACHENO_PROCENTOV
,(select min(Data_Opl) from NPC_Scheta_Oplata nso where nso.Schet_ID=nspz.Schet_ID ) DATA_OPL_FIRST --(select min(Data_Opl) from NPC_Scheta_prod nsp,NPC_Scheta_Oplata nso where nsp.VP_PODSOSTAV_ID=nvp.ID and nso.Schet_ID=nsp.Schet_ID ) DATA_OPL_FIRST
,(select case when max(Data_Opl)<>min(Data_Opl) then max(Data_Opl) end from NPC_Scheta_Oplata nso where nso.schet_ID=nspz.Schet_ID ) DATA_OPL_LAST --(select case when max(Data_Opl)<>min(Data_Opl) then max(Data_Opl) end from NPC_Scheta_prod nsp,NPC_Scheta_Oplata nso where nsp.VP_PODSOSTAV_ID=nvp.ID and nso.schet_ID=nsp.Schet_ID ) DATA_OPL_LAST
,case when (select sum(KOLVO) from NPC_SKLAD_PRIHOD_PROD where schet_prod_id=nspz.id)>=nspz.kolvo then
(select max(nsp1.prihod_data) from NPC_SKLAD_PRIHOD nsp1,NPC_SKLAD_PRIHOD_PROD nspp1
where nspp1.schet_prod_id=nspz.id and nsp1.id=nspp1.sklad_prihod_id) end daty_prihodov
,(select sum(KOLVO) from NPC_SKLAD_PRIHOD_PROD where schet_prod_id=nspz.id) PRISHLO_KOLVO
-- ,(select ELEMENT_NAME from NPC_KLASSIF_GET_ELEMENT_NAME(nvp.kod,1)) klassif_gruppa_1
-- ,(select ELEMENT_NAME from NPC_KLASSIF_GET_ELEMENT_NAME(nvp.kod,2)) klassif_gruppa_2
--,(select gruppa_1_FIX from NPC_Klassifikator where kod_global_fix=nvp.kod) klassif_gruppa_1
--,(select gruppa_2_FIX from NPC_Klassifikator where kod_global_fix=nvp.kod) klassif_gruppa_2
,nspz.SROK_POSTAVKI_DATA
,nspz.SROK_POSTAVKI
,:NP_Srok_Oplaty+:SROK_POSTAVKI-nspz.Srok_postavki
--,(case nv.tip
-- when 0 then (select coalesce(DATA_PLAN,DATA_DIREKTIVNAYA) from NPC_DOGOVORA_NP where Dogovor_ID=nd.ID and Action_ID=20)
-- when 1 then (select coalesce(DATA_PLAN,DATA_DIREKTIVNAYA) from NPC_DOGOVORA_NP where Dogovor_ID=nd.ID and Action_ID=21)
--end - nsp.Srok_postavki /*(select max(Srok_postavki) from NPC_Scheta_prod nsp where VP_PODSOSTAV_ID=nvp.ID)*/) NP_Srok_Oplaty
,nsz.id SCH_ID
,nsz.data_podpisaniya
,nspz.id
,nspz.cena_v_valute
,nspz.kolvo
,(select list(distinct SPP_PRIHOD_ORDER_N,', ') from NPC_SKLAD_PRIHOD_PROD where schet_prod_id=nspz.id) NN_PRIHODA
from NPC_Scheta_prod nspz
left join NPC_Scheta nsz on nsz.ID=nspz.Schet_ID
where nspz.VP_PODSOSTAV_ID=:PODSOSTAV1_ID
--where если запись PODSOSTAV1_ID аннулирована, то она всё равно учитывается
into
OTV_LICO
,SUMMA_RUB_S_NDS
,SCHET_N
,SCHET_DATA
,Postavshik_ID
,OPLACHENO_PROCENTOV
,DATA_OPL_FIRST
,DATA_OPL_LAST
,daty_prihodov
,PRISHLO_KOLVO
--,klassif_gruppa_1
--,klassif_gruppa_2
,SROK_POSTAVKI_DATA
,SROK_POSTAVKI
,NP_Srok_Oplaty
,SCH_ID
,SCHET_DATA_PODPIS
,SCH_PROD_ID
,SCH_PROD_cena_v_valute
,SCH_PROD_kolvo
,NN_PRIHODA
do
BEGIN
select SUMMA_RUB_S_NDS from NPC_Scheta where ID=:Sch_ID into SUMMA_SCH_RUB_S_NDS;
select OPLACHENO_RUB from NPC_Scheta where ID=:Sch_ID into OPLACHENO_SCH_RUB;
summa_rub_s_nds_dolya=null;
OPLACHENO_RUB=null;
END
End
else
BEGIN
if (PREV_SCH_ID<>SCH_ID) then
begin
select SUMMA_RUB_S_NDS from NPC_Scheta where ID=:Sch_ID into SUMMA_SCH_RUB_S_NDS;
select OPLACHENO_RUB from NPC_Scheta where ID=:Sch_ID into OPLACHENO_SCH_RUB;
select coalesce(sum(kolvo*cena_v_valute),0) from npc_scheta_prod where schet_ID=:sch_id and annulirovano=0 into sch_sum;
PREV_SCH_ID=SCH_ID;
end
else
if (SCH_ID is null) then
BEGIN
SUMMA_SCH_RUB_S_NDS=null;
OPLACHENO_SCH_RUB=0;
sch_sum=0;
END
------------------- summa_rub_s_nds_dolya
if (sch_sum<>0) then
BEGIN
PROD_DOLYA_PO_SUMME=(SCH_PROD_kolvo*SCH_PROD_cena_v_valute)/sch_sum; -- доля от общей суммы счёта
summa_rub_s_nds_dolya=PROD_DOLYA_PO_SUMME*SUMMA_SCH_RUB_S_NDS;
END else summa_rub_s_nds_dolya=null;
--================= summa_rub_s_nds_dolya
--------------------- OPLACHENO_RUB
if (sch_sum>0) then OPLACHENO_RUB=PROD_DOLYA_PO_SUMME*OPLACHENO_SCH_RUB;
else OPLACHENO_RUB=null;
--===================
END
--=================================
NE_OPLACHENO_RUB=SUMMA_RUB_S_NDS_DOLYA-coalesce(OPLACHENO_RUB,0);
--if (RESULT_ROWS_COUNT>41860) then
suspend;
--RESULT_ROWS_COUNT=RESULT_ROWS_COUNT+1;
END
[/more]
Проблема очевидно кроется во втором подзапросе. Без него все выполняется в считанные минуты.
[more=Подзапрос]
for select
nsz.OTV_LICO
,nspz.SUMMA_TEXT SUMMA_RUB_S_NDS
,nsz.SCHET_N
,nsz.SCHET_DATA
,nsz.Postavshik_ID
,(select RESULT_SUMMA from NPC_SCHETA_OPL_NEOPL(NSz.ID,1,2,null,NSz.summa_v_valute_sch)) OPLACHENO_PROCENTOV
,(select min(Data_Opl) from NPC_Scheta_Oplata nso where nso.Schet_ID=nspz.Schet_ID ) DATA_OPL_FIRST --(select min(Data_Opl) from NPC_Scheta_prod nsp,NPC_Scheta_Oplata nso where nsp.VP_PODSOSTAV_ID=nvp.ID and nso.Schet_ID=nsp.Schet_ID ) DATA_OPL_FIRST
,(select case when max(Data_Opl)<>min(Data_Opl) then max(Data_Opl) end from NPC_Scheta_Oplata nso where nso.schet_ID=nspz.Schet_ID ) DATA_OPL_LAST --(select case when max(Data_Opl)<>min(Data_Opl) then max(Data_Opl) end from NPC_Scheta_prod nsp,NPC_Scheta_Oplata nso where nsp.VP_PODSOSTAV_ID=nvp.ID and nso.schet_ID=nsp.Schet_ID ) DATA_OPL_LAST
,case when (select sum(KOLVO) from NPC_SKLAD_PRIHOD_PROD where schet_prod_id=nspz.id)>=nspz.kolvo then
(select max(nsp1.prihod_data) from NPC_SKLAD_PRIHOD nsp1,NPC_SKLAD_PRIHOD_PROD nspp1
where nspp1.schet_prod_id=nspz.id and nsp1.id=nspp1.sklad_prihod_id) end daty_prihodov
,(select sum(KOLVO) from NPC_SKLAD_PRIHOD_PROD where schet_prod_id=nspz.id) PRISHLO_KOLVO
-- ,(select ELEMENT_NAME from NPC_KLASSIF_GET_ELEMENT_NAME(nvp.kod,1)) klassif_gruppa_1
-- ,(select ELEMENT_NAME from NPC_KLASSIF_GET_ELEMENT_NAME(nvp.kod,2)) klassif_gruppa_2
--,(select gruppa_1_FIX from NPC_Klassifikator where kod_global_fix=nvp.kod) klassif_gruppa_1
--,(select gruppa_2_FIX from NPC_Klassifikator where kod_global_fix=nvp.kod) klassif_gruppa_2
,nspz.SROK_POSTAVKI_DATA
,nspz.SROK_POSTAVKI
,:NP_Srok_Oplaty+:SROK_POSTAVKI-nspz.Srok_postavki
--,(case nv.tip
-- when 0 then (select coalesce(DATA_PLAN,DATA_DIREKTIVNAYA) from NPC_DOGOVORA_NP where Dogovor_ID=nd.ID and Action_ID=20)
-- when 1 then (select coalesce(DATA_PLAN,DATA_DIREKTIVNAYA) from NPC_DOGOVORA_NP where Dogovor_ID=nd.ID and Action_ID=21)
--end - nsp.Srok_postavki $$IBEC$$*/ /*(select max(Srok_postavki) from NPC_Scheta_prod nsp where VP_PODSOSTAV_ID=nvp.ID)*/ /*$$IBEC$$ ) NP_Srok_Oplaty
,nsz.id SCH_ID
,nsz.data_podpisaniya
,nspz.id
,nspz.cena_v_valute
,nspz.kolvo
,(select list(distinct SPP_PRIHOD_ORDER_N,', ') from NPC_SKLAD_PRIHOD_PROD where schet_prod_id=nspz.id) NN_PRIHODA
from NPC_Scheta_prod nspz
left join NPC_Scheta nsz on nsz.ID=nspz.Schet_ID
where nspz.VP_PODSOSTAV_ID=:PODSOSTAV1_ID
--where если запись PODSOSTAV1_ID аннулирована, то она всё равно учитывается
into
OTV_LICO
,SUMMA_RUB_S_NDS
,SCHET_N
,SCHET_DATA
,Postavshik_ID
,OPLACHENO_PROCENTOV
,DATA_OPL_FIRST
,DATA_OPL_LAST
,daty_prihodov
,PRISHLO_KOLVO
--,klassif_gruppa_1
--,klassif_gruppa_2
,SROK_POSTAVKI_DATA
,SROK_POSTAVKI
,NP_Srok_Oplaty
,SCH_ID
,SCHET_DATA_PODPIS
,SCH_PROD_ID
,SCH_PROD_cena_v_valute
,SCH_PROD_kolvo
,NN_PRIHODA
do
BEGIN
select SUMMA_RUB_S_NDS from NPC_Scheta where ID=:Sch_ID into SUMMA_SCH_RUB_S_NDS;
select OPLACHENO_RUB from NPC_Scheta where ID=:Sch_ID into OPLACHENO_SCH_RUB;
summa_rub_s_nds_dolya=null;
OPLACHENO_RUB=null;
END
[/more]
Добавлено: Цитата: Правда, отличие есть: russko отвечает на вопросы и пытается разобраться в своей проблеме
Я бы может и забил на это...но кол-во записей, выводимых данной процедурой, растет ежедневно на 100-200 и следовательно времени на обработку тратиться все больше и больше. Скоро можно придти к ситуации, когда и ночи не хватит на выполнение и пополнение (