БЛАНКСШАБЛОНОМ [14.06.2006] "Поступившее платежное поручение",РЕДАКТОР ПрихПлПоручения;

var НоваяЗапись:L=(CurrentState=crdusInserted);

var УпрНастр:L;
var НастрПоУмолч:S="Настройка по умолчанию";
var НастрЗакр:S="Закрыть настройку";

var defРекв:Record;
var defРекв_:S;
var defРеквБанк:Record;
var defРеквБанк_:S;
var МаскаСчДеб:S=["???.01.05.02.*.?.201.?1.510|???.01.05.02.*.?.201.?7.510|*.?.304.05.*|*.?.210.02.*|*.?.210.04.*"];
var extBtnUsrName:s;
var extBtnUsrOnClick:s;
var extКлюч:S;
var A0:S="+";
var D0:S="-";
var УпрБанкСч:I;
var УпрБанкСч_:I=if(УпрНастр,Max(УпрБанкСч,1),0);
var БанкСч[]:Record;
var БанкСч_[]:S;
var defСчДеб[]:S;
var defСчКре[]:S;
var defПризн[]:S;
var НастрGUID:S;

var КонтрИНН  :S=if(КонтрБанк.РПО_ИНН_БАНКА=False,РеквКонтр.ИНН,КонтрБанк.РПО_БАНК_ИНН);
var КонтрКПП  :S=if(КонтрБанк.РПО_ИНН_БАНКА=False,РеквКонтр.КПП,КонтрБанк.РПО_БАНК_КПП);
var КонтрИмя  :S=if(not КонтрБанк=nil,КонтрБанк.БанкИмя,РеквКонтр.КорИмя);
var КонтрБанк_:S=КонтрБанк.Банк+" "+КонтрБанк.Город;

var РеквИНН   :S=if(РеквБанк.РПО_ИНН_БАНКА=False,Рекв.ИНН,РеквБанк.РПО_БАНК_ИНН);
var РеквКПП   :S=if(РеквБанк.РПО_ИНН_БАНКА=False,Рекв.КПП,РеквБанк.РПО_БАНК_КПП);
var РеквИмя   :S=if(not РеквБанк=nil,РеквБанк.БанкИмя,Рекв.КорИмя);
var РеквБанк_ :S=РеквБанк.Банк+" "+РеквБанк.Город;

var ОчиститьРасшифр:S=if(РПО_Проводить,"","Очистить");

var ВД:S=if(РПО_ВД="1":"средства бюджета"
           |РПО_ВД="2":"средства от приносящей доход деятельности"
           |РПО_ВД="3":"средства, поступающие во временное распоряжение"
           |РПО_ВД="4":"субсидии на выболнение госзадания"
           |РПО_ВД="5":"субсидии на иные цели"
           |РПО_ВД="6":"бюджетные инвестиции"
           |РПО_ВД="7":"средства ОМС"
           |True:"");

var nРПО_Расшифр:I=РПО_Расшифр;

var ПризнОбщ:S="...";

var A:S=if(РПО_Проводить,"","+");
var AA:S=if(РПО_Проводить,"","++");
var D:S=if(РПО_Проводить,"","-");
var пп[]:I=$;
var Призн_[]:S=РПО_Расшифр[$].Призн;
var ВсегоСум:N=SumOfArray(РПО_Расшифр[].Сум,РПО_Расшифр);

var ИсклПризн:S="ЛС.*";

var SelfCrd:S="ПрихПлПоручения";

var BufField[]:S;
var BufColorBg[]:I;
var BufColorFo[]:I;
var FlagInit:L;

cbПроводить :Object;
btnДатаОпер :Object;
edДатаОпер  :Object;
btnЗакрыть  :Object;
btnНастр    :Object;
btnПоискПлат:Object;
btnUsr      :Object;
btnВозврат  :Object;
btnОБП      :Object;

S1 : Section;
S2 : Section;
S3 : Section;
S4 : Section;
S5 : Section;
S6 : Section;
S7 : Section;
S8 : Section;

var nS:I=8;

var hРПО_ДатаОпер:D;
hБК:S;
hЭКР:S;
hЭКД:S;
hЭКИФД:S;
hСчДеб:S;
hСчКре:S;
hПризн:S;

var Buf[]:S;
var Buf2[]:S;
--Процедуры и функции -------------
Proc Настр(aСохр:L);
var n:i;
var Flag:L;
 if НастрGUID="" or aСохр: НастрGUID=GetGUID; fi;
 if Раб.Настр.Начать("ДОКУМЕНТЫ.БАНК.ПОРУЧ_ВХ",0,0,"",НастрGUID):
    Раб.Настр.Добавить("defРекв","R");
    Раб.Настр.Добавить("defРекв_","S");
    Раб.Настр.Добавить("defРеквБанк","R");
    Раб.Настр.Добавить("defРеквБанк_","S");
    Раб.Настр.Добавить("МаскаСчДеб","S");
    Раб.Настр.Добавить("extBtnUsrName","S");
    Раб.Настр.Добавить("extBtnUsrOnClick","S");
    Раб.Настр.Добавить("extКлюч","S");
    Раб.Настр.Добавить("УпрБанкСч","I");
    for n=1..УпрБанкСч do
     Раб.Настр.Добавить("БанкСч["+str(n)+"]","R");
     Раб.Настр.Добавить("БанкСч_["+str(n)+"]","S");
     Раб.Настр.Добавить("defСчДеб["+str(n)+"]","S");
     Раб.Настр.Добавить("defСчКре["+str(n)+"]","S");
     Раб.Настр.Добавить("defПризн["+str(n)+"]","S");
    od;
    if aСохр: 
       Раб.Настр.Сохранить; 
      else 
       НастрGUID=Раб.Настр.Загрузить("","");
       if НастрGUID="":
          Flag=ExecuteFuncL("НастрПоУмолч_OnEnter","",1);
       fi;
    fi;
 fi;
end;

Proc Инициализация;
var Obj:Object;
var s,r,rr,c,cc,n,l,bgColor:i;
var Field:S;
 ClearVariable(BufField);
 ClearVariable(BufColorBg);
 ClearVariable(BufColorFo);
 for s=1..nS do
  if FindObject("S"+Str(s),Obj):
     rr=asInteger(Obj.RowsCount);
     cc=asInteger(Obj.ColsCount);
     for r=1 ..rr  do
      for c=1 ..cc  do
       BgColor=asInteger(Obj.Cell(r,c,CellBgColor,""));
       if BgColor=coAqua or BgColor=coTeal:
          Field=asString(Obj.Cell(r,c,CellContents,""));
          if SearchInArray(BufField,Field,True)=-1:
             n=InsertInArraySort(BufField,Field); 
             InsertInArray(BufColorBg,n,BgColor);
          fi;
       fi;
      od;
     od;
  fi;
 od;
 l=LengthOfArray(BufField);
 for n=1..l do
  if BufColorBg[n]=coTeal: BufColorFo[n]=coWhite;
    |True: BufColorFo[n]=coBlack;
  fi;
 od;
end;

Proc Оформление;
var s,c,r,cc,rr,n:i;
var Obj: Object;
 btnДатаОпер.Enabled=not РПО_Проводить;
 edДатаОпер.Enabled=not РПО_Проводить;
 btnПоискПлат.Enabled=not РПО_Проводить;
 btnUsr.Visible=not extBtnUsrOnClick="";
 btnUsr.Caption=extBtnUsrName;
 btnВозврат.Enabled=not РПО_Проводить;
 btnОБП.Enabled=not РПО_Проводить;
 for s=1..nS do
  if FindObject("S"+Str(s),Obj):
     rr=asInteger(Obj.RowsCount);
     cc=asInteger(Obj.ColsCount);
     for r=1 .. rr do
      for c=1 .. cc do
       n=SearchInArray(BufField,asString(Obj.Cell(r,c,CellContents,"")),True);
       if not n=-1:
          if РПО_Проводить:
             Obj.Cell(r,c,CellFontColor,coBlack); 
             Obj.Cell(r,c,CellBgColor,coTransparent); 
            else
             Obj.Cell(r,c,CellFontColor,BufColorFo[n]); 
             Obj.Cell(r,c,CellBgColor,BufColorBg[n]); 
          fi;
          Obj.Cell(r,c,CellReadOnly,РПО_Проводить);
       fi;
      od;
     od;
  fi;
 od;
end;

Proc ОткрНастр(Flag:L);
 cbПроводить.Visible=not Flag;
 btnДатаОпер.Visible=not Flag;
 edДатаОпер.Visible=not Flag;
 btnЗакрыть.Visible=not Flag;
 btnНастр.Visible=not Flag;
 btnПоискПлат.Visible=not Flag;
 btnUsr.Visible=not Flag and not extBtnUsrOnClick="";
 btnUsr.Caption=extBtnUsrName;
 btnВозврат.Visible=not Flag;
 УпрНастр=Flag;
end;

Proc УдалитьПустыеСтроки;
var Iter:I;
 Iter=1;
 While Iter<=РПО_Расшифр do
  if РПО_Расшифр[Iter].КБК="" and
     РПО_Расшифр[Iter].Призн="" and
     РПО_Расшифр[Iter].Сум=0 and
     РПО_Расшифр[Iter].Кмнт="": DeleteFrame(РПО_Расшифр,Iter);
    else
     Iter=Iter+1;
  fi;
 od;
end;

Proc НеПустаяТаблица;
 if РПО_Расшифр<1:
    InsertFrame(РПО_Расшифр,1);
 fi;
end;

