-- Шаблон создан мастером бланков
-- 08.12.2007 18:38:43
--
БланкСШаблоном "Контроль операций по 17, 18 забалансовому счету";

var ДН:D=[Dat( 1, 1,Year(ToDay))];
var ДК:D=[Dat(31,12,Year(ToDay))];

S1: Section;
btnРасчет: Object;

var Упр:I;
var пп[]:I=$;
var пп_:S="";
var Дат[]:S;
var Сум[]:N;
var Сум_[]:S;
var СчБанк[]:S;
var СчКорр[]:S;
var ПризнВД[]:S;
var ПризнКБК[]:S;
var Призн[]:S;
var Кмнт[]:S;
var Контроль[]:S;
var Пр[]:I;
var Опер[]:S;
var Статус[]:I;

var ЗабДат[]:S;
var ЗабСум[]:N;
var ЗабСум_[]:S;
var ЗабДеб[]:S;
var ЗабКре[]:S;
var ЗабПризнВД[]:S;
var ЗабПризнКБК[]:S;
var ЗабПризн[]:S;
var ЗабКмнт[]:S;
var ЗабПр[]:I;
var ЗабКонтроль[]:S;

var Key[]:S;
var KeyD[]:D;
--
--Процедуры и функции -------------
Proc Очистить;
 ClearVariable(Упр);
 ClearVariable(Дат);
 ClearVariable(Сум);
 ClearVariable(СчБанк);
 ClearVariable(СчКорр);
 ClearVariable(ПризнВД);
 ClearVariable(ПризнКБК);
 ClearVariable(Призн);
 ClearVariable(Кмнт);
 ClearVariable(Контроль);
 ClearVariable(Пр);
 ClearVariable(Опер);
 ClearVariable(Статус);
 ClearVariable(ЗабДат);
 ClearVariable(ЗабСум);
 ClearVariable(ЗабСум_);
 ClearVariable(ЗабДеб);
 ClearVariable(ЗабКре);
 ClearVariable(ЗабПризнВД);
 ClearVariable(ЗабПризнКБК);
 ClearVariable(ЗабПризн);
 ClearVariable(ЗабКмнт);
 ClearVariable(ЗабКонтроль);
 ClearVariable(ЗабПр);
 ClearVariable(Key);
 ClearVariable(KeyD);
end;

