-- Шаблон создан мастером бланков
-- 20.07.2006 13:57:05
--
БланкСШаблоном "Акт сверки расчетов";

fЗаполКонтр:L;
fСвертка:L;

Учреждение:S;
ИНН:S;
ДолжнРук:S;
ФИОРук:S;
ДолжнРук_Кого:S;
ФИОРук_Кого:S;
ДолжнБух:S;
ФИОБух:S;

var К_ДолжнРук:S;
var К_ФИОРук:S;
var К_ДолжнБух:S;
var К_ФИОБух:S;

ПризнКонтр:S;
Контр:S;
var Контр_:S=Контр;
var К:S="";
Контр_ИНН:S;

ДН:D;
ДК:D;

УслСч:S;
var УслСч_:S=УслСч;
УслАнДоговор:S;
УслАн:S;

var СправДоговор:S="ДОГОВОР";
var wordsДоговор:I=4;
var crdДоговор:S="РПО_ДОГОВОР";
var fieldПризн:S="ПРИЗНАК";
var fieldНомДок:S="НОМЕРДОК";
var fieldДатДок:S="ДАТАДОК";
var fieldКонтр:S="КОНТР";

var МаскаСч:S="*.?.205.??.*|*.?.206.??.*|*.?.207.??.*|*.?.209.??.*|*.?.210.05.*|*.?.301.??.*|*.?.302.??.*|*.?.303.??.*|*.?.304.01.*";

--var ТекстАкт1:S=Учреждение+" в лице "+if(ДолжнРук_Кого="","____________________",ДолжнРук_Кого)+" "+if(ФИОРук_Кого="","____________________",ФИОРук_Кого)+", с одной стороны,";
--var ТекстАкт2:S="и "+Контр+" в лице ______________________________________________________________, с другой стороны, составили настоящий акт о состоянии взаимных расчетов:";

var ТекстАкт1:S=Учреждение+" в лице "+if(ДолжнРук_Кого="","_ _ _ _ _ _ _ _ _ _ _ _ _",ДолжнРук_Кого)+" "+if(ФИОРук_Кого="","_ _ _ _ _ _ _ _ _ _ _ _ _",ФИОРук_Кого)+", с одной стороны,";
var ТекстАкт2:S="и "+Контр+" в лице _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ , с другой стороны, составили настоящий акт о состоянии взаимных расчетов:";

НомДоговор:S;
ДатДоговор:D;

Упр:I;
var A:S="+";
var D:S="-";
var пп[]:i=$+1;
ОстДебН:N;
ОстКреН:N;
К_ОстДебН:N;
К_ОстКреН:N;
ДО[]:D;
Содерж[]:S;
СумДеб[]:N;
СумКре[]:N;
К_СумДеб[]:N;
К_СумКре[]:N;
ID[]:I;
var Ord[]:S;
var ОбДеб:N=SumOfArray(СумДеб,Упр);
var ОбКре:N=SumOfArray(СумКре,Упр);
var К_ОбДеб:N=SumOfArray(К_СумДеб,Упр);
var К_ОбКре:N=SumOfArray(К_СумКре,Упр);
var ОстДебК:N=Deb(ОстДебН-ОстКреН+ОбДеб-ОбКре);
var ОстКреК:N=Cre(ОстДебН-ОстКреН+ОбДеб-ОбКре);
var К_ОстДебК:N=Deb(К_ОстДебН-К_ОстКреН+К_ОбДеб-К_ОбКре);
var К_ОстКреК:N=Cre(К_ОстДебН-К_ОстКреН+К_ОбДеб-К_ОбКре);
var пп2:i=Упр+2;
var пп3:i=Упр+3;
--
--Процедуры и функции -------------   
Proc Очистить;
 ClearVariable(Упр);
 ClearVariable(ОстКреН);
 ClearVariable(К_ОстДебН);
 ClearVariable(К_ОстКреН);
 ClearVariable(ДО);
 ClearVariable(Содерж);
 ClearVariable(СумДеб);
 ClearVariable(СумКре);
 ClearVariable(К_СумДеб);
 ClearVariable(К_СумКре);
 ClearVariable(ID);
 ID[1]=-1;
