БЛАНКСШАБЛОНОМ [14.06.2006] "Расходный ордер",РЕДАКТОР РасхОрд;

cbPacketMode   :Object;
cbПроводить    :Object;
btnПечать      :Object;
cbPrintPacket  :Object;
cbPrintPacketNP:Object;

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

var FlagEdit:L=[False];

SloEnabled :L;
PrintPacket:L;
PrintPacketNP:L;

var НаимПодр:S=if(Name_A(ПО)<>"" and Name_A(ПО)<>" ",Name_A(По),По);
var Призн_   :S=Призн;
var Цель_    :S=Цель;
var Проп1    :S=if(Сумма=0,"",if(Валюта="РУБ" or Валюта="РУБ":ExtractWords(1,wordscount(Slo_(Trunc(Сумма),"РУБ1")," ")-1,Slo_(Trunc(Сумма),"РУБ1")," ")|Валюта="USD":Slo_(Сумма,"ДОЛ")|Валюта="EUR":Slo_(Сумма,"ЕВР")|True:""));
var Проп2    :S=if(SloEnabled,if(Сумма=0,"",if(Валюта="РУБ" or Валюта="РУБ":ExtractWords(1,wordscount(Slo_(Trunc(Сумма),"РУБ1")," ")-1,Slo_(Trunc(Сумма),"РУБ1")," ")|Валюта="USD":Slo_(Сумма,"ДОЛ")|Валюта="EUR":Slo_(Сумма,"ЕВР")|True:"")),"");

var A:S=if(Проводить,"","+");
var AA:S=if(Проводить,"","++");
var D:S=if(Проводить,"","-");
var ТПризн_[]:S=РПО_Позиции[$].ТПризн; --шифр аналитического учета
var PacketSum:N=SumOfArray(РПО_Позиции[].ТСумма,РПО_Позиции);
var PacketDelta:N=Round(PacketSum-Сумма,2);

var Текст1:S=if(Валюта="РУБ","Сумма,   руб. коп.","Сумма");
var СК:S=Format("%.2D",Int((Сумма-Trunc(Сумма))*100));
var СК2:S=if(SloEnabled,СК,"");

var МаскаСчКас :S="???.01.05.02.*.?.201.34.61*";

var SelfCrd:S="РасхОрд";

StoreКСчет:S;
StoreСчет:S;

var Buf[]:S;
var BufСум[]:N;

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

S1:Section;
S2:Section;
S3:Section;
S4:Section;
S5:Section;
S6:Section;
S7:Section;
S8:Section;
sPNP:Section;
--
--Процедуры и функции -------------			      
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..7 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 or BgColor=coLime:
	  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;
 --Вручную добавляем данные таблицы (если она невидна будут проблемы в автоматичском режиме)
 n=InsertInArraySort(BufField,"ТСчет");   InsertInArray(BufColorBg,n,coTeal);
 n=InsertInArraySort(BufField,"ТКСчет");  InsertInArray(BufColorBg,n,coTeal);
 n=InsertInArraySort(BufField,"ТПризн_"); InsertInArray(BufColorBg,n,coTeal);
 n=InsertInArraySort(BufField,"ТСумма");  InsertInArray(BufColorBg,n,coAqua);
 n=InsertInArraySort(BufField,"ТПримеч"); InsertInArray(BufColorBg,n,coAqua);
 --
 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;
 cbPacketMode.Enabled=not Проводить;
 cbPrintPacket.Enabled=РПО_PacketMode;
 cbPrintPacketNP.Enabled=РПО_PacketMode and PrintPacket;
 sPNP.Row(1,RowNewPage,PrintPacketNP or not PrintPacket);
 for s=1..8 do
  if s=8 and РПО_ПОЗИЦИИ=0: Break; fi;
  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); 
	     Obj.Cell(r,c,CellReadOnly,True);
	    else
	     Obj.Cell(r,c,CellFontColor,BufColorFo[n]); 
	     Obj.Cell(r,c,CellBgColor,BufColorBg[n]); 
	     Obj.Cell(r,c,CellReadOnly,False);
	  fi;
       fi;
      od;
     od;
  fi;
 od;
end;

Proc Ф_Инфо(S: String);
var Rec :Record;
var s1, s2, s3 :S;
var type: I;
 Rec=SignToRecord(S);
 if Rec=nil: ФИО=""; Exit; fi;
 if SignCardFile(S) = "Контрагент":
    type = GetCardFieldI("Контрагент", Rec, "ТИП");
    if type=1:
       s1=GetCardFieldS("Контрагент", Rec, "ФамилияФЛ",Д);
       s2=GetCardFieldS("Контрагент", Rec, "ИмяФЛ",Д);
       s3=GetCardFieldS("Контрагент", Rec, "ОтчествоФЛ",Д);
       if s1="" or s2="" or s3="": ФИО=GetCardFieldS("Контрагент", Rec, "Коримя", Д); else ФИО=s1+" "+s2+" "+s3; fi;
       Паспорт=Trim(GetCardFieldS("Контрагент",Rec,"РПО_ТипДокум")+" "+GetCardFieldS("Контрагент",Rec,"СерПасп")+" № "+GetCardFieldS("Контрагент",Rec,"НомПасп")+" "+DateToString(GetCardFieldD("Контрагент",Rec,"ДатаВыд"))+" "+GetCardFieldS("Контрагент",Rec,"КемВыдан"));
    fi;
  |SignCardFile(S) = "Сотрудники":
   s1=GetCardFieldS("Сотрудники",Rec,"ФКОМУ",Д);
   s2=GetCardFieldS("Сотрудники",Rec,"ИОКОМУ",Д);
   if s1="" or s2="": ФИО=GetCardFieldS("Сотрудники", Rec, "ФИОТ", Д); else ФИО=s1+" "+s2; fi;
   Паспорт=GetCardFieldS("Сотрудники",Rec,"ПАСПОРТ");
 fi;
end;


Proc НеПустаяТаблица;
var n:i;
 n=1; 
 While n<=РПО_Позиции do
  if РПО_Позиции[n].ТСчет=""  and
     РПО_Позиции[n].ТКСчет="" and
     РПО_Позиции[n].ТПризн="" and
     РПО_Позиции[n].ТСумма=0: DeleteFrame(РПО_Позиции,n);
    else
     n=n+1;
  fi;
 od;
end;