Func Проверить (Iter:I):L;
var Err,Wrn,признКОСГУ,ТипСчКорр,БКСчКорр,КОСГУСчКорр,признКР,признКД,признКИФД,признВД_,ВД:S;
var vСчБанк,vСчКорр,vВД,vКБК:S;
 Статус[Iter]=0;
 vСчБанк=СчБанк[Iter];
 vСчКорр=СчКорр[Iter];
 vВД=ПризнВД[Iter];
 vКБК=ПризнКБК[Iter];
 признКР=SubStr(Раб.Бюджет2005.ВзятьСловоИзНабораПоМаске(vКБК," ","ФКР.*",""),5,255);
 признКД=SubStr(Раб.Бюджет2005.ВзятьСловоИзНабораПоМаске(vКБК," ","КД.*",""),4,255);
 признКИФД=SubStr(Раб.Бюджет2005.ВзятьСловоИзНабораПоМаске(vКБК," ","КИФД.*",""),6,255);
 признКОСГУ=SubStr(Раб.Бюджет2005.ВзятьСловоИзНабораПоМаске(vКБК," ","КОСГУ.*",""),7,255);
 признВД_=SubStr(vВД,4,255);
 if признКР="" and признКД="" and признКИФД="": Err=Раб.Бюджет2005.Объединить(Err,"Отсутствует признак бюджетной классификации ФКР или КД или КИФД",Chr(13)); fi;
 if not признКР="" and not признКД="" and not признКИФД="": Err=Раб.Бюджет2005.Объединить(Err,"Введен одновременно признак ФКР и КД и КИФД",Chr(13)); fi;
 if признКОСГУ="": Err=Раб.Бюджет2005.Объединить(Err,"Отсутствует признак КОСГУ",Chr(13)); fi;
 if Err="":
    ТипСчКорр=Раб.Бюджет2005.ТипКБКСчета(vСчКорр);
    БКСчКорр=Раб.Бюджет2005.ВзятьКодСчета(vСчКорр,ТипСчКорр,"БК",False);
    КОСГУСчКорр=Раб.КБК.ВзятьКОСГУизАН(Раб.Бюджет2005.ВзятьКодСчета(vСчКорр,ТипСчКорр,"СЧ8",False),1);
    if not признКР="":
       if not Раб.Бюджет2005.MatchMask("КОСГУ."+признКОСГУ,Раб.Бюджет2005.МаскаРасхКОСГУ): Err=Раб.Бюджет2005.Объединить(Err,"Несоотвествие кода РАСХОДА коду КОСГУ ("+признКОСГУ+"). Допустимые КОСГУ ("+Раб.Бюджет2005.МаскаРасхКОСГУ+")",Chr(13)); fi;
       if ТипСчКорр="ФКР":
        if not БКСчКорр=признКР: Wrn=Раб.Бюджет2005.Объединить(Wrn,"Несоотвествие кода признака БК ("+признКР+") коду корреспондируюещего счета ("+БКСчКорр+")",Chr(13)); fi;
        if Раб.Бюджет2005.MatchMask("."+КОСГУСчКорр,Раб.Бюджет2005.МаскаРасхСч):
           if not КОСГУСчКорр=признКОСГУ: Wrn=Раб.Бюджет2005.Объединить(Wrn,"Несоотвествие кода признака КОСГУ ("+признКОСГУ+") КОСГУ корреспондируюещего счета ("+КОСГУСчКорр+")",Chr(13)); fi;
        fi;
       fi;
    fi;
    if not признКД="":
       if not Раб.Бюджет2005.MatchMask("КОСГУ."+признКОСГУ,Раб.Бюджет2005.МаскаДоходКОСГУ): Err=Раб.Бюджет2005.Объединить(Err,"Несоотвествие кода ДОХОДА коду КОСГУ ("+признКОСГУ+"). Допустимые КОСГУ ("+Раб.Бюджет2005.МаскаДоходКОСГУ+")",Chr(13)); fi;
       if ТипСчКорр="КД":
        if not БКСчКорр=признКД: Wrn=Раб.Бюджет2005.Объединить(Wrn,"Несоотвествие кода признака БК ("+признКД+") коду корреспондируюещего счета ("+БКСчКорр+")",Chr(13)); fi;
        if Раб.Бюджет2005.MatchMask("."+КОСГУСчКорр,Раб.Бюджет2005.МаскаДоходСч):
           if not КОСГУСчКорр=признКОСГУ: Wrn=Раб.Бюджет2005.Объединить(Wrn,"Несоотвествие кода признака КОСГУ ("+признКОСГУ+") КОСГУ корреспондируюещего счета ("+КОСГУСчКорр+")",Chr(13)); fi;
        fi;
       fi;
    fi;
    if not признКИФД="":
       if not Раб.Бюджет2005.MatchMask("КОСГУ."+признКОСГУ,Раб.Бюджет2005.МаскаДефицитКОСГУ): Err=Раб.Бюджет2005.Объединить(Err,"Несоотвествие кода ДЕФИЦИТА коду КОСГУ ("+признКОСГУ+"). Допустимые КОСГУ ("+Раб.Бюджет2005.МаскаДефицитКОСГУ+")",Chr(13)); fi;
       if ТипСчКорр="КД":
        if not БКСчКорр=признКИФД: Wrn=Раб.Бюджет2005.Объединить(Wrn,"Несоотвествие кода признака БК ("+признКИФД+") коду корреспондируюещего счета ("+БКСчКорр+")",Chr(13)); fi;
        --if not КОСГУСчКорр=признКОСГУ: Wrn=Раб.Бюджет2005.Объединить(Wrn,"Несоотвествие кода признака КОСГУ ("+признКОСГУ+") КОСГУ корреспондируюещего счета ("+КОСГУСчКорр+")",Chr(13)); fi;
       fi;
    fi;
    ВД=Раб.Бюджет2005.ВзятьКодСчета(vСчБанк,"","ВД",False);
    if ВД="1" and not (Match(ПризнВД_,"БД!") or Match(ПризнВД_,"1!")): Wrn="Несоотвие вида деятельности (1) по счету и аналитического признака вида деятельности "+vВД;
      |ВД="2" and not (Match(ПризнВД_,"ПД!") or Match(ПризнВД_,"ЦС!") or Match(ПризнВД_,"2!")): Wrn="Несоотвие вида деятельности (2) по счету и аналитического признака вида деятельности "+vВД;
      |ВД="3" and not (Match(ПризнВД_,"ВР!") or Match(ПризнВД_,"3!")): Wrn="Несоотвие вида деятельности (3) по счету и аналитического признака вида деятельности "+vВД;
    fi;
 fi;
 if not Err="": Контроль[Iter]="Ошибка !"+Chr(13)+Err; Статус[Iter]=-1; fi;
 if not Wrn="": Контроль[Iter]=Раб.Бюджет2005.Объединить(Контроль[Iter],"Предупреждение !"+Chr(13)+Wrn,Chr(13)); fi;
 ^Err="";