Func ВыборЭК(aТип:S; hЭК:S):S;
var z:i;
var tmp,tmp2:s;
 ClearVariable(Buf);
 ClearVariable(Buf2);
 if aТип="10": tmp2=Раб.Бюджет2005.МаскаРасхКОСГУ;
   |aТип="20": tmp2=Раб.Бюджет2005.МаскаДоходКОСГУ;
   |aТип="31" or aТип="32": tmp2=Раб.Бюджет2005.МаскаДефицитКОСГУ;
 fi;
 for Sign tmp=tmp2,Sort do
  tmp=SubStr(tmp,7,3);
  z=SearchInArray(Buf,tmp,True);
  if z=-1:
     z=InsertInArraySort(Buf,tmp);
     InsertInArray(Buf2,z,tmp+" --"+Name_A("КОСГУ."+tmp));
  fi;
 od;
 z=Alternate("Выбор ЭК",Buf2,-1,SearchInArray(Buf,hЭК,True),12);
 if z=0: ^""; fi;
 if aТип="10": hЭКР=Buf[z];
   |aТип="20": hЭКД=Buf[z];
   |aТип="31" or aТип="32": hЭКИФД=Buf[z];
 fi;
 ^Buf[z];
end;

Proc ПолучитьДопАн(Iter:I);
var Справ,ПризнБК,ПризнКОСГУ,tmp:S;
 RefreshAna;
 Справ=Раб.Бюджет2005.СписокСправ(РПО_Расшифр[Iter].СчДеб+"|"+РПО_Расшифр[Iter].СчКре,0,"");
 if not РПО_Расшифр[Iter].КБК="" and not Name_S(РПО_Расшифр[Iter].СчДеб)=" " and not Name_S(РПО_Расшифр[Iter].СчКре)=" ":
    ПризнБК="";
    if РПО_Расшифр[Iter].ТипКБК="10":
       if not Раб.Бюджет2005.ВзятьСловоИзНабораПоМаске(Справ,"|","ФКР.*","")="":
          ПризнБК="ФКР.";
       fi;
      |РПО_Расшифр[Iter].ТипКБК="20":
       if not Раб.Бюджет2005.ВзятьСловоИзНабораПоМаске(Справ,"|","КД.*","")="":
          ПризнБК="КД.";
       fi;
      |РПО_Расшифр[Iter].ТипКБК="31" or РПО_Расшифр[Iter].ТипКБК="32":
       if not Раб.Бюджет2005.ВзятьСловоИзНабораПоМаске(Справ,"|","КИФД.*","")="":
          ПризнБК="КИФД.";
       fi;
    fi;
    if not ПризнБК="":
       ПризнБК=ПризнБК+Раб.Бюджет2005.ВзятьКодКБК(РПО_Расшифр[Iter].КБК,"","БК",False);
       РПО_Расшифр[Iter].Призн=Раб.Бюджет2005.ДобавитьСловоВНаборСЗаменой(РПО_Расшифр[Iter].Призн," ",ПризнБК,"ФКР.*|КД.*|КИФД.*","|");
    fi;
    if not Раб.Бюджет2005.ВзятьСловоИзНабораПоМаске(Справ,"|","КОСГУ.*","")="":
       ПризнКОСГУ="КОСГУ."+Раб.Бюджет2005.ВзятьКодКБК(РПО_Расшифр[Iter].КБК,"","КОСГУ",False);
       tmp=Раб.Бюджет2005.ВзятьСловоИзНабораПоМаске(РПО_Расшифр[Iter].Призн," ","КОСГУ.*","");
       if not Match(tmp,ПризнКОСГУ+"!"):
          РПО_Расшифр[Iter].Призн=Раб.Бюджет2005.ДобавитьСловоВНаборСЗаменой(РПО_Расшифр[Iter].Призн," ",ПризнКОСГУ,"КОСГУ.*","|");
       fi;
    fi;
 fi;
end;

Proc ОбновитьПризн(Iter:I);
var tmp:S;
var n1,n2:i;
 if Iter=-1: n1=1; n2=РПО_Расшифр; else n1=Iter; n2=Iter; fi;
 for Iter=n1..n2 do
  if not Name_S(РПО_Расшифр[Iter].СчДеб)=" " and not Name_S(РПО_Расшифр[Iter].СчКре)=" ":
     tmp=Раб.Бюджет2005.СписокСправ(РПО_Расшифр[Iter].СчДеб+"|"+РПО_Расшифр[Iter].СчКре,0,"");
     РПО_Расшифр[Iter].Призн=Раб.Бюджет2005.ПривестиВСоотвНаборСлов(РПО_Расшифр[Iter].Призн," ",tmp,"|");
     ПолучитьДопАн(Iter);
  fi;
 od;
end;

Func ВзятьКБК (aКБК:S; aТипКБК:S; aЗнач:S):S;
var tmp:S;
var Flag:L;
 if aКБК="" or aТипКБК="": ^""; fi;
 if aТипКБК="10":
    tmp=SubStr(aКБК,1,3)+"."+SubStr(aКБК,4,4)+"."+SubStr(aКБК,8,7)+"."+SubStr(aКБК,15,3)+"."+SubStr(aКБК,18,3);
    aТипКБК="КР";
   |aТипКБК="20":
    tmp=SubStr(aКБК,1,3)+"."+SubStr(aКБК,4,1)+"."+SubStr(aКБК,5,2)+"."+SubStr(aКБК,7,5)+"."+SubStr(aКБК,12,2)+"."+SubStr(aКБК,14,4)+"."+SubStr(aКБК,18,3);
    aТипКБК="КД";
   |aТипКБК="31" or aТипКБК="32":
    tmp=SubStr(aКБК,1,3)+"."+SubStr(aКБК,4,2)+"."+SubStr(aКБК,6,2)+"."+SubStr(aКБК,8,2)+"."+SubStr(aКБК,10,2)+"."+SubStr(aКБК,12,2)+"."+SubStr(aКБК,14,4)+"."+SubStr(aКБК,18,3);
    aТипКБК="КИФД";
   |True: ^"";
 fi;
 if aЗнач="БК+КОСГУ": aЗнач="КОСГУ"; Flag=True; else Flag=False; fi;
 ^Раб.Бюджет2005.ВзятьКодКБК(tmp,aТипКБК,aЗнач,Flag);
end;

Proc ОбновитьСч(Iter:I);
var n1,n2,z,Iter_:i;
var ВД,БК,КОСГУ,Гл:S;
var КодСчДеб:S;
 if РеквБанк=nil: Exit; fi;
 if РПО_ВД="": Exit; fi;
 Iter_=Iter;
 z=SearchInArray(БанкСч,РеквБанк);
 if not z=-1:
    КодСчДеб=defСчДеб[z];
    ВД=SubStr(defСчДеб[z],1,1);
    if not ВД=РПО_ВД: КодСчДеб=""; fi;
 fi;
 ГЛ=Рекв.РПО_ППП;
 if Iter<1: n1=1; n2=РПО_Расшифр; else n1=Iter; n2=Iter; fi;
 Раб.КСА.Начать;
 for Iter=n1..n2 do
  БК=Раб.Бюджет2005.ВзятьКодКБК(РПО_Расшифр[Iter].КБК,"","БК",False);
  КОСГУ=Раб.Бюджет2005.ВзятьКодКБК(РПО_Расшифр[Iter].КБК,"","КОСГУ",False);
  if РПО_ВД="1":
     if РПО_Расшифр[Iter].СчДеб="":
        if КодСчДеб="":
           if Валюта="" or Валюта=BaseCurrency:
              if РПО_Расшифр[Iter].ТипКБК="10":
                 РПО_Расшифр[Iter].СчДеб=Раб.Бюджет2005.ВзятьКодКБК(РПО_Расшифр[Iter].КБК,"КР","БК",False)+".1.304.05."+Раб.Бюджет2005.ВзятьКодКБК(РПО_Расшифр[Iter].КБК,"КР","КОСГУ",False);
              fi;
             else
              РПО_Расшифр[Iter].СчДеб=ГЛ+".01.05.02.01.01.0000.1.201.27.510";
           fi;
          else
           if Match(КодСчДеб,"?.201.??"):
              РПО_Расшифр[Iter].СчДеб=ГЛ+".01.05.02.01.01.0000."+КодСчДеб+".510";
             else
              if РПО_Расшифр[Iter].ТипКБК="10":
                 РПО_Расшифр[Iter].СчДеб=Раб.Бюджет2005.ВзятьКодКБК(РПО_Расшифр[Iter].КБК,"КР","БК",False)+"."+КодСчДеб+"."+Раб.Бюджет2005.ВзятьКодКБК(РПО_Расшифр[Iter].КБК,"КР","КОСГУ",False);
              fi;
           fi;
        fi;
       else--     if РПО_Расшифр[Iter].СчДеб="":
        if Валюта="" or Валюта=BaseCurrency:
           if Match(РПО_Расшифр[Iter].СчДеб,"*.?.201.?7.*"):
              РПО_Расшифр[Iter].СчДеб="";
           fi;
           if РПО_Расшифр[Iter].ТипКБК="10":
              РПО_Расшифр[Iter].СчДеб=Раб.Бюджет2005.ВзятьКодКБК(РПО_Расшифр[Iter].КБК,"КР","БК",False)+".1.304.05."+Раб.Бюджет2005.ВзятьКодКБК(РПО_Расшифр[Iter].КБК,"КР","КОСГУ",False);
           fi;
          else
           if not Match(РПО_Расшифр[Iter].СчДеб,"*.?.201.?7.*"):
              РПО_Расшифр[Iter].СчДеб=ГЛ+".01.05.02.01.01.0000.1.201.27.510";
           fi;
        fi;
     fi;
    |РПО_ВД="2":
     if РПО_Расшифр[Iter].СчДеб="":
        if КодСчДеб="":
           if Валюта="" or Валюта=BaseCurrency:
              РПО_Расшифр[Iter].СчДеб=ГЛ+".01.05.02.01.01.0000.2.201.11.510";
             else
              РПО_Расшифр[Iter].СчДеб=ГЛ+".01.05.02.01.01.0000.2.201.27.510";
           fi;
          else
           if Match(КодСчДеб,"?.201.??"):
              РПО_Расшифр[Iter].СчДеб=ГЛ+".01.05.02.01.01.0000."+КодСчДеб+".510";
           fi;
        fi;
       else
        if Валюта="" or Валюта=BaseCurrency:
           if Match(РПО_Расшифр[Iter].СчДеб,"*.?.201.?7.*"): РПО_Расшифр[Iter].СчДеб=ГЛ+".01.05.02.01.01.0000.2.201.11.510"; fi;
          else
           if Match(РПО_Расшифр[Iter].СчДеб,"*.?.201.?1.*"): РПО_Расшифр[Iter].СчДеб=ГЛ+".01.05.02.01.01.0000.2.201.27.510"; fi;
        fi;
     fi;
    |РПО_ВД="3": 
     if not ГЛ="":
        РПО_Расшифр[Iter].СчДеб=Гл+".01.05.02.01.01.0000.3.201.11.510";
        РПО_Расшифр[Iter].СчКре=Гл+".0000.0000000.000.3.304.01.730";
     fi;
  fi;
  Раб.КСА.Добавить(РПО_Расшифр[Iter].СчДеб);
  Раб.КСА.Добавить(РПО_Расшифр[Iter].СчКре);
 od;
 if Раб.КСА.Закончить(True):
    Message("Добавление счетов завершено");
 fi;
 ОбновитьПризн(Iter_);