end;

Proc ЗаполнитьРекв (Rec:Record);
var ИНН_,КПП_:S;
 if Rec=nil: Exit; fi;
 Учреждение=GetCardFieldS("Контрагент",Rec,"КорИмя");
 ИНН_=GetCardFieldS("Контрагент",Rec,"ИНН");
 КПП_=GetCardFieldS("Контрагент",Rec,"КПП");
 ИНН=if(ИНН_="" and КПП_="","","ИНН:"+ИНН_+" КПП:"+КПП_);
 ДолжнРук=GetCardFieldS("Контрагент",Rec,"ДолжнРук");
 ФИОРук=GetCardFieldS("Контрагент",Rec,"ФИОРук");
 ДолжнБух=GetCardFieldS("Контрагент",Rec,"ДолжнБух");
 ФИОБух=GetCardFieldS("Контрагент",Rec,"ФИОБух");
 --
 ДолжнРук_Кого=GetCardFieldS("Контрагент",Rec,"ДолжнРук");
 ФИОРук_Кого=GetCardFieldS("Контрагент",Rec,"ФИОРук");
 if not ДолжнРук_Кого="" or ФИОРук_Кого="":
    Message("Исправте склонение должности и ФИО, при необходимости",mtWarning);
    Template.Field="ДолжнРук_Кого";
 fi;
end;
--Процедуры и функции -------------                           
--
--
--Обработчики событий полей шаблона-----
Func Учреждение_OnEnter(FieldName: String; Iter: Integer): logical;
var Rec: Record;
 Rec=OpenCardFile("Контрагент","Наше",nil,crdRecordOnly);
 if Rec=nil: ^False; fi;
 ЗаполнитьРекв(Rec);
 Return False;
end;

Proc Учреждение_OnExit(FieldName: String; Iter: Integer);
 ИНН="";
end;

Func ФИО_onLookup(Sect: String; Row: Integer; Col: Integer; Cur: String): String;
var Rec: Record;
var v1,v2,Field:s;
 Template.HideEditor(False);
 Field=AsString(Template.Field);
 Rec=OpenCardFile("Сотрудники");
 if Rec=nil: ^Cur; fi;
 if Field="ДолжнРук_Кого" or Field="ФИОРук_Кого" or Field="ДолжнРук" or Field="ФИОРук":
    v1=GetCardFieldS("Сотрудники",rec,"ДОЛЖНОСТЬ.РПО_ДОЛЖ_КОГО");
    v2=GetCardFieldS("Сотрудники",rec,"ФКого")+" "+GetCardFieldS("Сотрудники",rec,"ИНИЦИАЛЫ");
    ДолжнРук_Кого=v1;
    ФИОРук_Кого=v2;
    v1=GetCardFieldS("Сотрудники",rec,"ДОЛЖНОСТЬ.ДОЛЖ");
    v2=GetCardFieldS("Сотрудники",rec,"ФАМИЛИЯ")+" "+GetCardFieldS("Сотрудники",rec,"ИНИЦИАЛЫ");
    ДолжнРук=v1;
    ФИОРук=v2;
   |Field="ДолжнБух" or Field="ФИОБух":
    v1=GetCardFieldS("Сотрудники",rec,"ДОЛЖНОСТЬ.ДОЛЖ");
    v2=GetCardFieldS("Сотрудники",rec,"ФАМИЛИЯ")+" "+GetCardFieldS("Сотрудники",rec,"ИНИЦИАЛЫ");
    ДолжнБух=v1;
    ФИОБух=v2;
 fi;
 Return Cur;
end;