end;

Func ПроверитьЗаб (Iter:I):L;
var Err,Wrn,признКОСГУ,ТипСчКорр,БКСчКорр,КОСГУСчКорр,признКР,признКД,признКИФД,признВД_,ВД:S;
var vСчБанк,vСчКорр,vВД,vКБК:S;
 vСчБанк=ЗабДеб[Iter];
 vСчКорр=ЗабКре[Iter];
 vВД=ЗабПризнВД[Iter];
 vКБК=ЗабПризнКБК[Iter];
 признКР=SubStr(Раб.Бюджет2005.ВзятьСловоИзНабораПоМаске(vКБК," ","ФКР.*",""),5,255);
 признКД=SubStr(Раб.Бюджет2005.ВзятьСловоИзНабораПоМаске(vКБК," ","КД.*",""),4,255);
 признКИФД=SubStr(Раб.Бюджет2005.ВзятьСловоИзНабораПоМаске(vКБК," ","КИФД.*",""),6,255);
 признКОСГУ=SubStr(Раб.Бюджет2005.ВзятьСловоИзНабораПоМаске(vКБК," ","КОСГУ.*",""),7,255);
 признВД_=SubStr(vВД,4,255);
 if признКР="" and признКД="" and признКИФД="": Err=Раб.Бюджет2005.Объединить(Err,"Отсутствует признак бюджетной классификации ФКР или КД или КИФД",Chr(13)); fi;
 if not признКР="" and not признКД="" and not признКИФД="": Err=Раб.Бюджет2005.Объединить(Err,"Введен одновременно признак ФКР и КД и КИФД",Chr(13)); fi;
 if признКОСГУ="": Err=Раб.Бюджет2005.Объединить(Err,"Отсутствует признак КОСГУ",Chr(13)); fi;
 if Err="":
    if not признКР="":
       if not Раб.Бюджет2005.MatchMask("КОСГУ."+признКОСГУ,Раб.Бюджет2005.МаскаРасхКОСГУ): Err=Раб.Бюджет2005.Объединить(Err,"Несоотвествие кода РАСХОДА коду КОСГУ ("+признКОСГУ+"). Допустимые КОСГУ ("+Раб.Бюджет2005.МаскаРасхКОСГУ+")",Chr(13)); fi;
    fi;
    if not признКД="":
       if not Раб.Бюджет2005.MatchMask("КОСГУ."+признКОСГУ,Раб.Бюджет2005.МаскаДоходКОСГУ): Err=Раб.Бюджет2005.Объединить(Err,"Несоотвествие кода ДОХОДА коду КОСГУ ("+признКОСГУ+"). Допустимые КОСГУ ("+Раб.Бюджет2005.МаскаДоходКОСГУ+")",Chr(13)); fi;
    fi;
    if not признКИФД="":
       if not Раб.Бюджет2005.MatchMask("КОСГУ."+признКОСГУ,Раб.Бюджет2005.МаскаДефицитКОСГУ): Err=Раб.Бюджет2005.Объединить(Err,"Несоотвествие кода ДЕФИЦИТА коду КОСГУ ("+признКОСГУ+"). Допустимые КОСГУ ("+Раб.Бюджет2005.МаскаДефицитКОСГУ+")",Chr(13)); fi;
    fi;
    if ВД="1" and not Match(ПризнВД_,"БД!"): Wrn="Несоотвие вида деятельности (1) по счету и аналитического признака вида деятельности "+vВД;
      |ВД="2" and not (Match(ПризнВД_,"ПД!") or Match(ПризнВД_,"ЦС!")): Wrn="Несоотвие вида деятельности (2) по счету и аналитического признака вида деятельности "+vВД;
      |ВД="3" and not Match(ПризнВД_,"ВР!"): Wrn="Несоотвие вида деятельности (3) по счету и аналитического признака вида деятельности "+vВД;
    fi;
    if признВД_="": Wrn=Раб.Бюджет2005.Объединить(Wrn,"Отсутствует признак вида деятельности ВД.*",Chr(13)); fi;

 fi;
 if not Err="": ЗабКонтроль[Iter]="Ошибка !"+Chr(13)+Err; fi;
 if not Wrn="": ЗабКонтроль[Iter]=Раб.Бюджет2005.Объединить(ЗабКонтроль[Iter],"Предупреждение !"+Chr(13)+Wrn,Chr(13)); fi;
 ^Err="";