Proc Iter_Validation;
 if РПО_PacketMode=False: Exit; fi;
 if РПО_Позиции<1: InsertFrame(РПО_Позиции,1); fi;
end;

Func ПроверитьРКО:L;
var tmp,tmp2:S;
 if Д<=1.1.100: Message("Введите дату",mtError); Template.Field="Д"; ^False; fi;
 if Валюта="":Message("Укажите валюту",mtError); Template.Field="Валюта"; ^False; fi;
 if Name_C(Валюта)=" ":Message("Неизвестный идентификатор валюты "+Валюта,mtError); Template.Field="Валюта"; ^False; fi;
 if Кр="": Message("Введите счет кассы",mtError); Template.Field="Кр"; ^False; fi;
 if Name_S(Кр)=" ": Message("Неизвестный счет кассы '"+Кр+"'",mtError); Template.Field="Кр"; ^False; fi;
 if Счет="": Message("Введите корреспондирующий счет",mtError); Template.Field="Счет"; ^False; fi;
 if Name_S(Счет)=" ": Message("Неизвестный корреспондирующий счет '"+Счет+"'",mtError); Template.Field="Счет"; ^False; fi;
 if Сумма=0: Message("Введите сумму",mtError); Template.Field="Сумма_"; ^False; fi;
 if Correspond(Счет,Кр)=False: Message("Счета "+Счет+"/"+Кр+" не могут корреспондировать",mtError); Template.Field="Счет"; ^False; fi;
 Раб.бюджет.ПроверитьПризнакиНачать;
 if Раб.бюджет.ПроверитьПризнакиОбязательные (Счет,Кр,Trim(По+" "+Призн+" "+Цель),"")=False: Template.Field="Призн_"; ^False; fi;
 if Раб.бюджет.ПроверитьПризнакиСвязанные (Счет,Кр,Trim(По+" "+Призн+" "+Цель),"")=False: Template.Field="Призн_"; ^False; fi;
 if Match(Счет,"*.?.208.??.???") or Match(Счет,"*.?.302.??.???"):
    tmp=Раб.Бюджет2005.ВзятьСловаИзНабораПоМаске(Trim(По+" "+Призн+" "+Цель)," ","КОСГУ.*","");
    if not tmp="":
       tmp2=Раб.Бюджет2005.ВзятьКодСчета(Счет,"","АН",False);
       tmp2=Раб.Бюджет2005.Соотв_Ан_КОСГУ("",tmp2);
       if not Match(tmp,"КОСГУ."+tmp2+"!"): Message("Аналитический признак "+tmp+" не соответствует КБК счета "+Счет,mtError); Template.Field="Призн_"; ^False; fi;
    fi;
    tmp=Раб.Бюджет2005.ВзятьСловаИзНабораПоМаске(Trim(По+" "+Призн+" "+Цель)," ","ФКР.*","");
    if not tmp="":
       tmp2=Раб.Бюджет2005.ВзятьКодСчета(Счет,"","БК",False);
       if not tmp="ФКР."+tmp2: Message("Аналитический признак "+tmp+" не соответствует КБК счета "+Счет,mtError); Template.Field="Призн_"; ^False; fi;
    fi;
 fi;
 if Match(Счет,"*.?.205.??.???"):
    tmp=Раб.Бюджет2005.ВзятьСловаИзНабораПоМаске(Trim(По+" "+Призн+" "+Цель)," ","КОСГУ.*","");
    if not tmp="":
       tmp2=Раб.Бюджет2005.ВзятьКодСчета(Счет,"","АН",False);
       tmp2=Раб.Бюджет2005.Соотв_Ан_КОСГУ("205",tmp2);
       if not Match(tmp,"КОСГУ."+tmp2+"!"): Message("Аналитический признак "+tmp+" не соответствует КБК счета "+Счет,mtError); Template.Field="Призн_"; ^False; fi;
    fi;
    tmp=Раб.Бюджет2005.ВзятьСловаИзНабораПоМаске(Trim(По+" "+Призн+" "+Цель)," ","КД.*","");
    if not tmp="":
       tmp2=Раб.Бюджет2005.ВзятьКодСчета(Счет,"","БК",False);
       if not tmp="КД."+tmp2: Message("Аналитический признак "+tmp+" не соответствует КБК счета "+Счет,mtError); Template.Field="Призн_"; ^False; fi;
    fi;
 fi;
 ^True;
end;

Func ПроверитьРКОPacket:L;
var n:i;
var tmp,tmp2:S;
 if Д<=1.1.100: Message("Введите дату",mtError); Template.Field="Д"; ^False; fi;
 if Валюта="":Message("Укажите валюту",mtError); Template.Field="Валюта"; ^False; fi;
 if Name_C(Валюта)=" ":Message("Неизвестный идентификатор валюты "+Валюта,mtError); Template.Field="Валюта"; ^False; fi;
 if Сумма=0: Message("Введите сумму",mtError); Template.Field="Сумма"; ^False; fi;