Func Контр_OnEnter(FieldName: String; Iter: Integer): logical;
var Rec: Record;
var ИНН_,КПП_:S;
 if FieldName="Контр_":
    Rec=Раб.Поиск.ВыборИзКартотеки("Выбор контрагента","КОНТРАГЕНТ","ПРИЗНАК|ПОЛНИМЯ|КОРИМЯ|ИНН","Код|Полное имя|Краткое имя|ИНН","");
   else
    Rec=SignToRecord(ПризнКонтр);
 fi;
 if Rec=nil: ^False; fi;
 ПризнКонтр=CardFileRecSign("КОНТРАГЕНТ","ПРИЗНАК","К",Rec);
 Контр=GetCardFieldS("Контрагент",Rec,"КорИмя");
 ИНН_=GetCardFieldS("Контрагент",Rec,"ИНН");
 КПП_=GetCardFieldS("Контрагент",Rec,"КПП");
 Контр_ИНН=if(ИНН_="" and КПП_="","","ИНН:"+ИНН_+" КПП:"+КПП_);
 К_ДолжнРук=GetCardFieldS("Контрагент",Rec,"ДолжнРук");
 К_ФИОРук=GetCardFieldS("Контрагент",Rec,"ФИОРук");
 К_ДолжнБух=GetCardFieldS("Контрагент",Rec,"ДолжнБух");
 К_ФИОБух=GetCardFieldS("Контрагент",Rec,"ФИОБух");
 if Контр="": Контр=ПризнКонтр; fi;
 if FieldName="Контр_":
    УслАнДоговор="";
    НомДоговор="";
    ДатДоговор=1.1.100;
 fi;
 Очистить;
 Return False;
end;

Func ПризнКонтр_OnLookup(Sect: String; Row: Integer; Col: Integer; Cur: String): String;
var tmp:S;
var Rec: Record;
var ИНН_,КПП_:S;
 Template.HideEditor(False);
 tmp=AnaElection("К.*",False,False,ПризнКонтр);
 if tmp="": ^Cur; fi;
 ПризнКонтр=tmp;
 Rec=SignToRecord(tmp);
 if not Rec=nil and SignCardFile(tmp)="Контрагент":
    Контр=GetCardFieldS("Контрагент",Rec,"КорИмя");
    ИНН_=GetCardFieldS("Контрагент",Rec,"ИНН");
    КПП_=GetCardFieldS("Контрагент",Rec,"КПП");
    Контр_ИНН=if(ИНН_="" and КПП_="","","ИНН:"+ИНН_+" КПП: "+КПП_);
    К_ДолжнРук=GetCardFieldS("Контрагент",Rec,"ДолжнРук");
    К_ФИОРук=GetCardFieldS("Контрагент",Rec,"ФИОРук");
    К_ДолжнБух=GetCardFieldS("Контрагент",Rec,"ДолжнБух");
    К_ФИОБух=GetCardFieldS("Контрагент",Rec,"ФИОБух");
   else
    Контр=Name_A(tmp);
    Контр_ИНН="";
    К_ДолжнРук="";
    К_ФИОРук="";
    К_ДолжнБух="";
    К_ФИОБух="";
 fi;
 if Контр="": Контр=tmp; fi;
 УслАнДоговор="";
 НомДоговор="";
 ДатДоговор=1.1.100;
 Очистить;
 Return Cur;
end;

Proc Контр_OnExit(FieldName: String; Iter: Integer);
 ПризнКонтр="";
 Контр="";
 Контр_ИНН="";
end;

Proc Д_OnExit(FieldName: String; Iter: Integer);
 Очистить;
end;

Func Д_onLookup(Sect: String; Row: Integer; Col: Integer; Cur: String): String;
var Field:S;
var tmp:d;
 Template.HideEditor(False);
 Field=AsString(Template.Field);
 tmp=Calendar(GetVariableD(Field));
 if tmp=1.1.100: ^Cur; fi;
 PutVariableD(Field,tmp);
 Очистить;
 Return Cur;
end;

Func УслСч_OnEnter(FieldName: String; Iter: Integer): logical;
var tmp:S;
 tmp=Раб.КБК.Список(МаскаСч,"","СЧ6 ВД+? ИГ");
 if tmp="": ^False; fi;
 if Match(tmp,"?."): tmp="*."+tmp+"???.??.*";
   |Match(tmp,"?.???."): tmp="*."+tmp+"??.*";
   |True: tmp="*."+tmp+".*";
 fi;
 УслСч=Раб.Бюджет2005.Объединить(УслСч,tmp,"|");
 Return False;