end;

Proc ПолучитьЗаб510 (Iter:I);
var ВД:S;
 ВД=Раб.Бюджет2005.ВзятьКодСчета(СчБанк[Iter],"","ВД",False);
 if Раб.Бюджет2005.ПроверитьНаборСлов(ПризнКБК[Iter]," ","ФКР.*","",""):
    if ВД="1" and (Match(СчКорр[Iter],"*.1.201.?3.610") or Match(СчКорр[Iter],"*.1.304.04.???")):
       ЗабСум[Iter]=Сум[Iter];
       ЗабДеб[Iter]="ЗАБ.17";
       ЗабКре[Iter]="ЗАБАЛАНС";
       if Статус[Iter]>=0: Статус[Iter]=1; else  Статус[Iter]=2; fi;
      else
       ЗабСум[Iter]=-Сум[Iter];
       ЗабДеб[Iter]="ЗАБ.18";
       ЗабКре[Iter]="ЗАБАЛАНС";
       Статус[Iter]=3;
    fi;
 fi;
 if Раб.Бюджет2005.ПроверитьНаборСлов(ПризнКБК[Iter]," ","КД.*","","") or Раб.Бюджет2005.ПроверитьНаборСлов(ПризнКБК[Iter]," ","КИФД.*","",""):
    ЗабСум[Iter]=Сум[Iter];
    ЗабДеб[Iter]="ЗАБ.17";
    ЗабКре[Iter]="ЗАБАЛАНС";
    if ЗабСум[Iter]>=0: Статус[Iter]=1; else  Статус[Iter]=2; fi;
 fi;
 ЗабСум_[Iter]=Format("%.2N",ЗабСум[Iter]);
end;

Proc ПолучитьЗаб610 (Iter:I);
 if Раб.Бюджет2005.ПроверитьНаборСлов(ПризнКБК[Iter]," ","ФКР.*","",""):
    ЗабСум[Iter]=Сум[Iter];
    ЗабДеб[Iter]="ЗАБ.18";
    ЗабКре[Iter]="ЗАБАЛАНС";
    Статус[Iter]=1;
 fi;
 if Раб.Бюджет2005.ПроверитьНаборСлов(ПризнКБК[Iter]," ","КД.*","","") or Раб.Бюджет2005.ПроверитьНаборСлов(ПризнКБК[Iter]," ","КИФД.*","",""):
    ЗабСум[Iter]=-Сум[Iter];
    ЗабДеб[Iter]="ЗАБ.17";
    ЗабКре[Iter]="ЗАБАЛАНС";
    Статус[Iter]=2;
 fi;
 ЗабСум_[Iter]=Format("%.2N",ЗабСум[Iter]);
end;

Func YMD (Val:S):S;
 ^SubStr(Val,7,4)+"."+SubStr(Val,4,2)+"."+SubStr(Val,1,2);
end;