-- if Кр="": Message("Введите счет кассы",mtError); Template.Field="Кр"; ^False; fi;
-- if Счет="": Message("Введите корреспондирующий счет",mtError); Template.Field="Счет"; ^False; fi;
-- if Correspond(Счет,Кр)=False: Message("Счет "+Счет+"/"+Кр+" не могут корреспондировать",mtError); Template.Field="Счет"; ^False; fi;
 if PacketDelta<>0: Message("Отклонение между суммой РКО и суммой пакетного режима должно быть равным нулю",mtError); Template.Field="PacketDelta"; Template.Frame=РПО_Позиции; ^False; fi;
 НеПустаяТаблица;
 Раб.бюджет.ПроверитьПризнакиНачать;
 for n=1..РПО_Позиции do
  if РПО_Позиции[n].ТКСчет="": Message("Введите счет кассы",mtError); Template.Field="ТКСчет_"; Template.Frame=n; ^False; fi;
  if Name_S(РПО_Позиции[n].ТКСчет)=" ": Message("Неизвестный счет кассы '"+РПО_Позиции[n].ТКСчет+"'",mtError); Template.Field="ТКСчет_"; Template.Frame=n; ^False; fi;
  if РПО_Позиции[n].ТСчет="" : Message("Введите корреспондирующий счет",mtError); Template.Field="ТСчет_"; Template.Frame=n; ^False; fi;
  if Name_S(РПО_Позиции[n].ТСчет)=" ": Message("Неизвестный корреспондирующий счет '"+РПО_Позиции[n].ТСчет+"'",mtError); Template.Field="ТСчет_"; Template.Frame=n; ^False; fi;
  if Correspond(РПО_Позиции[n].ТСчет,РПО_Позиции[n].ТКСчет)=False: Message("Счета "+РПО_Позиции[n].ТСчет+"/"+РПО_Позиции[n].ТКСчет+" не могут корреспондировать",mtError); Template.Field="ТСчет_"; Template.Frame=n; ^False; fi;
  if РПО_Позиции[n].ТСумма=0: Message("Введите сумму",mtError); Template.Field="ТСумма"; Template.Frame=n; ^False; fi;
  if Раб.бюджет.ПроверитьПризнакиОбязательные(РПО_Позиции[n].ТСчет,РПО_Позиции[n].ТКСчет,РПО_Позиции[n].ТПризн,"")=False: Template.Field="ТПризн_"; Template.Frame=n; ^False; fi;
  if Раб.бюджет.ПроверитьПризнакиСвязанные(РПО_Позиции[n].ТСчет,РПО_Позиции[n].ТКСчет,РПО_Позиции[n].ТПризн,"")=False:Template.Field="ТПризн_"; Template.Frame=n; ^False; fi;
  if Match(РПО_Позиции[n].ТСчет,"*.?.208.??.???") or Match(РПО_Позиции[n].ТСчет,"*.?.302.??.???"):
     tmp=Раб.Бюджет2005.ВзятьСловаИзНабораПоМаске(РПО_Позиции[n].ТПризн," ","КОСГУ.*","");
     if not tmp="":
	tmp2=Раб.Бюджет2005.ВзятьКодСчета(РПО_Позиции[n].ТСчет,"","АН",False);
	tmp2=Раб.Бюджет2005.Соотв_Ан_КОСГУ("",tmp2);
	if not Match(tmp,"КОСГУ."+tmp2+"!"): Message("Аналитический признак "+tmp+" не соответствует КБК счета "+РПО_Позиции[n].ТСчет,mtError); Template.Field="ТПризн_"; Template.Frame=n; ^False; fi;
     fi;
     tmp=Раб.Бюджет2005.ВзятьСловаИзНабораПоМаске(РПО_Позиции[n].ТПризн," ","ФКР.*","");
     if not tmp="":
	tmp2=Раб.Бюджет2005.ВзятьКодСчета(РПО_Позиции[n].ТСчет,"","БК",False);
	if not tmp="ФКР."+tmp2: Message("Аналитический признак "+tmp+" не соответствует КБК счета "+РПО_Позиции[n].ТСчет,mtError); Template.Field="ТПризн_"; Template.Frame=n; ^False; fi;
     fi;
  fi;
  if Match(РПО_Позиции[n].ТСчет,"*.?.205.??.???"):
     tmp=Раб.Бюджет2005.ВзятьСловаИзНабораПоМаске(РПО_Позиции[n].ТПризн," ","КОСГУ.*","");
     if not tmp="":
	tmp2=Раб.Бюджет2005.ВзятьКодСчета(РПО_Позиции[n].ТСчет,"","АН",False);
	tmp2=Раб.Бюджет2005.Соотв_Ан_КОСГУ("205",tmp2);
	if not Match(tmp,"КОСГУ."+tmp2+"!"): Message("Аналитический признак "+tmp+" не соответствует КБК счета "+РПО_Позиции[n].ТСчет,mtError); Template.Field="ТПризн_"; Template.Frame=n; ^False; fi;
     fi;
     tmp=Раб.Бюджет2005.ВзятьСловаИзНабораПоМаске(РПО_Позиции[n].ТПризн," ","КД.*","");
     if not tmp="":
	tmp2=Раб.Бюджет2005.ВзятьКодСчета(РПО_Позиции[n].ТСчет,"","БК",False);
	if not tmp="КД."+tmp2: Message("Аналитический признак "+tmp+" не соответствует КБК счета "+РПО_Позиции[n].ТСчет,mtError); Template.Field="ТПризн_"; Template.Frame=n; ^False; fi;
     fi;
  fi;
 od;
 if РПО_Позиции<1: Iter_Validation; Message("Отсутствуют проводки с ненулевыми суммами",mtError); Template.Field="ТСчет"; Template.Frame=1; ^False; fi;
 ^True;
end;

Func ПолучитьНомер:I;
var Н1,Н2:I;
 if Д=1.1.100:
    Н1=РАБ.ОБЛ.СледСУчетомГодаФ(SelfCrd,"Номер","Д","UKey<>"+RecordToString(Current));
    Н2=РАБ.ОБЛ.СледСУчетомГода("РПО_ВЕДПОДОТЧЕТ","Номер","ДатаРКО");
   else
    Н1=РАБ.ОБЛ.СледСУчетомДатыФ(SelfCrd,"Номер","Д",Д,"UKey<>"+RecordToString(Current));
    Н2=РАБ.ОБЛ.СледСУчетомДаты("РПО_ВЕДПОДОТЧЕТ","Номер","ДатаРКО",Д);
 fi;
 ^Max(Н1,Н2);
end;