end;

Proc УслСч_OnExit(FieldName: String; Iter: Integer);
 УслСч=Раб.Бюджет2005.УдалитьСловоИзНабора_Диалог(УслСч,"|");
 Очистить;
end;

Func УслАнДоговор_OnEnter(FieldName: String; Iter: Integer): logical;
var tmp:S;
var Rec: Record;
 tmp=AnaElection(СправДоговор+".*");
 if tmp="": ^False; fi;
 НомДоговор="";
 ДатДоговор=1.1.100;
 Rec=SignToRecord(tmp);
 if not Rec=nil:
    if SignCardFile(tmp)=crdДоговор:
       НомДоговор=GetCardFieldS(crdДоговор,Rec,fieldНомДок);
       ДатДоговор=GetCardFieldD(crdДоговор,Rec,fieldДатДок);
      else
       НомДоговор=GetCardFieldS("РПО_ДОГОВОР_ПРИЗНАК",Rec,"ДОГОВОР."+fieldНомДок);
       ДатДоговор=GetCardFieldD("РПО_ДОГОВОР_ПРИЗНАК",Rec,"ДОГОВОР."+fieldДатДок);
    fi;
 fi;
 УслАнДоговор=ExtractWords(1,wordsДоговор,tmp,".")+"!";
 Очистить;
 Return False;
end;

Proc УслАнДоговор_OnExit(FieldName: String; Iter: Integer);
 НомДоговор="";
 ДатДоговор=1.1.100;
 Очистить;
end;

Func УслАн_OnLookup(Sect: String; Row: Integer; Col: Integer; Cur: String): String;
var tmp:S;
 Cur=AnaElection("*");
 if Cur="": Template.HideEditor(False); ^Cur; fi;
 Cur=Раб.Бюджет2005.Объединить_Диалог(УслАн,Cur,"&=И;|=ИЛИ;&~=И ИСКЛЮЧИТЬ;_=ЗАМЕНИТЬ","_");
 if Раб.Бюджет2005.HideEditor: Template.HideEditor(False); УслАн=Cur; Очистить; fi;
 Return Cur;
end;

Func УслАн_OnVerify(FieldName: String; Iter: Integer; Value: String): Logical;
var Res:N;
 Try
  Res=Saldo("{"+Value+"}",1.1.100);
 Except
  Raise;
  ^False;
 end;
 Return True;
end;

Proc УслАн_OnExit(FieldName: String; Iter: Integer);
 Очистить;
end;

Func НомДоговор_OnLookup(Sect: String; Row: Integer; Col: Integer; Cur: String): String;
var Rec: Record;
 Template.HideEditor(False);
 if ПризнКонтр="":
    Rec=Раб.Поиск.ВыборИзКартотеки("Поиск контракта (договора)",crdДоговор,fieldНомДок,"Номер контракта (договора)","not НеДейств");
   else
    Rec=SignToRecord(ПризнКонтр);
    if Rec=nil: Message("Выбор из картотеки договоров для данного контрагента невозможен (признак контрагента должен быть картотечным)",mtError); Template.Field="Контр_"; ^Cur; fi;
    Rec=Раб.Поиск.ВыборИзКартотеки("Поиск контракта (договора)",crdДоговор,fieldНомДок,"Номер контракта (договора)","not НеДейств and "+fieldКонтр+"="+RecordToString(Rec));
 fi;
 if not Rec=nil:
    НомДоговор=GetCardFieldS(crdДоговор,Rec,fieldНомДок);
    ДатДоговор=GetCardFieldD(crdДоговор,Rec,fieldДатДок);
    УслАнДоговор=СправДоговор+"."+GetCardFieldS(crdДоговор,Rec,fieldПризн);
    УслАнДоговор=ExtractWords(1,wordsДоговор,УслАнДоговор,".")+"!";
    if ПризнКонтр="":
       ПризнКонтр=GetCardFieldS(crdДоговор,Rec,"КОНТР_ПРИЗН");
       Контр_OnEnter("НомДоговор",1);
    fi;
 fi;
 Return Cur;