Proc ЗаполнитьСтр (Iter:I; vОпер:S; vПр:i; vЗабОпер:S; vЗабПр:i; vЗабВД:S; vЗабКБК:S; vЗабПризн:S);
var Призн_,ВД_:S;
 if not vОпер="":
    if vОпер="???":
       Дат[Iter]="?";
       Сум[Iter]=0;
       Сум_[Iter]="?";
       СчБанк[Iter]="?";
       СчКорр[Iter]="?";
       ПризнВД[Iter]="?";
       ПризнКБК[Iter]="?";
       Призн[Iter]="?";
       Кмнт[Iter]="?";
       Пр[Iter]=-1;
      else
       Дат[Iter]=DateToString(TransDate(vПр));
       Сум[Iter]=TransSum(vПр);
       Сум_[Iter]=Format("%.2N",Сум[Iter]);
       СчБанк[Iter]=if(vОпер="510",TransDeb(vПр),TransCre(vПр));
       СчКорр[Iter]=if(vОпер="510",TransCre(vПр),TransDeb(vПр));
       Призн_=TransSigns(vПр);
       ПризнВД[Iter]=Раб.Бюджет2005.ВзятьСловоИзНабораПоМаске(Призн_," ","ВД.*","");
       if ПризнВД[Iter]="":
        ВД_=Раб.Бюджет2005.ВзятьКодСчета(СчБанк[Iter],"","ВД",False);
        if ВД_="1": ПризнВД[Iter]="ВД.1";
          |ВД_="2": ПризнВД[Iter]="ВД.2";
          |ВД_="3": ПризнВД[Iter]="ВД.3";
        fi;
       fi;
       ПризнКБК[Iter]=Trim(Раб.Бюджет2005.ВзятьСловаИзНабораПоМаске(Призн_," ","ФКР.*|КД.*|КИФД.*","|")+" "+Раб.Бюджет2005.ВзятьСловоИзНабораПоМаске(Призн_," ","КОСГУ.*",""));
       Призн[Iter]=Раб.Бюджет2005.УдалитьСловоИзНабораПоМаске(Призн_," ","ВД.*|ФКР.*|КД.*|КИФД.*|КОСГУ.*","|");
       Кмнт[Iter]=TransComment(vПр);
       Пр[Iter]=vПр;
       Опер[Iter]=vОпер;
    fi;
 fi;
 if not vЗабОпер="":
    if vЗабОпер="???":
       ЗабДат[Iter]="?";
       ЗабСум[Iter]=0;
       ЗабСум_[Iter]="?";
       ЗабДеб[Iter]="?";
       ЗабКре[Iter]="?";
       ЗабПризнВД[Iter]="?";
       ЗабПризнКБК[Iter]="?";
       ЗабПризн[Iter]="?";
       ЗабКмнт[Iter]="?";
       ЗабПр[Iter]=-1;
      else
       ЗабДат[Iter]=DateToString(TransDate(vЗабПр));
       ЗабСум[Iter]=TransSum(vЗабПр);
       ЗабСум_[Iter]=Format("%.2N",ЗабСум[Iter]);
       ЗабДеб[Iter]=TransDeb(vЗабПр);
       ЗабКре[Iter]=TransCre(vЗабПр);
       ЗабПризнВД[Iter]=vЗабВД;
       ЗабПризнКБК[Iter]=vЗабКБК;
       ЗабПризн[Iter]=vЗабПризн;
       ЗабКмнт[Iter]=TransComment(vЗабПр);
       ЗабПр[Iter]=vЗабПр;
    fi;
 fi;
end;