end;

Proc БанкВБухСч;
var z:i;
 if not РеквБанк=nil:
    z=SearchInArray(БанкСч,РеквБанк);
    if not z=-1:
       if not defСчДеб[z]="":
          if not РПО_ВД=SubStr(defСчДеб[z],1,1):
             РПО_ВД=SubStr(defСчДеб[z],1,1);
             for z=1..РПО_Расшифр do
              РПО_Расшифр[z].КБК="";
              РПО_Расшифр[z].ТипКБК="";
              РПО_Расшифр[z].СчДеб="";
              РПО_Расшифр[z].СчКре="";
             od;
             ОбновитьСч(0);
          fi;
       fi;
    fi;
 fi;
end;

Func Проверить(Full:L):L;
var Iter:I;
 RefreshAna;
 if РПО_ДатаОпер=1.1.100: Message("Заполните дату выписки",mtError); Template.Object="edДатаОпер"; ^False; fi;
 if НомерБум="": Message("Заполните номер документа",mtError); Template.Field="НомерБум"; ^False; fi;
 if ДатаДок=1.1.100: Message("Заполните дату документа",mtError); Template.Field="ДатаДок"; ^False; fi;
 if Сумма=0: Message("Заполните сумму документа",mtError); Template.Field="Сумма"; ^False; fi;
 if РеквКонтр=nil: Message("Выберите плательщика (контрагента)",mtError); Template.Field="КонтрИмя"; ^False; fi;
 if КонтрБанк=nil: Message("Выберите банковский счет плательщика (контрагента)",mtError); Template.Field="КонтрБанк.РСчет"; ^False; fi;
 --if РПО_Призн_К="": Message("Выберите аналитический признак плательщика (контрагента)",mtError); Template.Field="РПО_Призн_К"; ^False; fi;
 if not РПО_Призн_К="" and Name_A(РПО_Призн_К)=" ": Message("Неизвестный аналитический признак '"+РПО_Призн_К+"'",mtError); Template.Field="РПО_Призн_К"; ^False; fi;
 if Рекв=nil: Message("Выберите получателя",mtError); Template.Field="РеквИмя"; ^False; fi;
 if РеквБанк=nil: Message("Выберите банковский счет получателя",mtError); Template.Field="РеквБанк.РСчет"; ^False; fi;
 if РПО_Призн_ЛС="": Message("Выберите аналитический признак банковского счета получателя",mtError); Template.Field="РПО_Призн_ЛС"; ^False; fi;
 if Name_A(РПО_Призн_ЛС)=" ": Message("Неизвестный аналитический признак '"+РПО_Призн_ЛС+"'",mtError); Template.Field="РПО_Призн_ЛС"; ^False; fi;
 if НазначПлат="": Message("Введите назначение платежа",mtError); Template.Field="НазначПлат"; ^False; fi;
 if РПО_ВД="": Message("Выберите наименование вида средств",mtError); Template.Field="ВД"; ^False; fi;
 УдалитьПустыеСтроки;
 if РПО_Расшифр=0: Message("Заполните расшифровку",mtError); Template.Field="КБК"; Template.Iter=1; ^False; fi;
 Раб.КСА.Начать;
 for Iter=1..РПО_Расшифр do
  Раб.КСА.Добавить(РПО_Расшифр[Iter].СчДеб);
  Раб.КСА.Добавить(РПО_Расшифр[Iter].СчКре);
 od;
 if Раб.КСА.Закончить(True): Message("Добавление счетов завершено"); fi;
 Раб.Бюджет.ПроверитьПризнакиНачать;
 for Iter=1..РПО_Расшифр do
  if not РПО_ВД="3" and РПО_Расшифр[Iter].КБК="": Message("Выберите КБК",mtError); Template.Field="КБК"; Template.Frame=Iter; ^False; fi;
  if РПО_Расшифр[Iter].СчДеб="": Message("Введите счета дебета",mtError); Template.Field="СчДеб"; Template.Frame=Iter; ^False; fi;
  if Name_S(РПО_Расшифр[Iter].СчДеб)=" ": Message("Неизвестный идентификатор счета "+РПО_Расшифр[Iter].СчДеб,mtError); Template.Field="СчДеб"; Template.Frame=Iter; ^False; fi;
  if РПО_Расшифр[Iter].СчКре="": Message("Введите счета дебета",mtError); Template.Field="СчКре"; Template.Frame=Iter; ^False; fi;
  if Name_S(РПО_Расшифр[Iter].СчКре)=" ": Message("Неизвестный идентификатор счета "+РПО_Расшифр[Iter].СчКре,mtError); Template.Field="СчКре"; Template.Frame=Iter; ^False; fi;
  if not Correspond(РПО_Расшифр[Iter].СчДеб,РПО_Расшифр[Iter].СчКре): Message("Счета не могут корреспондировать "+РПО_Расшифр[Iter].СчДеб+"/"+РПО_Расшифр[Iter].СчКре,mtError);  Template.Field="СчДеб"; Template.Frame=Iter; ^False; fi;
  if Раб.Бюджет.ПроверитьПризнакиОбязательные(РПО_Расшифр[Iter].СчДеб,РПО_Расшифр[Iter].СчКре,Trim(РПО_Расшифр[Iter].Призн+" "+РПО_Призн_К),ИсклПризн+if(Full,"|СВР.*",""))=False : Template.Field="Призн_"; Template.Frame=Iter; ^False; fi;
  if Раб.Бюджет.ПроверитьПризнакиСвязанные(РПО_Расшифр[Iter].СчДеб,РПО_Расшифр[Iter].СчКре,Trim(РПО_Расшифр[Iter].Призн+" "+РПО_Призн_К),ИсклПризн+if(Full,"|СВР.*",""))=False : Template.Field="Призн_"; Template.Frame=Iter; ^False; fi;
  if РПО_Расшифр[Iter].Сум=0: Message("Заполните сумму",mtError); Template.Field="Сум"; Template.Frame=Iter; ^False; fi;
 od;
 if not Round(Сумма,2)=Round(ВсегоСум,2): 
    if not Round(Сумма,2)=Round(ВсегоСум/2,2): Message("Сумма расшифровки не совпадает с суммой документа",mtError); Template.Field="ВсегоСум"; ^False; fi;
 fi;
 ^True;
end;

Func ЗаполнитьКлючДок:L;
var Flag:L;
 Flag=True;
 if FuncExists(extКлюч): 
    Flag=ExecuteFuncL(extКлюч);
    if not Flag and (РПО_Проводить):
       РПО_Проводить=Flag;
       cbПроводить.State=РПО_Проводить;
       Оформление;
    fi;
 fi;
 ^Flag;
end;
--Процедуры и функции -------------
--
--Обработчики событий полей шаблона-----
Func НастрПоУмолч_OnEnter(FieldName: String; Iter: Integer): logical;
 if FieldName="НастрПоУмолч":
    if EnqOkCancel("Восстановить значения по умолчанию ?",mtWarning)=cmCancel: ^False; fi;
 fi;
 defРекв=nil;
 defРекв_="";
 defРеквБанк=nil;
 defРеквБанк_="";
 МаскаСчДеб:="???.01.05.02.*.?.201.?1.510|???.01.05.02.*.?.201.?7.510|*.?.304.05.*|*.?.210.02.*";
 УпрБанкСч=0;
 ClearVariable(БанкСч);
 ClearVariable(БанкСч_);
 ClearVariable(defСчДеб);
 ClearVariable(defСчКре);
 ClearVariable(defПризн);
 if FieldName="НастрПоУмолч": Message("Значениея по умолчанию восстановлены"); fi;
 Return False;
end;

Proc defРекв_onExit (FieldName: String; Iter: Integer);
 defРекв=nil;
 defРекв_="";
 defРеквБанк=nil;
 defРеквБанк_="";
end;

Proc defРеквБанк_OnExit(FieldName: String; Iter: Integer);
 defРеквБанк=nil;
 defРеквБанк_="";
end;

Func МаскаСч_OnVerify(FieldName: String; Iter: Integer; Value: S): Logical;
var z:n;
 z=Saldo(Value,1.1.100);
 ^True;
end;