Proc ПолучитьДопАн(СчКасс:S; СчКорр:S; Iter:I);
var Справ,ПризнКБК,ТипКБК:S;
 if СчКасс="": Exit; fi;
 Справ=Раб.Бюджет2005.СписокСправ(СчКасс+"|"+СчКорр,0,"");
 if not Раб.Бюджет2005.ВзятьСловоИзНабораПоМаске(Справ,"|","ФКР.*|КД.*","|")="":
    ТипКБК=Раб.Бюджет2005.ТипКБКСчета(СчКорр);
    ПризнКБК=Раб.Бюджет2005.ВзятьКодСчета(СчКорр,ТипКБК,"КБК",False);
    if not ПризнКБК="" and (ТипКБК="ФКР" or ТипКБК="КД"):
       ПризнКБК=ТипКБК+"."+ПризнКБК;
       if Iter=0:
	  Призн=Раб.Бюджет2005.УдалитьСловоИзНабораПоМаске(Призн," ","ФКР.*|КД.*","|");
	  Цель=Раб.Бюджет2005.УдалитьСловоИзНабораПоМаске(Цель," ","ФКР.*|КД.*","|");
	  Цель=Раб.Бюджет2005.Объединить(Цель,ПризнКБК," ");
	 else
	  РПО_Позиции[Iter].ТПризн=Раб.Бюджет2005.УдалитьСловоИзНабораПоМаске(РПО_Позиции[Iter].ТПризн," ","ФКР.*|КД.*","|");
	  РПО_Позиции[Iter].ТПризн=Раб.Бюджет2005.Объединить(РПО_Позиции[Iter].ТПризн,ПризнКБК," ");
       fi;
    fi;
 fi;
 if not Раб.Бюджет2005.ВзятьСловоИзНабораПоМаске(Справ,"|","КОСГУ.*","")="":
    ПризнКБК=Раб.КБК.ВзятьЭКСчета(СчКорр,"");
    if not ПризнКБК="":
       ПризнКБК="КОСГУ."+ПризнКБК;
       if Iter=0:
	  Призн=Раб.Бюджет2005.УдалитьСловоИзНабораПоМаске(Призн," ","КОСГУ.*","");
	  Цель=Раб.Бюджет2005.УдалитьСловоИзНабораПоМаске(Цель," ","КОСГУ.*","");
	  Цель=Раб.Бюджет2005.Объединить(Цель,ПризнКБК," ");
	 else
	  РПО_Позиции[Iter].ТПризн=Раб.Бюджет2005.УдалитьСловоИзНабораПоМаске(РПО_Позиции[Iter].ТПризн," ","КОСГУ.*","");
	  РПО_Позиции[Iter].ТПризн=Раб.Бюджет.ДобавитьПризнак(РПО_Позиции[Iter].ТПризн,ПризнКБК);
       fi;
    fi;
 fi;
end;

Proc ОбработатьНомер (vНомерБум:S);
var tmp:i;
 tmp=Int(vНомерБум);
 if tmp=0:
    tmp=ПолучитьНомер;
 fi;
 if not Номер=tmp:
    Номер=tmp;
    if Раб.Бюджет2005.Сетевая: EditorApply; fi;
 fi;
end;

Proc ОбработатьДату (prevДата:D; newДата:D);
var prevYYYY,newYYYY:I;
 prevYYYY=Year(prevДата);
 newYYYY=Year(newДата);
 if prevYYYY=newYYYY: Exit; fi;
 if not prevYYYY=100:
    if EnqOkCancel("Изменился отчетный год ("+Str(prevYYYY)+") документа, получить номер документа соответствуещего года ("+Str(newYYYY)+") ?",mtWarning)=cmCancel: Exit; fi;
 fi;
 НомерБум=Str(ПолучитьНомер);
 ОбработатьНомер(НомерБум);
 Template.Field="НомерБум";
end;
--Процедуры и функции -------------			      
--
--
--Обработчики событий полей шаблона-----
Func Рекв_onEnter(FieldName: String; Iter: Integer): logical;
var Rec:Record;
 Rec=OpenCardFile("Контрагент","Наше",Рекв,crdRecordOnly);
 if rec=nil: ^False; fi;
 Рекв=Rec;
 РПО_ДолжнРук=Рекв.ДолжнРук;
 РПО_ФИОРук=Рекв.ФИОРук;
 РПО_ДолжнБух=Рекв.ДолжнБух;
 РПО_ФИОБух=Рекв.ФИОБух;
 РПО_ФИОКасс=Рекв.ФИОКАСС;
 ^False;
end;

Func НаимПодр_onEnter (Field:S; Iter:I):L;
 Template.Field="ПО";
 ^False;
end;

Proc НомерБум_OnExit(FieldName: String; Iter: Integer);
 ОбработатьНомер(НомерБум);
end;

Func НомерБум_OnLookup(Sect: String; Row: Integer; Col: Integer; Cur: String): String;
 Template.HideEditor(False);
 НомерБум=Str(ПолучитьНомер);
 ОбработатьНомер(НомерБум);
 ^Cur;
end;

Func Д_OnVerify(FieldName: String; Iter: Integer; Value: Date):Logical;
var prevД:D;
 prevД=Д;
 Д=Value;
 ОбработатьДату(prevД,Д);
 Return True;
end;

Func Д_OnLookup(Sect:S; Row:I; Col:I; Cur:S) :S;
var tmp:d;
var prevД:D;
 Template.HideEditor(False);
 tmp=Calendar;
 if tmp=1.1.100: ^Cur; fi;
 prevД=Д;
 Д=tmp;
 ОбработатьДату(prevД,Д);
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);
 od;
 n=Alternate("Валюта документа",Buf,-1,SearchInArray(Buf,Валюта),12);
 if n=0: ^False; fi;
 Валюта=Buf[n];
 Return False;
end;

Func ПО_onEnter(Field:S; Iter:I):L;
var tmp :s;
 tmp=ВыборПризнака("П.*");
 if tmp="": ^false; fi;
 ПО=tmp;
 ^false;
end;

Func Счет_onEnter(Field:S; Iter:I):L;
var nn,n:i;
var tmp :S;
var Mask:S;
 if not РПО_Packetmode:
    if Кр="": Message("Введите счет кредита",mtError); Template.Field="Кр"; ^False; fi;
    tmp=ВыборКоррСчета(Кр,True,StoreСчет);
    if tmp="": ^False; fi;
    Счет=Tmp;
    StoreСчет=tmp;
    if Кр<>"":
       Mask=Раб.Бюджет.НаборПризнаков(Счет,Кр,"П.*");
       Призн=Раб.Бюджет.МухиОтКотлет(Призн,Mask);
       Цель=Раб.Бюджет.МухиОтКотлет(Цель,Mask);
    fi;
    ПолучитьДопАн(Кр,Счет,0);
   else
    ClearVariable(Buf);
    for Iter=1..РПО_Позиции do
     if not РПО_Позиции[Iter].ТСчет="":
	AddInArray(Buf,True,False,Раб.Бюджет2005.ВзятьКодСчета(РПО_Позиции[Iter].ТСчет,"","СЧ9",False));
     fi;
    od;
    nn=LengthOfArray(Buf);
    if nn=0: Message("Заполните счет дебета в расшифровке",mtError); Template.Field="ТСчет"; Template.Frame=1; ^False; fi;
    Счет="";
    for n=1..nn do
     Счет=Раб.Бюджет2005.Объединить(Счет,Buf[n],"; ");
    od;
 fi;
 ^false;
end;