end;

Func A_OnEnter(FieldName: String; Iter: Integer): logical;
 InsertFrame(Упр,Iter+1);
 ID[Iter]=-1;
 Return False;
end;

Func D_OnEnter(FieldName: String; Iter: Integer): logical;
 DeleteFrame(Упр,Iter);
 if Упр<1: InsertFrame(Упр,1); ID[1]=-1; fi;
 Return False;
end;

Func Ост_onLookup(Sect: String; Row: Integer; Col: Integer; Cur: String): String;
var УслАн_:S;
 Template.HideEditor(False);
 if ПризнКонтр="": Message("Выберите контрагента",mtError); Template.Field="Контр_"; ^Cur; fi;
 if ДК=1.1.100: Message("Введите дату",mtError); Template.Field="ДК"; ^Cur; fi;
 if ДН>ДК: Message("Начальная дата превышает конечную",mtError); Template.Field="ДН"; ^Cur; fi;
 if УслСч="": Message("Введите условие на счета",mtError); Template.Field="УслСч"; ^Cur; fi;
 if not УслАн="": УслАн_="("+УслАн+")&"+ПризнКонтр; else УслАн_=ПризнКонтр; fi;
 УслАн_=Раб.Бюджет2005.Объединить(УслАн_,УслАнДоговор,"&");
 Report('"'+PlanVar("Std_Rpo")+'\Общие\Отчеты\Служебные отчеты.lst"."000"',1.1.100,ДН,УслСч,УслАн_);
 Return Cur;
end;

Func Сум_onLookup(Sect: String; Row: Integer; Col: Integer; Cur: String): String;
var Iter:I;
 Template.HideEditor(False);
 Iter=AsInteger(Template.Frame);
 if ID[Iter]=-1: ^Cur; fi;
 TransOpenJur(ID[Iter]);
 Return Cur;