Func МаскаСч_OnLookup(Sect: String; Row: Integer; Col: Integer; Cur: String): String;
 Cur=Раб.КБК.Список("*.?.???.??.*","","СЧ9 ИГ");
 if Match(Cur,"?."): Cur=Cur+"???.??.*";
   |Match(Cur,"?.???."): Cur=Cur+"??.*";
   |Match(Cur,"?.???.??."): Cur=Cur+"*";
 fi;
 Cur="*."+Cur;
 if Cur="*.": Template.HideEditor(False); ^Cur; fi;
 Cur=Раб.Бюджет2005.Объединить_Диалог(GetVariableS(AsString(Template.Field)),Cur,"|=ИЛИ;&~=И ИСКЛЮЧИТЬ;_=ЗАМЕНИТЬ","_");
 if Раб.Бюджет2005.HideEditor: 
    Template.HideEditor(False);
    PutVariableS(AsString(Template.Field),Cur);
 fi;
 Return Cur;
end;

Func extBtnUsrOnClick_OnEnter(FieldName: String; Iter: Integer): logical;
 if extBtnUsrName="":
    Message("Задайте имя кнопки",mtError);
    Template.Field="extBtnUsrName";
    ^False;
 fi;
 Return True;
end;

Func extBtnUsrOnClick_OnVerify(FieldName: String; Iter: Integer; Value: String): Logical;
 if not Value="":
    if not ProcExists(Value): Message("Процедура '"+Value+"' не найдена",mtError); ^False; fi;
 fi;
 Return True;
end;

Func extFunc_OnVerify(FieldName: String; Iter: Integer; Value: String): Logical;
 if not Value="":
    if not FuncExists(Value): Message("Функция '"+Value+"' не найдена",mtError); ^False; fi;
 fi;
 Return True;
end;

Func A0_OnEnter(FieldName: String; Iter: Integer): logical;
 if УпрБанкСч=0: InsertFrame(УпрБанкСч,1); fi;
 InsertFrame(УпрБанкСч,Iter+1);
 Return False;
end;

Func D0_OnEnter(FieldName: String; Iter: Integer): logical;
 БанкСч[Iter]=nil;
 БанкСч_[Iter]="";
 defСчДеб[Iter]="";
 defПризн[Iter]="";
 DeleteFrame(УпрБанкСч,Iter);
 Return False;
end;

Func НастрЗакр_OnEnter(FieldName: String; Iter: Integer): logical;
 Iter=1;
 While Iter<=УпрБанкСч do
  if БанкСч[Iter]=nil: 
     D0_OnEnter(FieldName,Iter);
    else 
     Iter=Iter+1;
  fi;
 od;
 if УпрБанкСч=0: ClearVariable(БанкСч); ClearVariable(БанкСч_); ClearVariable(defСчДеб); ClearVariable(defПризн); fi;
 Настр(True);
 ОткрНастр(False);
 Return False;
end;

Func БанкСч_onEnter(FieldName: String; Iter: Integer): logical;
var Rec: Record;
var n:i;
 if defРекв=nil:
    Rec=OpenCardFile("Банк_Счета","Наш",БанкСч[Iter]);
   else
    Rec=OpenCardFile("Банк_Счета","Контрагент="+RecordToString(defРекв),БанкСч[Iter]);
 fi;
 if not Rec=nil:
    n=SearchInArray(БанкСч,Rec,False,1);
    if not n=-1 and Iter=n:
       n=SearchInArray(БанкСч,Rec,False,Iter+1);
    fi;
    if not n=-1: Message("Повторный ввод банковского счета получателя",mtError); Template.Field="БанкСч_"; Template.Frame=n; ^False; fi;
    if УпрБанкСч=0: InsertFrame(УпрБанкСч,1); fi;
    БанкСч[Iter]=Rec;
    БанкСч_[Iter]=GetCardFieldS("Банк_Счета",Rec,"Банк")+" "+GetCardFieldS("Банк_Счета",Rec,"Город")+" "+GetCardFieldS("Банк_Счета",Rec,"РСчет")+" ("+GetCardFieldS("Банк_Счета",Rec,"РПО_Коммент")+")";
 fi;
 Return False;
end;

Proc БанкСч_onExit(FieldName: String; Iter: Integer);
 БанкСч[Iter]=nil;
 БанкСч_[Iter]="";
end;

Func defСчДеб_OnEnter(FieldName: String; Iter: Integer): logical;
var tmp:S;
 if БанкСч[Iter]=nil: Message("Выберите банковский счет получателя",mtError); Template.Field="БанкСч_"; Template.Frame=Iter; ^False; fi;
 tmp=Раб.КБК.Список(МаскаСчДеб,"","СЧ6");
 if not tmp="":
    defСчДеб[Iter]=Раб.Бюджет2005.Объединить(defСчДеб[Iter],tmp,"|");
 fi;
 Return False;
end;

Func defСчКре_OnEnter(FieldName: String; Iter: Integer): logical;
var tmp:S;
 if БанкСч[Iter]=nil: Message("Выберите банковский счет получателя",mtError); Template.Field="БанкСч_"; Template.Frame=Iter; ^False; fi;
 tmp=Раб.КБК.Список("~("+МаскаСчДеб+")","","СЧ6");
 if not tmp="":
    defСчКре[Iter]=Раб.Бюджет2005.Объединить(defСчКре[Iter],tmp,"|");
 fi;
 Return False;
end;

Func defПризн_OnEnter(FieldName: String; Iter: Integer): logical;
var tmp:S;
 if defСчДеб[Iter]="": Message("Введите код счета",mtError); Template.Field="defСчДеб"; Template.Frame=Iter; ^False; fi;
 tmp=Раб.Бюджет2005.СписокСправ("*."+defСчДеб[Iter]+".*",0,ИсклПризн);
 if tmp="": Message("Аналитические признаки не требуются"); ^False; fi;
 tmp=AnaElection(tmp+"|*&~*.*");
 if not tmp="":
    defПризн[Iter]=Раб.Бюджет2005.ДобавитьСловоВНаборСЗаменой(defПризн[Iter]," ",tmp,SubStr(tmp,1,Pos(".",tmp))+"*","");
 fi;
 Return False;
end;

Func Дата_OnLookup(Sect: String; Row: Integer; Col: Integer; Cur: String): String;
var tmp:D;
 Template.HideEditor(False);
 tmp=Calendar;
 if not tmp=1.1.100:
    ДатаДок=tmp;
 fi;
 ^Cur;
end;

Proc Сумма_OnExit(FieldName: String; Iter: Integer);
 if not Сумма=0 and РПО_Расшифр=1:
    РПО_Расшифр[1].Сум=Сумма;
 fi;
end;

Func КонтрИмя_onEnter(FieldName: String; Iter: Integer): logical;
var rec:record;
var tmp:S;
var Flag:L;
 Rec=OpenCardFile("Контрагент","",РеквКонтр,crdRecordOnly);
 if not Rec=nil:
    РеквКонтр=Rec;
    КонтрБанк=Раб.Бюджет2005.БанкСчет(РеквКонтр,False);
    РПО_Призн_К=CardFileRecSign("Контрагент","Признак","К",РеквКонтр,"");
    Flag=False;
    for Iter=1..РПО_Расшифр do
     tmp=РПО_Расшифр[Iter].Призн;
     РПО_Расшифр[Iter].Призн=Раб.Бюджет2005.УдалитьСловоИзНабораПоМаске(РПО_Расшифр[Iter].Призн," ","К.*","");
     if not tmp=РПО_Расшифр[Iter].Призн: Flag=True; fi;
    od;
    if Flag:
       Message("Признаки из справочника К (контрагенты) удалены из таблицы расшифровки",mtWarning);
    fi;
 fi;
 ^False;
End;

Func КонтрБанкРСчет_OnEnter(FieldName: String; Iter: Integer): logical;
var Rec:Record;
 if РеквКонтр=nil: Message("Выберите плательщика (контрагента)",mtError); Template.Field="КонтрИмя"; ^False; fi;
 Rec=OpenCardFile("Банк_Счета","Контрагент="+RecordToString(РеквКонтр),КонтрБанк);
 if not Rec=nil:
    КонтрБанк=Rec;
 fi;
end;

Func Призн_К_OnEnter(FieldName: String; Iter: Integer): logical;
var tmp:S;
 if РеквКонтр=nil: Message("Выберите плательщика",mtError); Template.Field="РПО_Призн_К"; ^False; fi;
 if EnqOkCancel("Изменение аналитического признака плательщика может привести к ошибке^MВы уверены, что хотите изменить признак ?",mtWarning)=cmOk:
    tmp=AnaElection("К.*",False,False,РПО_Призн_К);
    if not tmp="":
       РПО_Призн_К=tmp;
       for Iter=1..РПО_Расшифр do
        РПО_Расшифр[Iter].Призн=Раб.Бюджет2005.УдалитьСловоИзНабораПоМаске(РПО_Расшифр[Iter].Призн," ","К.*","");
       od;
    fi;
 fi;
 Return False;
end;

Proc Призн_К_OnExit(FieldName: String; Iter: Integer);
 РПО_Призн_К="";
end;

Func РеквИмя_onEnter(FieldName: String; Iter: Integer): logical;
var rec:record;
 rec=OpenCardFile("Контрагент","Наше",Рекв);
 if not rec=nil:
    if FieldName="defРекв_":
       defРекв=Rec;
       defРекв_=GetCardFieldS("Контрагент",Rec,"КорИмя");
       defРеквБанк=nil;
       defРеквБанк_="";
      else
       Рекв=rec;
       РеквБанк=Раб.Бюджет2005.БанкСчет(Рекв,False);
       РПО_Призн_ЛС=Раб.Бюджет2005.БанкВПризн(РеквБанк);
       БанкВБухСч;
    fi;
 fi;
 ^False;
End;