Func Призн_onEnter(Field:S; Iter:I):L;
var Mask,tmp :S;
 if Кр="": Message("Введите счет кредита",mtError); Template.Field="Кр"; ^False; fi;
 if Счет="": Message("Введите счет дебета",mtError); Template.Field="Счет"; ^False; fi;
 Mask=Раб.Бюджет.НаборПризнаков(Счет,Кр,"П.*");
 if Mask="": Message("Аналитические признаки не требуются"); ^False; fi;
 tmp=ВыборПризнака(Mask);
 if tmp="": ^False; fi;
 Призн=Раб.Бюджет.ДобавитьПризнак(Призн,tmp);
 Цель=Раб.Бюджет.УдалитьПризнак(Цель,tmp);
 if Match(tmp,"Ф.*") or Match(tmp,"МОЛ.*") or Match(tmp,"К.*"): Ф_Инфо(tmp); fi;
 ^false;
end;

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

Func КР_onEnter(Field:S; Iter:I):L;
var tmp :S;
var Mask:S;
 if not КР="": tmp=КР; else tmp=StoreКСчет; fi;
 tmp=ВыборСчета(МаскаСчКас,False,tmp);
 if tmp="": ^false; fi;
 Кр=tmp;
 StoreКСчет=tmp;
 if Correspond(Счет,tmp)=False: Счет=""; fi;
 if Счет<>"":
    Mask=Раб.Бюджет.НаборПризнаков(Счет,Кр,"П.*");
    Призн=Раб.Бюджет.МухиОтКотлет(Призн,Mask);
    Цель=Раб.Бюджет.МухиОтКотлет(Цель,Mask);
 fi;
 ^false;
end;

Func Цель_onEnter(Field:S; Iter:I):L;
var Mask,tmp :S;
 if Кр="": Message("Введите счет кредита",mtError); Template.Field="Кр"; ^False; fi;
 if Счет="": Message("Введите счет дебета",mtError); Template.Field="Счет"; ^False; fi;
 Mask=Раб.Бюджет.НаборПризнаков(Счет,Кр,"П.*");
 if Mask="": Message("Аналитические признаки не требуются"); ^False; fi;
 tmp=ВыборПризнака(Mask);
 if tmp="": ^False; fi;
 Цель=Раб.Бюджет.ДобавитьПризнак(Цель,tmp);
 Призн=Раб.Бюджет.УдалитьПризнак(Призн,tmp);
 if Match(tmp,"Ф.*") or Match(tmp,"МОЛ.*"): Ф_Инфо(tmp); fi;
 ^false;
end;

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

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

Func Add_Iter (Field:S; Iter:I):L;
var Iter_:I;
 if Проводить: ^False; fi;
 Iter_=Iter;
 Iter=InsertFrame(РПО_Позиции,Iter+1);
 if Field="AA":
    РПО_Позиции[Iter].ТСчет=РПО_Позиции[Iter_].ТСчет;
    РПО_Позиции[Iter].ТКСчет=РПО_Позиции[Iter_].ТКСчет;
    РПО_Позиции[Iter].ТПризн=РПО_Позиции[Iter_].ТПризн;
    РПО_Позиции[Iter].ТСумма=РПО_Позиции[Iter_].ТСумма;
    РПО_Позиции[Iter].ТПримеч=РПО_Позиции[Iter_].ТПримеч;
 fi;
 ^false;
end;

Func Del_Iter (Field:S; Iter:I):L;
 if Проводить: ^False; fi;
 if РПО_Позиции>1: DeleteFrame(РПО_Позиции,Iter); else DeleteFrame(РПО_Позиции,Iter); InsertFrame(РПО_Позиции,Iter); fi;
 ^false;
end;

Func ТСчет_onEnter(Field:S; Iter:I):L;
var tmp :S;
var Mask:S;
 tmp=ВыборКоррСчета(РПО_Позиции[Iter].ТКСчет,True,StoreСчет);
 if tmp="": ^False; fi;
 РПО_Позиции[Iter].ТСчет=Tmp;
 StoreСчет=tmp;
 if РПО_Позиции[Iter].ТКСчет<>"":
    Mask=Раб.Бюджет.НаборПризнаков(РПО_Позиции[Iter].ТСчет,РПО_Позиции[Iter].ТКСчет,"");
    РПО_Позиции[Iter].ТПризн=Раб.Бюджет.МухиОтКотлет(РПО_Позиции[Iter].ТПризн,Mask);
 fi;
 ПолучитьДопАн(РПО_Позиции[Iter].ТКСчет,РПО_Позиции[Iter].ТСчет,Iter);
 ^false;
end;

Func ТКСчет_onEnter(Field:S; Iter:I):L;
var tmp :S;
var Mask:S;
 if not РПО_Позиции[Iter].ТКСчет="": tmp=РПО_Позиции[Iter].ТКСчет; else tmp=StoreКСчет; fi;
 tmp=ВыборСчета(МаскаСчКас,False,tmp);
 if tmp="": ^false; fi;
 if Correspond(РПО_Позиции[Iter].ТСчет,tmp)=False: РПО_Позиции[Iter].ТСчет=""; fi;
 РПО_Позиции[Iter].ТКСчет=tmp;
 StoreКСчет=tmp;
 if РПО_Позиции[Iter].ТСчет<>"":
    Mask=Раб.Бюджет.НаборПризнаков(РПО_Позиции[Iter].ТСчет,РПО_Позиции[Iter].ТКСчет,"");
    РПО_Позиции[Iter].ТПризн=Раб.Бюджет.МухиОтКотлет(РПО_Позиции[Iter].ТПризн,Mask);
 fi;
 ^false;
end;

Func ТПризн_onEnter(Field:S; Iter:I):L;
var Mask,tmp :S;
 if РПО_Позиции[Iter].ТКСчет="": Message("Введите счет кредита",mtError); Template.Field="ТКСчет"; Template.Frame=Iter; ^False; fi;
 if РПО_Позиции[Iter].ТСчет="": Message("Введите счет дебета",mtError); Template.Field="ТСчет"; Template.Frame=Iter; ^False; fi;
 Mask=Раб.Бюджет.НаборПризнаков(РПО_Позиции[Iter].ТСчет,РПО_Позиции[Iter].ТКСчет,"");
 if Mask="": Message("Аналитические признаки не требуются"); ^False; fi;
 tmp=ВыборПризнака(Mask);
 if tmp="": ^False; fi;
 РПО_Позиции[Iter].ТПризн=Раб.Бюджет.ДобавитьПризнак(РПО_Позиции[Iter].ТПризн,tmp);
 if ФИО="":
    if Match(tmp, "Ф.*") or Match(tmp, "МОЛ.*"): Ф_Инфо(tmp); fi;
 fi;
 ^false;