end;
--Обработчики событий полей шаблона-----
--
--
--Обработчики событий объектов шаблона-----
Proc btnРасчет_OnClick(Sender: String);
var t,z,t_:i;
var УслАн_,СчДеб,СчКре,Crd,Crd_,tmp:s;
var Сум,СумД,СумК:N;
var Rec,Rec_: Record;
 if ПризнКонтр="": Message("Выберите контрагента",mtError); Template.Field="Контр_"; Exit; fi;
 if ДК=1.1.100: Message("Введите дату",mtError); Template.Field="ДК"; Exit; fi;
 if ДН>ДК: Message("Начальная дата превышает конечную",mtError); Template.Field="ДН"; Exit; fi;
 if УслСч="": Message("Введите условие на счета",mtError); Template.Field="УслСч"; Exit; fi;
 if fСвертка: Раб.ИмяПолеКарт.Инициализация; fi;
 Refresh;
 Очистить;
 if not УслАн="": УслАн_="("+УслАн+")&"+ПризнКонтр; else УслАн_=ПризнКонтр; fi;
 УслАн_=Раб.Бюджет2005.Объединить(УслАн_,УслАнДоговор,"&");
 Сум=Saldo(УслСч+"{"+УслАн_+"}",ДН);
 ОстДебН=Deb(Сум); if fЗаполКонтр: К_ОстКреН=ОстДебН; fi;
 ОстКреН=Cre(Сум); if fЗаполКонтр: К_ОстДебН=ОстКреН; fi;
 ShowProgress(ДК-ДН,"Расчет....");
 Try
  Crd_="#";
  for Transaction t=УслСч+"{"+УслАн_+"}",ДН,ДК do
   ProgressPos((ДК-ДН)-(ДК-TransDate(t)));
   СчДеб=TransDeb(t);
   СчКре=TransCre(t);
   if not (Раб.Бюджет2005.MatchMask(СчДеб,УслСч) and Раб.Бюджет2005.MatchMask(СчКре,УслСч)):
      if fСвертка:
         Crd=TransCardFile(t);
         Rec=TransRecord(t);
         if Rec=nil or Crd="" or Crd="Table_OPER" or not Crd_=Crd or not Rec_=Rec:
            if not Crd_="#" and (not Round(СумД,2)=0 or not Round(СумК,2)=0):
               InsertFrame(Упр,Упр+1);
               ДО[Упр]=TransDate(t_);
               if Rec_=nil or Crd_="" or Crd_="Table_OPER":
                  Содерж[Упр]=TransComment(t_);
                 else
                  tmp=Раб.ИмяПолеКарт.ЗначПоляС(Crd_,"Док",Rec_);
                  if tmp="" or tmp=Crd_: tmp=Раб.ИмяПолеКарт.ИмяДокумента(Crd_); fi;
                  Содерж[Упр]=tmp+" №"+Раб.ИмяПолеКарт.ЗначПоляС(Crd_,"Номер",Rec_)+" от "+DateToString(Раб.ИмяПолеКарт.ЗначПоляД(Crd_,"Дата",Rec_))+" "+Раб.ИмяПолеКарт.ЗначПоляС(Crd_,"Коммент",Rec_);
               fi;
               СумДеб[Упр]=СумД;
               СумКре[Упр]=СумК;
               if fЗаполКонтр:
                  К_СумКре[Упр]=СумДеб[Упр];
                  К_СумДеб[Упр]=СумКре[Упр];
               fi;
               ID[Упр]=t_;
            fi;
            --
            t_=t;
            Crd_=Crd;
            Rec_=Rec;
            if Раб.Бюджет2005.MatchMask(СчДеб,УслСч): СумД=TransSum(t); СумК=0;
              |Раб.Бюджет2005.MatchMask(СчКре,УслСч): СумК=TransSum(t); СумД=0;
            fi;
           else
            if Раб.Бюджет2005.MatchMask(СчДеб,УслСч): СумД=СумД+TransSum(t);
              |Раб.Бюджет2005.MatchMask(СчКре,УслСч): СумК=СумК+TransSum(t);
            fi;
         fi;
        else
         InsertFrame(Упр,Упр+1);
         ДО[Упр]=TransDate(t);
         Содерж[Упр]=TransComment(t);
         if Раб.Бюджет2005.MatchMask(СчДеб,УслСч): СумДеб[Упр]=TransSum(t); if fЗаполКонтр: К_СумКре[Упр]=СумДеб[Упр]; fi;
           |Раб.Бюджет2005.MatchMask(СчКре,УслСч): СумКре[Упр]=TransSum(t); if fЗаполКонтр: К_СумДеб[Упр]=СумКре[Упр]; fi;
         fi;
         ID[Упр]=t;
      fi;
   fi;
  od;
  if fСвертка and not Crd_="#" and (not Round(СумД,2)=0 or not Round(СумК,2)=0):
     InsertFrame(Упр,Упр+1);
     ДО[Упр]=TransDate(t_);
     if Rec_=nil or Crd_="" or Crd_="Table_OPER":
        Содерж[Упр]=TransComment(t_);
       else
        tmp=Раб.ИмяПолеКарт.ЗначПоляС(Crd_,"Док",Rec_);
        if tmp="" or tmp=Crd_: tmp=Раб.ИмяПолеКарт.ИмяДокумента(Crd_); fi;
        Содерж[Упр]=tmp+" №"+Раб.ИмяПолеКарт.ЗначПоляС(Crd_,"Номер",Rec_)+" от "+DateToString(Раб.ИмяПолеКарт.ЗначПоляД(Crd_,"Дата",Rec_))+" "+Раб.ИмяПолеКарт.ЗначПоляС(Crd_,"Коммент",Rec_);
     fi;
     СумДеб[Упр]=СумД;
     СумКре[Упр]=СумК;
     if fЗаполКонтр:
        К_СумКре[Упр]=СумДеб[Упр];
        К_СумДеб[Упр]=СумКре[Упр];
     fi;
     ID[Упр]=t_;
  fi;
  --удаляем переброски
  ClearVariable(Ord);
  for z=1..Упр do
   Ord[z]=Раб.Формат.ДатаСтр(ДО[z],14)+"#"+Содерж[z];
  od;
  SortSection(Упр,"Ord");
  z=1;
  While z<=Упр do
   if  СумДеб[z]<0:
       if z>0:
          if ДО[z-1]=ДО[z] and Содерж[z-1]=Содерж[z] and -Round(СумДеб[z-1],2)=Round(СумДеб[z],2):
             DeleteFrame(Упр,z);
             DeleteFrame(Упр,z-1);
             z=z-1;
            |ДО[z+1]=ДО[z] and Содерж[z+1]=Содерж[z] and -Round(СумДеб[z+1],2)=Round(СумДеб[z],2):
             DeleteFrame(Упр,z+1);
             DeleteFrame(Упр,z);
            |True: z=z+1;
          fi;
         else
          if ДО[z+1]=ДО[z] and Содерж[z+1]=Содерж[z] and -Round(СумДеб[z+1],2)=Round(СумДеб[z],2):
             DeleteFrame(Упр,z+1);
             DeleteFrame(Упр,z);
            else
             z=z+1;
          fi;
       fi;
      |СумКре[z]<0:
       if z>0:
          if ДО[z-1]=ДО[z] and Содерж[z-1]=Содерж[z] and -Round(СумКре[z-1],2)=Round(СумКре[z],2):
             DeleteFrame(Упр,z);
             DeleteFrame(Упр,z-1);
             z=z-1;
            |ДО[z+1]=ДО[z] and Содерж[z+1]=Содерж[z] and -Round(СумКре[z+1],2)=Round(СумКре[z],2):
             DeleteFrame(Упр,z+1);
             DeleteFrame(Упр,z);
            |True: z=z+1;
          fi;
         else
          if ДО[z+1]=ДО[z] and Содерж[z+1]=Содерж[z] and -Round(СумКре[z+1],2)=Round(СумКре[z],2):
             DeleteFrame(Упр,z+1);
             DeleteFrame(Упр,z);
            else
             z=z+1;
          fi;
       fi;
      |True: z=z+1;
   fi;
  od;
 Finally
  CloseProgress;
 end;
 Message("Расчет завершен");