Func РеквБанкРСчет_onEnter(Field:S; Iter:I):L;
var Rec,Rec2:Record;
var tmp:S;
 if Field="defРеквБанк_": 
    Rec=defРекв; 
    Rec2=defРеквБанк;
    tmp="defРекв";
   else 
    Rec=Рекв; 
    Rec2=РеквБанк;
    tmp="РеквИмя";
 fi;
 if Rec=nil: Message("Выберите получателя (наше учреждение)",mtError); Template.Field=tmp; ^False; fi;
 Rec=OpenCardFile("Банк_Счета","Контрагент="+RecordToString(Rec),Rec2);
 if not Rec=nil:
    if Field="defРеквБанк_":
       defРеквБанк=Rec;
       defРеквБанк_=GetCardFieldS("Банк_Счета",Rec,"Банк")+" "+GetCardFieldS("Банк_Счета",Rec,"Город")+" "+GetCardFieldS("Банк_Счета",Rec,"РСчет")+" ("+GetCardFieldS("Банк_Счета",Rec,"РПО_Коммент")+")";
      else
       РеквБанк=Rec;
       РПО_Призн_ЛС=Раб.Бюджет2005.БанкВПризн(РеквБанк);
       БанкВБухСч;
    fi;
 fi;
 ^False;
end;

Func Призн_ЛС_OnEnter(FieldName: String; Iter: Integer): logical;
var tmp:S;
 if РеквБанк=nil: Message("Заполните 'Сч. №' получателя",mtError); Template.Field="РеквБанк.РСчет"; ^False; fi;
 tmp=AnaElection("ЛС.*",False,False,РПО_Призн_ЛС);
 if not tmp="":
    РПО_Призн_ЛС=tmp;
 fi;
 Return False;
end;

Func НазначПлат_OnLookup(Sect: String; Row: Integer; Col: Integer; Cur: String): String;
 Template.HideEditor(False);
 Cur=Раб.Вспом.Основание.Выполнить(SelfCrd+".НазначПлат");
 if not Cur="":
    НазначПлат=Cur;
 fi;
 Return Cur;
end;

Func СтавкаНДС_OnEnter(FieldName: String; Iter: Integer): logical;
var n:i;
 if Сумма=0: Message("Заполните сумму документа",mtError); Template.Field="Сумма"; ^False; fi;
 ClearVariable(Buf);
 Buf[1]="НДС=18 %";
 Buf[2]="НДС=10 %";
 Buf[3]="Без НДС";
 n=Alternate("НДС платежа",Buf,20,1,12);
 if n=1: СтавкаНДС=18;
   |n=2: СтавкаНДС=10;
   |n=3: СтавкаНДС=0;
   |True: ^False;
 fi;
 НДС=Round(СтавкаНДС*Сумма/(100+НДС),2);
 Return False;
end;

Func ОчиститьРасшифр_OnEnter(FieldName: String; Iter: Integer): logical;
 if not РПО_Проводить:
    if EnqOkCancel("Очистить таблицу расшифровки ?",mtWarning)=cmOk:
       ClearVariable(РПО_Расшифр);
    fi;
 fi;
 Return False;
end;

Func ВД_OnEnter(FieldName: String; Iter: Integer): logical;
var n:i;
 ClearVariable(Buf);
 Buf[1]="1 -- средства бюджета";
 Buf[2]="2 -- средства от приносящей доход деятельности";
 Buf[3]="3 -- средства, поступающие во временное распоряжение";
 Buf[4]="4 -- субсидия на выполнение государственного задания";
 Buf[5]="5 -- субсидия на иные цели";
 Buf[6]="6 -- бюджетные инвестиции";
 Buf[7]="7 -- средства ОМС";
 n=Alternate("Вид средств",Buf,-1,Int(РПО_ВД),12);
 if not n=0:
    if not РПО_ВД=Str(n):
       РПО_ВД=Str(n);
       for n=1..РПО_Расшифр do
        РПО_Расшифр[n].КБК="";
        РПО_Расшифр[n].ТипКБК="";
        РПО_Расшифр[n].СчДеб="";
        РПО_Расшифр[n].СчКре="";
       od;
       ОбновитьСч(0);
    fi;
 fi;
 Return False;
end;

Func ПризнОбщ_OnEnter(FieldName: String; Iter: Integer): logical;
var n,nn:i;
var tmp:S;
 ClearVariable(Buf);
 for Iter=1..РПО_Расшифр do
  if not РПО_Расшифр[Iter].СчДеб="": AddInArray(Buf,True,False,РПО_Расшифр[Iter].СчДеб); fi;
  if not РПО_Расшифр[Iter].СчКре="": AddInArray(Buf,True,False,РПО_Расшифр[Iter].СчКре); fi;
 od;
 nn=LengthOfArray(Buf);
 if nn=0: Message("Введите счет дебета/кредита",mtError); Template.Field="СчДеб";  Template.Frame=1; ^False; fi;
 tmp="";
 for n=1..nn do
  tmp=tmp+"|"+Buf[n];
 od;
 tmp=SubStr(tmp,2,255);
 tmp=Раб.Бюджет2005.СписокСправ(tmp,0,ИсклПризн);
 if tmp="": Message("Аналитические признаки не требуются"); ^False; fi;
 tmp=AnaElection(tmp+"|*&~*.*",False,False,hПризн);
 if not tmp="":
    if Match(tmp,"К.*"): РПО_Призн_К=""; fi;
    for Iter=1..РПО_Расшифр do
     РПО_Расшифр[Iter].Призн=Раб.Бюджет2005.ДобавитьСловоВНаборСЗаменой(РПО_Расшифр[Iter].Призн," ",tmp,SubStr(tmp,1,Pos(".",tmp))+"*","");
    od;
 fi;
 Return False;
end;

Proc ПризнОбщ_OnExit(FieldName: String; Iter: Integer);
var ww,w,n,p:I;
var tmp:S;
 ClearVariable(Buf);
 ClearVariable(Buf2);
 for Iter=1..РПО_Расшифр do
  if not РПО_Расшифр[Iter].Призн="":
     ww=WordsCount(РПО_Расшифр[Iter].Призн," ");
     for w=1..ww do
      tmp=ExtractWord(w,РПО_Расшифр[Iter].Призн," ");
      p=Pos(".",tmp);
      if not p=0: tmp=SubStr(tmp,1,p); fi;
      AddInArray(Buf,True,False,tmp);
     od;
  fi;
 od;
 ww=LengthOfArray(buf);
 for w=1..ww do
  if Pos(".",Buf[w])=0: tmp=""; else tmp="*"; fi;
  Buf2[w]=Buf[w]+tmp+"  --"+Name_A(Buf[w]);
  Buf[w]=Buf[w]+tmp;
 od;
 InsertInArray(Buf,1,"");
 InsertInArray(Buf2,1,"Удалить все");
 n=Alternate("Удаление справочника...",Buf2,-1,1,12);
 if not n=0:
    for Iter=1..РПО_Расшифр do
     if n=1:
        РПО_Расшифр[Iter].Призн="";
       else
        РПО_Расшифр[Iter].Призн=Раб.Бюджет2005.УдалитьСловоИзНабораПоМаске(РПО_Расшифр[Iter].Призн," ",Buf[n],"");
     fi;
    od;
 fi;
end;

Func Валюта_OnEnter(FieldName: String; Iter: Integer): logical;
var n:i;
var Cur:S;
 ClearVariable(Buf);
 n=0;
 for Currencies Cur="*" do
  n=n+1;
  Buf[n]=Up(Cur)+" --"+Name_C(Cur);
 od;
 n=Alternate("Валюта",Buf,-1,1,12);
 if not n=0:
    Валюта=SubStr(Buf[n],1,3);
    ОбновитьСч(-1);
 fi;
 Return False;
end;

Func A_OnEnter(FieldName: String; Iter: Integer): logical;
var Iter_:I;
 if not РПО_Проводить:
    Iter_=Iter;
    Iter=InsertFrame(РПО_Расшифр,Iter+1);
    if FieldName="AA":
       РПО_Расшифр[Iter].ТипКБК=РПО_Расшифр[Iter_].ТипКБК;
       РПО_Расшифр[Iter].КБК=РПО_Расшифр[Iter_].КБК;
       РПО_Расшифр[Iter].Призн=РПО_Расшифр[Iter_].Призн;
       РПО_Расшифр[Iter].Сум=РПО_Расшифр[Iter_].Сум;
       РПО_Расшифр[Iter].СчДеб=РПО_Расшифр[Iter_].СчДеб;
       РПО_Расшифр[Iter].СчКре=РПО_Расшифр[Iter_].СчКре;
       РПО_Расшифр[Iter].Кмнт=РПО_Расшифр[Iter_].Кмнт;
      else
       ОбновитьСч(Iter);
    fi;
 fi;
 Return False;
end;

Func D_OnEnter(FieldName: String; Iter: Integer): logical;
 if not РПО_Проводить:
    DeleteFrame(РПО_Расшифр,Iter);
 fi;
 Return False;
end;