Proc Расчет;
var t,dd,z:i;
var tДата:D;
var tДеб,tПризн,ВД_,КБК_,Призн_,Key_:S;
var tСум:N;
 Очистить;
 dd=ДК-ДН;
 ShowProgress(dd*3,"Расчет....");
 Try
  for Transaction t="*.?.201.?1.510|*.?.201.?3.510|*.?.201.?7.510",ДН,ДК+1 do
   ProgressPos(dd-(ДК-tДата));
   InsertFrame(Упр,Упр+1);
   ЗаполнитьСтр(Упр,"510",t,"",-1,"","","");
   Проверить(Упр);
   if Статус[Упр]>=0: ПолучитьЗаб510(Упр); fi;
   Key[Упр]=YMD(Дат[Упр])+"#"+Str(ЗабСум[Упр],2)+"#"+ЗабДеб[Упр]+"#"+ПризнВД[Упр]+"#"+ПризнКБК[Упр]+"#"+Призн[Упр];
   ЗабПр[Упр]=-1;
   KeyD[Упр]=tДата;
  od;
  --
  for Transaction t="*.?.201.?1.610|*.?.201.?3.610|*.?.201.?7.610",ДН,ДК+1 do
   ProgressPos(dd+dd-(ДК-tДата));
   InsertFrame(Упр,Упр+1);
   ЗаполнитьСтр(Упр,"610",t,"",-1,"","","");
   Проверить(Упр);
   if Статус[Упр]>=0: ПолучитьЗаб610(Упр); fi;
   Key[Упр]=YMD(Дат[Упр])+"#"+Str(ЗабСум[Упр],2)+"#"+ЗабДеб[Упр]+"#"+ПризнВД[Упр]+"#"+ПризнКБК[Упр]+"#"+Призн[Упр];
   ЗабПр[Упр]=-1;
   KeyD[Упр]=tДата;
  od;
  ProgressPos(dd*2);
  --
  for Transaction t="ЗАБ.17!|ЗАБ.18!{~СЧ.201.34!}",ДН,ДК+1 do
   tДата=TransDate(t);
   tСум=TransSum(t);
   tДеб=TransDeb(t);
   tПризн=TransSigns(t);
   ProgressPos(dd+dd+dd-(ДК-tДата));
   ВД_=Раб.Бюджет2005.ВзятьСловоИзНабораПоМаске(tПризн," ","ВД.*","");
   КБК_=Trim(Раб.Бюджет2005.ВзятьСловаИзНабораПоМаске(tПризн," ","ФКР.*|КД.*|КИФД.*","|")+" "+Раб.Бюджет2005.ВзятьСловоИзНабораПоМаске(tПризн," ","КОСГУ.*",""));
   Призн_=Раб.Бюджет2005.УдалитьСловоИзНабораПоМаске(tПризн," ","ВД.*|ФКР.*|КД.*|КИФД.*|КОСГУ.*","|");
   Key_=YMD(DateToString(tДата))+"#"+Str(tСум,2)+"#"+tДеб+"#"+ВД_+"#"+КБК_+"#"+Призн_;
   z=SearchInArray(Key,Key_,False);
   if z=-1:
      z=InsertInArraySort(KeyD,tДата);
      InsertFrame(Упр,z);
      ЗаполнитьСтр(z,"???",-1,"ЗАБ",t,ВД_,КБК_,Призн_);
      ПроверитьЗаб(z);
      Контроль[z]="Не найдена проводка по балансовым счетам";
     else
      if Контроль[z]="":
         DeleteFrame(Упр,z);
         DeleteFromArray(KeyD,z);
        else
         ЗаполнитьСтр(z,"",-1,"ЗАБ",t,ВД_,КБК_,Призн_);
      fi;
   fi;
  od;
  --
  for z=1..Упр do
   if ЗабПр[z]=-1:
      ЗабДат[z]="?";
      ЗабСум[z]=0;
      ЗабСум_[z]="?";
      ЗабДеб[z]="?";
      ЗабКре[z]="?";
      ЗабПризнВД[z]="?";
      ЗабПризнКБК[z]="?";
      ЗабПризн[z]="?";
      ЗабКмнт[z]="?";
      ЗабКонтроль[z]="Не найдена проводка по забалансовым счетам";
   fi;
  od;
 Finally
  CloseProgress;
 end;
 if Упр=0: Message("Расхождений или ошибок не обнаружено"); else Message("Обнаружены расхождения или ошибки",mtWarning); fi;
end;
--Процедуры и функции -------------                       
--
--
--Обработчики событий полей шаблона-----
Func Д_OnLookup(Sect: String; Row: Integer; Col: Integer; Cur: String): String;
var tmp:D;
 Template.HideEditor(False);
 tmp=Calendar;
 if tmp=1.1.100: ^Cur; fi;
 PutVariableD(AsString(Template.Field),tmp);
 Return Cur;
end;

Func пп_OnLookup(Sect: String; Row: Integer; Col: Integer; Cur: String): String;
var t:i;
var Field:S;
 Template.HideEditor(False);
 Field=AsString(Template.Field);
 if Field="пп": t=Пр[AsInteger(Template.Frame)]; else t=ЗабПр[AsInteger(Template.Frame)]; fi;
 if t=-1: Message("Нет данных для расшифровки",mtWarning);
   |True: TransOpenJur(t);
 fi;
 Return Cur;
end;
--Обработчики событий полей шаблона-----
--
--Обработчики событий объектов шаблона-----
Proc btnРасчет_OnClick(Sender: String);
 if ДН=1.1.100: Message("Введите начальную дату",mtError); Template.Field="ДН"; Exit; fi;
 if ДК=1.1.100: Message("Введите конечную дату",mtError); Template.Field="ДК"; Exit; fi;
 if ДН>ДК: Message("Начальная дата превышает конечную",mtError); Template.Field="ДН"; Exit; fi;
 Refresh;
 Расчет;
end;

Proc btnЗакрыть_OnClick(Sender: String);
 Close;
end;
--Обработчики событий объектов шаблона-----
--
--
--Обработчики событий шаблона -----
--Обработчики событий шаблона -----
--
Конец