end;

Proc btnПечать_OnClick(Sender: String);
 Раб.Настр_Печать.Prn("","","РПО.КОНТРАГЕНТЫ.АКТСВЕРКИ.000.cfg","",1);
end;

Proc btnОчистить_OnClick(Sender: String);
 Очистить;
end;

Proc btnНастр_OnClick(Sender: String);
 УслСч="*.?.205.??.*|*.?.206.??.*|*.?.207.??.*|*.?.301.??.*|*.?.302.??.*|*.?.304.01.*|*.?.310.??.*";
 Очистить;
end;

Proc btnЗакрыть_OnClick(Sender: String);
 Close;
end;

Proc cbЗаполКонтр_OnChange(Sender: String);
var Iter:I;
 if fЗаполКонтр:
    К_ОстДебН=ОстКреН;
    К_ОстКреН=ОстДебН;
    for Iter=1..Упр do
     К_СумДеб[Iter]=СумКре[Iter];
     К_СумКре[Iter]=СумДеб[Iter];
    od;
   else
    ClearVariable(К_ОстДебН);
    ClearVariable(К_ОстКреН);
    ClearVariable(К_СумДеб);
    ClearVariable(К_СумКре);
 fi;
end;

Proc cbСвертка_OnChange(Sender: String);
 Очистить;
end;
--Обработчики событий объектов шаблона-----
--
--
--Обработчики событий шаблона -----
Proc OnOpen(Create: Logical);
 if Учреждение="":
    ЗаполнитьРекв(Раб.Бюджет2005.НашРекв);
 fi;
 if УслСч="": УслСч=МаскаСч; fi;
 if ДК=1.1.100: 
    ДК=ToDay; 
    if Day(ДК)=1 and Mon(ДК)=1: ДН=Dat(1,1,Year(ДК-1)); else ДН=Dat(1,1,Year(ДК)); fi;
 fi;
 Раб.Настр_Печать.Cfg("","РПО.КОНТРАГЕНТЫ.АКТСВЕРКИ.000.cfg");
end;
--Обработчики событий шаблона -----
--




Конец