Func КБК_OnEnter(FieldName: String; Iter: Integer): logical;
var КОСГУ_,БК_,ТипБК_,tmp:S;
 НеПустаяТаблица;
 if РеквБанк=nil: Message("Выберите банковский счет получателя",mtError); Template.Field="РеквБанк.РСчет"; ^False; fi;
 if РПО_ВД="": Message("Выберите наименование вида средств",mtError); Template.Field="Ист_"; ^False; fi;
 if РПО_ВД="3": Message("Для средств поступающие во временное распоряжение, указывать КБК не требуется"); ^False; fi;
 if РПО_Расшифр[Iter].КБК="":
    БК_=hБК;
   else
    if РПО_Расшифр[Iter].ТипКБК="10": БК_="ФКР";
      |РПО_Расшифр[Iter].ТипКБК="20": БК_="КД";
      |РПО_Расшифр[Iter].ТипКБК="31" or РПО_Расшифр[Iter].ТипКБК="32": БК_="КИФД";
    fi;
    КОСГУ_=Раб.Бюджет2005.ВзятьКодКБК(РПО_Расшифр[Iter].КБК,БК_,"КОСГУ",False);
    БК_=БК_+"."+Раб.Бюджет2005.ВзятьКодКБК(РПО_Расшифр[Iter].КБК,БК_,"БК",False);
 fi;
 if РПО_ВД="1": tmp="(ФКР.???.????.???????.???|КД.???.?.??.?????.??.????|КИФД.???.??.??.??.??.??.????)&~ФКР.???.0000.0000000.000";
   |РПО_ВД="2": tmp="ФКР.???.0000.0000000.000|КД.???.?.??.?????.??.????|КИФД.???.??.??.??.??.??.????";
   |True: tmp="ФКР.???.????.???????.???|КД.???.?.??.?????.??.????|КИФД.???.??.??.??.??.??.????";
 fi;
 БК_=AnaElection(tmp,False,False,БК_);
 if not БК_="":
    hБК=БК_;
    if Match(БК_,"ФКР.*"):         ТипБК_="10"; if КОСГУ_="": КОСГУ_=hЭКР; fi;
      |Match(БК_,"КД.*"):          ТипБК_="20"; if КОСГУ_="": КОСГУ_=hЭКД; fi;
      |Match(БК_,"КИФД.???.00.*"): ТипБК_="31"; if КОСГУ_="": КОСГУ_=hЭКИФД; fi;
      |Match(БК_,"КИФД.???.01.*"): ТипБК_="31"; if КОСГУ_="": КОСГУ_=hЭКИФД; fi;
      |Match(БК_,"КИФД.???.02.*"): ТипБК_="32"; if КОСГУ_="": КОСГУ_=hЭКИФД; fi;
    fi;
    КОСГУ_=ВыборЭК(ТипБК_,КОСГУ_);
    if not КОСГУ_="":
       БК_=SubStr(БК_,Pos(".",БК_)+1,255);
       РПО_Расшифр[Iter].КБК=БК_+"."+КОСГУ_;
       РПО_Расшифр[Iter].ТипКБК=ТипБК_;
       ОбновитьСч(Iter);
    fi;
 fi;
 Return False;
end;

Proc КБК_OnExit(FieldName: String; Iter: Integer);
 РПО_Расшифр[Iter].КБК="";
 РПО_Расшифр[Iter].ТипКБК="";
end;

Func Призн_OnEnter(FieldName: String; Iter: Integer): logical;
var tmp:S;
 НеПустаяТаблица;
 if РПО_Расшифр[Iter].КБК="" and not РПО_ВД="3": Message("Заполните код по БК плательщика",mtError); Template.Field="КБК"; Template.Frame=Iter; ^False; fi;
 if Name_S(РПО_Расшифр[Iter].СчДеб)=" ": Message("Введите счет дебета",mtError); Template.Field="СчДеб"; Template.Frame=Iter; ^False; fi;
 if Name_S(РПО_Расшифр[Iter].СчКре)=" ": Message("Введите счет кредита",mtError); Template.Field="СчКре"; Template.Frame=Iter; ^False; fi;
 tmp=Раб.Бюджет2005.СписокСправ(РПО_Расшифр[Iter].СчДеб+"|"+РПО_Расшифр[Iter].СчКре,0,ИсклПризн);
 if tmp="": Message("Аналитические признаки не требуются"); ^False; fi;
 ПолучитьДопАн(Iter);
 tmp=AnaElection(tmp+"|*&~*.*",False,False,hПризн);
 if not tmp="":
    РПО_Расшифр[Iter].Призн=Раб.Бюджет2005.ДобавитьСловоВНаборСЗаменой(РПО_Расшифр[Iter].Призн," ",tmp,SubStr(tmp,1,Pos(".",tmp))+"*","");
    if Match(tmp,"К.*"): РПО_Призн_К=""; fi;
 fi;
 Return False;
end;

Proc Призн_OnExit(Field:S; Iter:I);
 РПО_Расшифр[Iter].Призн=Раб.Бюджет2005.УдалитьСловоИзНабора_Диалог2(РПО_Расшифр[Iter].Призн," ","Name_A");
end;

Func СчДеб_OnEnter(FieldName: String; Iter: Integer): logical;
var tmp,Mask,Сч,БК,КОСГУ:S;
var z,w,ww:I;
 НеПустаяТаблица;
 if РПО_Расшифр[Iter].КБК="" and not РПО_ВД="3": Message("Заполните код по БК",mtError); Template.Field="КБК"; Template.Frame=Iter; ^False; fi;
 Раб.КСА.Начать;
 Раб.КСА.Добавить(РПО_Расшифр[Iter].СчДеб);
 Раб.КСА.Добавить(РПО_Расшифр[Iter].СчКре);
 if Раб.КСА.Закончить(True): Message("Добавление новых счетов завершено"); fi;
 if РПО_Расшифр[Iter].СчДеб="": tmp=hСчДеб; else tmp=РПО_Расшифр[Iter].СчДеб; fi;
 z=SearchInArray(БанкСч,РеквБанк);
 if not z=1: 
    if defСчДеб[z]="": z=-1; fi;
 fi;
 if z=-1:
    Mask="("+МаскаСчДеб+")&*."+РПО_ВД+".???.??.*";
   else
    БК=Раб.Бюджет2005.ВзятьКодКБК(РПО_Расшифр[Iter].КБК,"","БК",False);
    КОСГУ=Раб.Бюджет2005.ВзятьКодКБК(РПО_Расшифр[Iter].КБК,"","КОСГУ",False);
    Mask="";
    ww=WordsCount(defСчДеб[z],"|");
    for w=1..ww do
     Сч=ExtractWord(w,defСчДеб[z],"|");
     if Match(Сч,"?.201.*"):
        Mask="*."+Сч+".*";
       else
        if not Name_S(БК+"."+Сч+"."+КОСГУ)=" ":
           Mask=Раб.Бюджет2005.Объединить(Mask,БК+"."+Сч+"."+КОСГУ,"|");
        fi;
     fi;
    od;
    if Mask="":
       Mask="*."+РПО_ВД+".???.??.*";
      else
       Mask="("+Mask+")&*."+РПО_ВД+".???.??.*";
    fi;
 fi;
 tmp=AccountElection(Mask,False,tmp);
 if not tmp="":
    РПО_Расшифр[Iter].СчДеб=tmp;
    hСчДеб=tmp;
    if not Correspond(РПО_Расшифр[Iter].СчДеб,РПО_Расшифр[Iter].СчКре): РПО_Расшифр[Iter].СчКре=""; fi;
    ОбновитьПризн(Iter);
 fi;
 Return False;
end;

Func СчКре_OnEnter(FieldName: String; Iter: Integer): logical;
var tmp,БК,КОСГУ:S;
var z:i;
 НеПустаяТаблица;
 if РПО_Расшифр[Iter].КБК="" and not РПО_ВД="3": Message("Заполните код по БК",mtError); Template.Field="КБК"; Template.Frame=Iter; ^False; fi;
 Раб.КСА.Начать;
 Раб.КСА.Добавить(РПО_Расшифр[Iter].СчДеб);
 Раб.КСА.Добавить(РПО_Расшифр[Iter].СчКре);
 if Раб.КСА.Закончить(True): Message("Добавление новых счетов завершено"); fi;
 if РПО_Расшифр[Iter].СчКре="":
    z=SearchInArray(БанкСч,РеквБанк);
    if not z=1:
       if defСчКре[z]="": z=-1; fi;
       if WordsCount(defСчКре[z],"|")>1: z=-1; fi;
    fi;
    if z=-1:
       if РПО_ВД="3":
          tmp=hСчКре;
         else
          tmp=Раб.Бюджет2005.ВзятьКодКБК(РПО_Расшифр[Iter].КБК,"","БК",False)+"."+РПО_ВД;
          if hСчКре="":
             tmp=tmp+".";
            else
             tmp=tmp+"."+Раб.Бюджет2005.ВзятьКодСчета(hСчКре,"","СЧ8",False);
          fi;
       fi;
      else
       БК=Раб.Бюджет2005.ВзятьКодКБК(РПО_Расшифр[Iter].КБК,"","БК",False);
       КОСГУ=Раб.Бюджет2005.ВзятьКодКБК(РПО_Расшифр[Iter].КБК,"","КОСГУ",False);
       tmp=БК+"."+defСчКре[z]+"."+КОСГУ;
    fi;
   else 
    tmp=РПО_Расшифр[Iter].СчКре;
 fi;
 tmp=PickCorrAccount(РПО_Расшифр[Iter].СчДеб,False,tmp);
 if not tmp="":
    РПО_Расшифр[Iter].СчКре=tmp;
    hСчКре=tmp;
    ОбновитьПризн(Iter);
 fi;
 Return False;
end;
--
--Обработчики событий объектов шаблона-----
Proc cbПроводить_OnChange(Sender: String);
 if РПО_Проводить:
    РПО_Проводить=Проверить(False);
   else
    if EnqOkCancel("Вы уверены, что хотите исключить документ из обработки ?",mtWarning)=cmCancel:
       РПО_Проводить=True;
    fi;
 fi;
 cbПроводить.State=РПО_Проводить;
 Оформление;
 EditorApply;
end;

Proc btnДата_OnClick(Sender: String);
var tmp:D;
 tmp=Calendar;
 if not tmp=1.1.100:
    if Sender="btnДатаОпер": РПО_ДатаОпер=tmp;
    fi;
 fi;
end;

Proc btnНастр_OnClick(Sender: String);
 Настр(False);
 ОткрНастр(True);
end;

Proc btnUsr_OnClick(Sender: String);
 if not extBtnUsrOnClick="":
    if not ProcExists(extBtnUsrOnClick): Message("Процедура '"+extBtnUsrOnClick+"' не найдена",mtError); Exit; fi;
 fi;
 EditorApply;
 ExecuteProc(extBtnUsrOnClick,Sender);