end;

Proc ТПризн_OnExit(FieldName: String; Iter: Integer);
 РПО_Позиции[Iter].ТПризн=Раб.Бюджет2005.УдалитьСловоИзНабора_Диалог2(РПО_Позиции[Iter].ТПризн," ","Name_A");
end;
--Обработчики событий полей шаблона-----
--
--
--Обработчики событий объектов шаблона-----
Proc cbПроводить_onChange (Obj:S);
var Flag:L;
var n:i;
 if Проводить=False:
    n=EnqOkCancel("Вы уверены что хотите исключить данный документ из обработки ?");
    if n=cmCancel: Flag=True; else Flag=False; fi;
   else
    if РПО_PacketMode: Flag=ПроверитьРКОPacket; else Flag=ПроверитьРКО; fi;
 fi;
 Проводить=Flag; cbПроводить.State=Проводить;
 EditorApply;
 Оформление;
end;

Proc cbPacketMode_onChange(Obj:S);
var tmp:i;
var Flag:L;
 if РПО_PacketMode=False:
    tmp=EnqOkCancel("Выход из пакетного режима приведет к потери данных 'пакетного режима', вы уверены ?");
    if tmp=cmCancel: Flag=True;  else Flag=False; ClearVariable(РПО_Позиции); fi;
   else
    Flag=True;
    InsertFrame(РПО_Позиции,РПО_Позиции+1);
    РПО_Позиции[РПО_Позиции].ТСчет=Счет;
    РПО_Позиции[РПО_Позиции].ТКСчет=Кр;
    РПО_Позиции[РПО_Позиции].ТПризн=Trim(По+" "+Призн);
    РПО_Позиции[РПО_Позиции].ТПризн=Trim(РПО_Позиции[РПО_Позиции].ТПризн+" "+Цель);
    Template.Field="ТСчет"; Template.Frame=1;
 fi;
 РПО_PacketMode=Flag;
 cbPacketMode.State=РПО_PacketMode;
 Оформление;
end;

Proc cbPrintPacket_OnChange(Sender: String);
 Оформление;
end;

Proc btnПечать_OnClick(Sender: String);
 if РПО_PacketMode and PrintPacket:
    if PrintPacketNP:
       Раб.Настр_Печать.Prn("","","RPO_0310002_001.cfg","",1);
       if EnqOkCancel("Вставте лист для продожения печати.")=cmCancel: Exit; fi;
       Раб.Настр_Печать.Prn("","","RPO_0310002_002.cfg","",1);
      else
       Раб.Настр_Печать.Prn("","","RPO_0310002_000.cfg","",1);
    fi;
   else
    Раб.Настр_Печать.Prn("","","RPO_0310002_001.cfg","",1);
 fi;
end;