end;

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

Proc btnВозврат_OnClick(Sender: String);
var n,OWA,OA,i,ii,Iter:i;
var Crd,ff,fl,tmp:S;
var Rec: Record;
 if EnqOkCancel("Текущие данные будут очищеный, продолжить ?",mtWarning)=cmCancel: Exit; fi;
 ClearVariable(Buf);
 Buf[1]="На основе данных из ЗКР";
 Buf[2]="На основе данных из ЗВЗ";
 Buf[3]="На основе данных из платежного поручения";
 n=Alternate("Выберите источник",Buf,-1,1,12);
 if n=0: Exit; fi;
 if n=1:
    Crd="РПО_ЗАЯВКА_КР";
    ff="НомерДок|ДатаДок:D";
    fl="Проводить";
   |n=2:
    Crd="РПО_ЗАЯВКА_ВОЗВРАТ";
    ff="НомерДок|ДатаДок:D";
    fl="Проводить";
   |n=3:
    Crd="ПОРУЧ";
    ff="НомерБум|Дата:D";
    fl="Проводить";
   |true: 
    Exit;
 fi;
 Rec=Раб.Поиск.ВыборИзКартотеки("Выбор источника...",Crd,ff,"Номер документа|Дата документа",fl);
 if Rec=nil: Exit; fi;
 ClearVariable(РПО_Расшифр);
 if n=1 or n=2:
    Rec=GetCardFieldR(Crd,Rec,"ДокОпер1");
    if RecordExists("ПОРУЧ",Rec):
       n=3;
       Crd="ПОРУЧ";
    fi;
 fi;
 if n=1:
    OWA=OpenWorkArea("РПО_ЗАЯВКА_КР","","UKey="+recordToString(Rec));
    Try
     РеквКонтр=GetFieldR(OWA,1,"РеквП");
     КонтрБанк=GetFieldR(OWA,1,"БанкП");
     РПО_Призн_К=GetFieldS(OWA,1,"Призн_К");
     Сумма=GetFieldN(OWA,1,"Док_Сум");
     Рекв=GetFieldR(OWA,1,"Рекв");
     РеквБанк=GetFieldR(OWA,1,"Банк");
     РПО_Призн_ЛС=GetFieldS(OWA,1,"Призн_ЛС");
     П1=GetFieldS(OWA,1,"Нал_Статус");
     П2=GetFieldS(OWA,1,"Нал_КБК");
     П3=GetFieldS(OWA,1,"Нал_ОКАТО");
     П4=GetFieldS(OWA,1,"Нал_ОснПл");
     П5=GetFieldS(OWA,1,"Нал_Пер");
     П6=GetFieldS(OWA,1,"Нал_НомДок");
     П7=Trim(DateToString(GetFieldD(OWA,1,"Нал_ДатДок")));
     П8=GetFieldS(OWA,1,"Нал_ТипПл");
     НДС=GetFieldN(OWA,1,"Док_СумНДС");
     СтавкаНДС=Round(GetFieldS(OWA,1,"Док_СтавкаНДС"),2);
     Валюта=BaseCurrency;
     OA=OpenArray(OWA,1,"Расшифр","");
     ii=Records(OA);
     if ii=0:
        РПО_ВД="";
       else
        РПО_ВД=Раб.Бюджет2005.ВзятьКодСчета(GetFieldS(OA,1,"СчКре"),"","ВД",False);
     fi;
     for i=1..ii do
      Iter=InsertFrame(РПО_Расшифр,РПО_Расшифр+1);
      РПО_Расшифр[Iter].ТипКБК=GetFieldS(OA,i,"ТипКБК");
      РПО_Расшифр[Iter].КБК=ВзятьКБК(GetFieldS(OA,i,"КБК"),РПО_Расшифр[Iter].ТипКБК,"БК+КОСГУ");
      РПО_Расшифр[Iter].ДопКл=GetFieldS(OA,i,"ДопКл");
      РПО_Расшифр[Iter].Сум=GetFieldN(OA,i,"Сум");
      РПО_Расшифр[Iter].СчДеб=GetFieldS(OA,i,"СчКре");
      if Match(РПО_Расшифр[Iter].СчДеб,"*.610"):
         РПО_Расшифр[Iter].СчДеб=Раб.Бюджет2005.ВзятьКодСчета(РПО_Расшифр[Iter].СчДеб,"","АН",True)+".510";
      fi;
      РПО_Расшифр[Iter].СчКре=GetFieldS(OA,i,"СчДеб");
      РПО_Расшифр[Iter].Призн=Trim(GetFieldS(OA,i,"Призн_ОснДок")+" "+GetFieldS(OA,i,"Призн"));
      РПО_Расшифр[Iter].Призн=Trim(РПО_Расшифр[Iter].Призн+" "+GetFieldS(OWA,1,"Призн_БО"));
      РПО_Расшифр[Iter].Призн=Trim(РПО_Расшифр[Iter].Призн+" "+GetFieldS(OWA,1,"Призн_ФАИП"));
--      РПО_Расшифр[Iter].Кмнт=GetFieldS(OA,i,"Кмнт");
      РПО_Расшифр[Iter].Кмнт="";
     od;
    Finally
     CloseWorkArea(OWA);
    end;
   |n=2:
    Message("Упс! Пока не реализовано");
   |n=3:
    OWA=OpenWorkArea("ПОРУЧ","","UKey="+recordToString(Rec));
    Try
     РеквКонтр=GetFieldR(OWA,1,"РеквП");
     КонтрБанк=GetFieldR(OWA,1,"БанкП");
     Сумма=GetFieldN(OWA,1,"Сумма");
     Рекв=GetFieldR(OWA,1,"Рекв");
     РеквБанк=GetFieldR(OWA,1,"Банк");
     РПО_Призн_ЛС=Раб.Бюджет2005.БанкВПризн(РеквБанк);
     П1=GetFieldS(OWA,1,"П1");
     П2=GetFieldS(OWA,1,"П2");
     П3=GetFieldS(OWA,1,"П3");
     П4=GetFieldS(OWA,1,"П4");
     П5=GetFieldS(OWA,1,"П5");
     П6=GetFieldS(OWA,1,"П6");
     П7=GetFieldS(OWA,1,"П7");
     П8=GetFieldS(OWA,1,"П8");
     НДС=0;
     СтавкаНДС=0;
     Валюта=BaseCurrency;
     OA=OpenArray(OWA,1,"РПО_Позиции","");
     ii=Records(OA);
     if ii=0:
        РПО_ВД="";
       else
        РПО_ВД=Раб.Бюджет2005.ВзятьКодСчета(GetFieldS(OA,1,"СчКре"),"","ВД",False);
     fi;
     for i=1..ii do
      Iter=InsertFrame(РПО_Расшифр,РПО_Расшифр+1);
      РПО_Расшифр[Iter].ДопКл="";
      РПО_Расшифр[Iter].Сум=GetFieldN(OA,i,"Сум");
      РПО_Расшифр[Iter].СчДеб=GetFieldS(OA,i,"СчКре");
      if Match(РПО_Расшифр[Iter].СчДеб,"*.610"):
         РПО_Расшифр[Iter].СчДеб=Раб.Бюджет2005.ВзятьКодСчета(РПО_Расшифр[Iter].СчДеб,"","АН",True)+".510";
      fi;
      РПО_Расшифр[Iter].СчКре=GetFieldS(OA,i,"СчДеб");
      РПО_Расшифр[Iter].Призн=GetFieldS(OA,i,"Признак");
      РПО_Призн_К=Раб.Бюджет2005.ВзятьСловоИзНабораПоМаске(РПО_Расшифр[Iter].Призн," ","К.*","");
      РПО_Расшифр[Iter].Призн=Раб.Бюджет2005.УдалитьСловоИзНабораПоМаске(РПО_Расшифр[Iter].Призн," ","К.*|ЛС.*","|");
      --РПО_Расшифр[Iter].Кмнт=GetFieldS(OA,i,"Кмнт");
      РПО_Расшифр[Iter].Кмнт="";
      if РПО_ВД="3":
         РПО_Расшифр[Iter].КБК="";
         РПО_Расшифр[Iter].ТипКБК="";
        else
         if Match(РПО_Расшифр[Iter].СчДеб,"*.1.304.04.*") or Match(РПО_Расшифр[Iter].СчДеб,"*.?.210.02.*"):
            РПО_Расшифр[Iter].КБК=Раб.Бюджет2005.ВзятьКодСчета(РПО_Расшифр[Iter].СчДеб,"","БК",False)+"."+Раб.Бюджет2005.ВзятьКодСчета(РПО_Расшифр[Iter].СчДеб,"","КОСГУ",False);
            РПО_Расшифр[Iter].ТипКБК=Раб.Бюджет2005.ТипКБКСчета(РПО_Расшифр[Iter].СчДеб);
           else
            РПО_Расшифр[Iter].КБК=Раб.Бюджет2005.ВзятьКодСчета(РПО_Расшифр[Iter].СчКре,"","БК",False);
            if Match(РПО_Расшифр[Iter].СчКре,"*.?.205.??.*") or Match(РПО_Расшифр[Iter].СчКре,"*.?.206.??.*") or Match(РПО_Расшифр[Iter].СчКре,"*.?.208.??.*") or Match(РПО_Расшифр[Iter].СчКре,"*.?.302.??.*"):
               tmp=Раб.Бюджет2005.ВзятьКодСчета(РПО_Расшифр[Iter].СчКре,"","Ан",False);
               if Match(РПО_Расшифр[Iter].СчКре,"*.?.205.??.*"):
                  tmp=Раб.Бюджет2005.Соотв_Ан_КОСГУ("205",tmp);
                 else
                  tmp=Раб.Бюджет2005.Соотв_Ан_КОСГУ("",tmp);
               fi;
               РПО_Расшифр[Iter].КБК=РПО_Расшифр[Iter].КБК+"."+tmp;
              else
               tmp=Раб.Бюджет2005.ВзятьСловоИзНабораПоМаске(РПО_Расшифр[Iter].Призн," ","КОСГУ.*","");
               if tmp="":
                  РПО_Расшифр[Iter].КБК="";
                  РПО_Расшифр[Iter].ТипКБК="";
                 else
                  РПО_Расшифр[Iter].КБК=РПО_Расшифр[Iter].КБК+"."+SubStr(tmp,7,3);
               fi;
            fi;
         fi;
         if РПО_Расшифр[Iter].ТипКБК="ФКР":  РПО_Расшифр[Iter].ТипКБК="10";
           |РПО_Расшифр[Iter].ТипКБК="КД":   РПО_Расшифр[Iter].ТипКБК="20";
           |РПО_Расшифр[Iter].ТипКБК="КИФД": РПО_Расшифр[Iter].ТипКБК="31";
         fi;
      fi;
     od;
    Finally
     CloseWorkArea(OWA);
    end;
 fi;
 Message("Импорт успешно завершен");
end;

Proc btnОБП_OnClick(Sender: String);
var OWA,Iter,n:i;
var Crd,Bln,Mask,Вид_,tmp:S;
var Rec: Record;
 ClearVariable(Buf);
 Buf[1]="Обеспечение исполнение обязательства (контракта)";
 Buf[2]="Обеспечение заявки";
 n=Alternate("Выберите вид обеспечения",Buf,-1,1,12);
 if n=1: Вид_="ДС.ОИО";
   |n=2: Вид_="ДС.ОБЗ";
   |true: Exit;
 fi;
 ClearVariable(Buf);
 Buf[1]="Карточка обеспечения уже создана (обязательство (контракт) занесен в базу данных)";
 Buf[2]="Создать карточку обеспечения (обязательство (контракт) не индефицировано)";
 n=Alternate("Выберите режим работы",Buf,-1,1,12);
 if n=1:
    if EnqOkCancel("Текущие данные будут очищены, продолжить ?",mtWarning)=cmCancel: Exit; fi;
    ClearVariable(Buf);
    Crd="РПО_ОБЕСП_ИСПОЛ_ОБЯЗ";
    Rec=Раб.Поиск.ВыборИзКартотеки("Выбор обязательства...",Crd,"Обяз_Ном|Обяз_Дат:D","Номер обязательства|Дата обязательства",if(Вид_="ДС.ОБП","Вид='ДС.ОБП'","Вид='ДС' or Вид='ДС.ОБП'"));
    if Rec=nil: Exit; fi;
    ClearVariable(РПО_Расшифр);
    OWA=OpenWorkArea(Crd,"","UKey="+RecordToString(Rec));
    Try
     РеквКонтр=GetFieldR(OWA,1,"Принципал_Рекв");
     КонтрБанк=GetFieldR(OWA,1,"Принципал_Банк");
     РПО_Призн_К=GetFieldS(OWA,1,"Принципал_Призн");
     Сумма=GetFieldN(OWA,1,"Сум");
     Рекв=GetFieldR(OWA,1,"Бенефициар_Рекв");
     РеквБанк=GetFieldR(OWA,1,"Бенефициар_Банк");
     РПО_Призн_ЛС=Раб.Бюджет2005.БанкВПризн(РеквБанк);
     Валюта=BaseCurrency;
     РПО_ВД="3";
     Iter=InsertFrame(РПО_Расшифр,РПО_Расшифр+1);
     РПО_Расшифр[Iter].ТипКБК="";
     РПО_Расшифр[Iter].КБК="";
     РПО_Расшифр[Iter].ДопКл="";
     РПО_Расшифр[Iter].Сум=Сумма;
     РПО_Расшифр[Iter].СчКре=GetFieldS(OWA,1,"Счет");
     РПО_Расшифр[Iter].СчДеб=SubStr(РПО_Расшифр[Iter].СчКре,1,3)+".01.05.02.01.01.0000.3.201.11.510";
     РПО_Расшифр[Iter].Призн=Trim(GetFieldS(OWA,1,"Обяз_Призн")+" "+GetFieldS(OWA,1,"Призн"));
     РПО_Расшифр[Iter].Призн=Trim(РПО_Расшифр[Iter].Призн+" СВР."+GetFieldS(OWA,1,"Признак"));
     РПО_Расшифр[Iter].Кмнт="";
    Finally
     CloseWorkArea(OWA);
    end;
    Message("Импорт успешно завершен");
   |n=2:
    if not Проверить(True): Exit; fi;
    if РПО_Расшифр>1: Message("Допустимо вводить только одну строку расшифровки",mtError); Template.Field="пп"; Template.Iter=РПО_Расшифр; Exit; fi;
    if not Match(РПО_Расшифр[1].СчКре,"*.3.304.01.730"): Message("Недопустимый счет кредита '"+РПО_Расшифр[1].СчКре+"'",mtError); Template.Field="СчКре"; Template.Iter=1; Exit; fi;
    if not Раб.Бюджет2005.ВзятьСловоИзНабораПоМаске(РПО_Расшифр[1].Призн," ","СВР.*","")="": Message("Расшифровка уже содержит признак карточки обеспечения '"+Раб.Бюджет2005.ВзятьСловоИзНабораПоМаске(РПО_Расшифр[1].Призн," ","СВР.*","")+"'",mtError); Template.Field="Призн_"; Template.Iter=1; Exit; fi;
    bln="Инфо.Обесп_Испол_Обяз";
    PutVariableS(bln+".inВид",Вид_);
    PutVariableN(bln+".inСум",Сумма);
    PutVariableS(bln+".inОбяз_Призн","");
    PutVariableS(bln+".inОбяз_Наим","");
    PutVariableS(bln+".inОбяз_Ном","");
    PutVariableD(bln+".inОбяз_Дат",1.1.100);
    PutVariableS(bln+".inСчет",РПО_Расшифр[1].СчКре);
    PutVariableS(bln+".inСодерж",НазначПлат);
    PutVariableS(bln+".inКмнт","плат. поруч. №"+НомерБум+" от "+DateToString(ДатаДок));
    PutVariableR(bln+".inБенефициар_Рекв",Рекв);
--    PutVariableR(bln+".inБенефициар_Банк",РеквБанк);
    PutVariableR(bln+".inПринципал_Рекв",РеквКонтр);
--    PutVariableR(bln+".inПринципал_Банк",КонтрБанк);
    Mask=Раб.Бюджет2005.СписокСправ("*.3.304.01.*",0,GetVariableS(bln+".ИсклПризн"));
    PutVariableS(bln+".inПризн",Раб.Бюджет2005.ПривестиВСоотвНаборСлов(РПО_Расшифр[1].Призн," ",Mask,"|"));
    Rec=ExecuteFuncR(bln+".Вызвать",nil);
    if not Rec=nil:
       if RecordExists("РПО_ОБЕСП_ИСПОЛ_ОБЯЗ",Rec):
          tmp=CardFileRecSign("РПО_ОБЕСП_ИСПОЛ_ОБЯЗ","Признак","СВР",Rec);
          if not tmp="СВР.":
             РПО_Расшифр[1].Призн=Trim(РПО_Расшифр[1].Призн+" "+tmp);
             Message("Карточка успешно создана");
          fi;
       fi;
    fi;
 fi;
end;

Proc btnПоискПлат_OnClick(Sender: String);
var Rec: Record;
 Rec=Раб.Поиск.ВыборИзКартотеки("Выбор платильщика (контрагента)","КОНТРАГЕНТ","ПРИЗНАК|ПОЛНИМЯ|КОРИМЯ|ИНН","Код|Полное имя|Краткое имя|ИНН","");
 if not Rec=nil:
    РеквКонтр=Rec;
    КонтрБанк=Раб.Бюджет2005.БанкСчет(РеквКонтр,False);
    РПО_Призн_К=CardFileRecSign("Контрагент","Признак","К",РеквКонтр,"");
 fi;
end;

Func РПО_Расшифр_OnInsert(SectName: String): Logical;
 Return not РПО_Проводить;
end;

Func РПО_Расшифр_OnDelete(SectName: String; Iter: Integer): Logical;
 Return not РПО_Проводить;
end;
--Обработчики событий объектов шаблона-----
--
--
--Обработчики событий шаблона -----
Proc OnOpen (Create:L);
 FlagInit=True;
end;

Proc AfterOpen(Destroy: Logical);
 Инициализация;
 Оформление;
 FlagInit=False;
end;

Proc OnRead;
 ОткрНастр(False);
 Настр(False);
 if НоваяЗапись:
    НеПустаяТаблица;
    НомерБум="";
    if Рекв=nil:
       if defРекв=nil:
          Рекв=Раб.Бюджет2005.НашРекв;
         else
          Рекв=defРекв;
       fi;
       if not defРеквБанк=nil:
          РеквБанк=defРеквБанк;
         else
          if not Рекв=nil:
             РеквБанк=Раб.Бюджет2005.БанкСчет(Рекв,False);
            else
             РеквБанк=nil;
          fi;
       fi;
       РПО_Призн_ЛС=Раб.Бюджет2005.БанкВПризн(РеквБанк);
       БанкВБухСч;
    fi;
    if Валюта="": Валюта=BaseCurrency; fi;
    РПО_Проводить=False;
    ClosedModFob=False;
 fi;
 if not FlagInit: Оформление; fi;
end;

Func OnVerify: Logical;
 Номер=Int(НомерБум);
 if Валюта="": Валюта=BaseCurrency; fi;
 hРПО_ДатаОпер=РПО_ДатаОпер;
 Return ЗаполнитьКлючДок;
end;
--Обработчики событий шаблона -----
--

КОНЕЦ