Proc btnВзнос_OnClick(Sender: String);
var OWA,n,OA,n2,Iter,z,zz:I;
var Key,ТипБК,БК,ЭК,ПГР,Источник,КодСч,СчДеб,СчКре,tmp:S;
var UKey:Record;
var Flag210_03:L;
 ClearVariable(Buf);
 ClearVariable(BufСум);
 --
 Flag210_03=False;
 if РПО_Packetmode:
    for Iter=1..РПО_Позиции do
     if not РПО_Позиции[Iter].ТСчет="" and not РПО_Позиции[Iter].ТКСчет="":
	if Match(РПО_Позиции[Iter].ТСчет,"*.?.210.03.*"): Flag210_03=True; fi;
	if not Match(РПО_Позиции[Iter].ТСчет,"???.01.05.02.??.??.????.?.???.??.*"):
	   ТипБК=Раб.Бюджет2005.ТипКБКСчета(РПО_Позиции[Iter].ТСчет);
	   БК=Раб.Бюджет2005.ВзятьКодСчета(РПО_Позиции[Iter].ТСчет,ТипБК,"КБК",False);
	   ЭК=Раб.Бюджет2005.ВзятьКодСчета(РПО_Позиции[Iter].ТСчет,ТипБК,"КОСГУ",False);
	   if (ТипБК="ФКР" and not Раб.Бюджет2005.MatchMask("."+ЭК,Раб.Бюджет2005.МаскаРасхСч)) or
	      (ТипБК="КД" and not Раб.Бюджет2005.MatchMask("."+ЭК,Раб.Бюджет2005.МаскаДоходСч)) or
	      (ТипБК="КИФД" and not Раб.Бюджет2005.MatchMask("."+ЭК,Раб.Бюджет2005.МаскаДефицитСч)):  
	      ЭК=Раб.Бюджет.ВзятьПризнакИзНабораПоМаске(РПО_Позиции[Iter].ТПризн,"КОСГУ.*"," ");
	      ЭК=SubStr(ЭК,7,255);
	   fi;
	  else
	   ЭК=Раб.Бюджет.ВзятьПризнакИзНабораПоМаске(РПО_Позиции[Iter].ТПризн,"КОСГУ.*"," ");
	   ЭК=SubStr(ЭК,7,255);
	   БК=Раб.Бюджет.ВзятьПризнакИзНабораПоМаске(РПО_Позиции[Iter].ТПризн,"ФКР.*"," "); БК=SubStr(БК,5,255);
	   if БК="": БК=Раб.Бюджет.ВзятьПризнакИзНабораПоМаске(РПО_Позиции[Iter].ТПризн,"КД.*"," "); БК=SubStr(БК,4,255); fi;
	   if БК="": БК=Раб.Бюджет.ВзятьПризнакИзНабораПоМаске(РПО_Позиции[Iter].ТПризн,"КИФД.*"," "); БК=SubStr(БК,6,255); fi;
	   ТипБК=Раб.Бюджет2005.ТипКБКСчета(БК);
	fi; --if Match(РПО_Позиции[Iter].ТСчет,"*.?.304.05.*"):
	ПГР=Раб.Бюджет.ВзятьПризнакИзНабораПоМаске(РПО_Позиции[Iter].ТПризн,"ПГР.*"," "); ПГР=SubStr(ПГР,5,255);
	if not Pos(".",ПГР)=0: ПГР=SubStr(ПГР,1,Pos(".",ПГР)-1); fi;
	if not ПГР="": ПГР="п."+ПГР; fi;
	Key=Раб.Бюджет2005.Объединить(БК,ЭК,".");
	Key=Раб.Бюджет2005.Объединить(Key,ПГР," ");
	z=SearchInArray(Buf,Key,True);
	if z=-1:
	   z=InsertInArraySort(Buf,Key);
	   InsertInArray(BufСум,z,РПО_Позиции[Iter].ТСумма);
	  else
	   BufСум[z]=BufСум[z]+РПО_Позиции[Iter].ТСумма;
	fi;
     fi; --if not РПО_Позиции[Iter].ТСчет="" and not РПО_Позиции[Iter].ТКСчет="":
    od; --for Iter=1..РПО_Позиции do
   else
    if not Счет="" and not КР="":
       if Match(Счет,"*.?.210.03.*"): Flag210_03=True; fi;
       if not Match(Счет,"???.01.05.02.??.??.????.?.???.??.*"):
	  ТипБК=Раб.Бюджет2005.ТипКБКСчета(Счет);
	  БК=Раб.Бюджет2005.ВзятьКодСчета(Счет,ТипБК,"КБК",False);
	  ЭК=Раб.Бюджет2005.ВзятьКодСчета(Счет,ТипБК,"КОСГУ",False);
	  if (ТипБК="ФКР" and not Раб.Бюджет2005.MatchMask("."+ЭК,Раб.Бюджет2005.МаскаРасхСч)) or
	     (ТипБК="КД" and not Раб.Бюджет2005.MatchMask("."+ЭК,Раб.Бюджет2005.МаскаДоходСч)) or
	     (ТипБК="КИФД" and not Раб.Бюджет2005.MatchMask("."+ЭК,Раб.Бюджет2005.МаскаДефицитСч)):
	     ЭК=Раб.Бюджет.ВзятьПризнакИзНабораПоМаске(Призн+" "+Цель,"КОСГУ.*"," ");
	     ЭК=SubStr(ЭК,7,255);
	  fi;
	 else
	  ЭК=Раб.Бюджет.ВзятьПризнакИзНабораПоМаске(Призн+" "+Цель,"КОСГУ.*"," ");
	  ЭК=SubStr(ЭК,7,255);
	  БК=Раб.Бюджет.ВзятьПризнакИзНабораПоМаске(Призн+" "+Цель,"ФКР.*"," "); БК=SubStr(БК,5,255);
	  if БК="": БК=Раб.Бюджет.ВзятьПризнакИзНабораПоМаске(Призн+" "+Цель,"КД.*"," "); БК=SubStr(БК,4,255); fi;
	  if БК="": БК=Раб.Бюджет.ВзятьПризнакИзНабораПоМаске(Призн+" "+Цель,"КИФД.*"," "); БК=SubStr(БК,6,255); fi;
	  ТипБК=Раб.Бюджет2005.ТипКБКСчета(БК);
       fi; --if Match(РПО_Позиции[Iter].ТСчет,"*.?.304.05.*"):
    fi; --if not Счет="" and not КР="":
    ПГР=Раб.Бюджет.ВзятьПризнакИзНабораПоМаске(Призн+" "+Цель,"ПГР.*"," "); ПГР=SubStr(ПГР,5,255);
    if not Pos(".",ПГР)=0: ПГР=SubStr(ПГР,1,Pos(".",ПГР)-1); fi;
    if not ПГР="": ПГР="п."+ПГР; fi;
    Key=Раб.Бюджет2005.Объединить(БК,ЭК,".");
    Key=Раб.Бюджет2005.Объединить(Key,ПГР," ");
    Buf[1]=Key;
    BufСум[1]=Сумма;
 fi; --if РПО_Packetmode:
 --
 zz=LengthOfArray(Buf);
 Источник="";
 for z=1..zz do
  Источник=Раб.Бюджет2005.Объединить(Источник,Buf[z]+if(zz=1,"","="+Str(BufСум[z],2)),"; ");
 od; --for z=1..zz do
 --
 if Flag210_03:
    Message("Выберите счет");
    КодСч=Раб.КБК.Список("(???.01.05.02.*&(*.?.201.?1.51*|*.?.201.?7.61*))|*.?.304.05.*|*.?.210.02.*","","СЧ5");
    if КодСч="": Exit; fi;
 fi;
 --
 OWA=OpenWorkArea("ВЗНОСНАЛ","","1=0");
 Try
  Try
   BeginChanging(OWA);
   n=InsertRecord(OWA);
   UKey=GetRecordKey(OWA,n);
   n=PutFieldI(OWA,n,"НОМЕР",Раб.Обл.СледСУчетомГода("ВЗНОСНАЛ","Номер","Дата"));
   n=PutFieldS(OWA,n,"НОМЕРБУМ",Str(GetFieldI(OWA,n,"НОМЕР")));
   n=PutFieldR(OWA,n,"РЕКВ",Рекв);
   n=PutFieldR(OWA,n,"БАНК",Раб.Бюджет2005.БанкСчет(Рекв,False));
   n=PutFieldR(OWA,n,"РЕКВП",Рекв);
   n=PutFieldR(OWA,n,"БАНКП",GetFieldR(OWA,n,"БАНК"));
   n=PutFieldD(OWA,n,"ДАТА",Д);
   n=PutFieldN(OWA,n,"СУММА",Сумма);
   n=PutFieldS(OWA,n,"ИСТОЧНИК",Источник);
   OA=OpenArray(OWA,n,"РПО_ПОЗИЦИИ","","1=0");
   if РПО_Packetmode:
      for Iter=1..РПО_ПОЗИЦИИ do
       if Match(РПО_Позиции[Iter].ТСчет,"*.?.210.03.56*") and not РПО_Позиции[Iter].ТКСчет="":
	  if Match(КодСч,"201.??"):
	     СчДеб=Раб.Бюджет2005.ВзятьКодСчета(РПО_Позиции[Iter].ТКСчет,"","ВД",True)+"."+КодСч+".510"; --Банковский счет
	    else
	     ТипБК=Раб.Бюджет2005.ТипКБКСчета(РПО_Позиции[Iter].ТСчет);
	    if (ТипБК="КД" and КодСч="210.02") or (ТипБК="ФКР" and not КодСч="210.02"):
		ЭК=Раб.Бюджет.ВзятьПризнакИзНабораПоМаске(РПО_Позиции[Iter].ТПризн,"КОСГУ.*"," "); --Пытаемся восстановить КОСГУ из аналитики
		ЭК=SubStr(ЭК,7,255);
		СчДеб=Раб.Бюджет2005.ВзятьКодСчета(РПО_Позиции[Iter].ТСчет,ТипБК,"ВД",True)+"."+КодСч+"."+ЭК; --Банковский счет
	       else
		Message("Уточните счет дебета");
		СчДеб=AccountElection("*."+Раб.Бюджет2005.ВзятьКодСчета(РПО_Позиции[Iter].ТСчет,"","ВД",False)+"."+КодСч+".*");
	     fi;
	  fi;
	  СчКре=Раб.Бюджет2005.ВзятьКодСчета(РПО_Позиции[Iter].ТСчет,"","АН",True)+".660"; --Счета налички
	  if not Name_S(СчДеб)=" " and not Name_S(СчКре)=" ": 
	     tmp=Раб.Бюджет2005.СписокСправ(СчДеб+"|"+СчКре,0,"");
	     tmp=Раб.Бюджет2005.ПривестиВСоотвНаборСлов(РПО_Позиции[Iter].ТПризн," ",tmp,"|");
	    else
	     tmp=РПО_Позиции[Iter].ТПризн;
	  fi;
	  n2=InsertRecord(OA);
	  n2=PutFieldN(OA,n2,"СУММА",РПО_Позиции[Iter].ТСумма);
	  n2=PutFieldS(OA,n2,"ПРИЗН",РПО_Позиции[Iter].ТПризн);
	  n2=PutFieldS(OA,n2,"ПРИМЕЧ",РПО_Позиции[Iter].ТПримеч);
	  n2=PutFieldS(OA,n2,"СЧДЕБ",СчДеб);
	  n2=PutFieldS(OA,n2,"СЧКРЕ",СчКре);
	fi; --if Match(РПО_Позиции[Iter].ТСчет,"*.?.210.03.56*") and not РПО_Позиции[Iter].ТКСчет="":
      od;
     else
      if Match(Счет,"*.?.210.03.56*") and not КР="":
	 if Match(КодСч,"201.??"):
	    СчДеб=Раб.Бюджет2005.ВзятьКодСчета(КР,"","ВД",True)+"."+КодСч+".510"; --Банковский счет
	   else
	    ТипБК=Раб.Бюджет2005.ТипКБКСчета(Счет);
	    if (ТипБК="КД" and КодСч="210.02") or (ТипБК="ФКР" and not КодСч="210.02"):
	       ЭК=Раб.Бюджет.ВзятьПризнакИзНабораПоМаске(Призн+" "+Цель,"КОСГУ.*"," ");
	       ЭК=SubStr(ЭК,7,255);
	       СчДеб=Раб.Бюджет2005.ВзятьКодСчета(Счет,ТипБК,"ВД",True)+"."+КодСч+"."+ЭК; --Банковский счет
	      else
	       Message("Уточните счет дебета");
	       СчДеб=AccountElection("*."+Раб.Бюджет2005.ВзятьКодСчета(Счет,"","ВД",False)+"."+КодСч+".*");
	    fi;
	 fi; --if Match(КодСч,"201.??"):
	 СчКре=Раб.Бюджет2005.ВзятьКодСчета(Счет,"","АН",True)+".660"; --Счета налички
	 if not Name_S(СчДеб)=" " and not Name_S(СчКре)=" ":
	    tmp=Раб.Бюджет2005.СписокСправ(СчДеб+"|"+СчКре,0,"");
	    tmp=Раб.Бюджет2005.ПривестиВСоотвНаборСлов(Раб.Бюджет2005.Объединить(Раб.Бюджет2005.Объединить(Призн,Цель," "),ПО," ")," ",tmp,"|");
	   else
	    tmp=Раб.Бюджет2005.Объединить(Раб.Бюджет2005.Объединить(Призн,Цель," "),ПО," ");
	 fi;
	 n2=InsertRecord(OA);
	 n2=PutFieldN(OA,n2,"СУММА",Сумма);
	 n2=PutFieldS(OA,n2,"ПРИЗН",tmp);
	 n2=PutFieldS(OA,n2,"ПРИМЕЧ",Осн);
	 n2=PutFieldS(OA,n2,"СЧДЕБ",СчДеб);
	 n2=PutFieldS(OA,n2,"СЧКРЕ",СчКре);
      fi; --if Match(Счет,"*.?.210.03.56*") and not РПО_Позиции[Iter].КР="":
   fi; --if РПО_Packetmode:
   CloseWorkArea(OA);
   EndChanging(OWA);
  Except
   CancelChanging(OWA);
   Raise;
  end;
 Finally
  CloseWorkArea(OWA);
 end;
 Message("Объявление на взнос наличными сформировано");
 if Д < 1.11.2014:
   OpenBlank("ДОКУМЕНТЫ.БАНК.ВЗНОС",True,UKey);
 else
   OpenBlank("ДОКУМЕНТЫ.БАНК.ВЗНОС_3352_У",True,UKey);
 fi;
end;
--Обработчики событий объектов шаблона-----
--
--
--Обработчики событий шаблона -----
Proc Template_onOpen(Create: Logical);
 Раб.Настр_Печать.Cfg("","RPO_0310002_000.cfg");
 FlagInit=True;
end;

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

Proc Template_onRead;
 if НоваяЗапись:
    if Номер=0: Д=ToDay; fi;
    Номер=ПолучитьНомер;
    НомерБум=Str(Номер);
    if Рекв=nil:
       РЕКВ=Раб.Бюджет2005.НашРекв;
       if not РЕКВ=nil:
	  РПО_ДолжнРук=Рекв.ДолжнРук;
	  РПО_ФИОРук=Рекв.ФИОРук;
	  РПО_ДолжнБух=Рекв.ДолжнБух;
	  РПО_ФИОБух=Рекв.ФИОБух;
	  РПО_ФИОКасс=Рекв.ФИОКАСС;
       fi;
    fi;
    if Кр="": Кр=StoreКСчет; fi;
    Проводить=False;
    if Раб.Бюджет2005.Сетевая: EditorApply; fi;
 fi;
 if not FlagInit: Оформление; fi;
 НеПустаяТаблица;
 if Валюта="" and canUpdate(SelfCrd):
    Валюта=BaseCurrency;
    EditorApply;
 fi;
end;

Func Template_onValidate: Logical;
 if Валюта="": Валюта=BaseCurrency; fi;
 ^True;
end;
--Обработчики событий шаблона -----
--




КОНЕЦ
