-- Шаблон создан мастером
-- 06.07.2015 12:56:22
--
БланкСШаблоном "Расшифровка сумм неиспользованных средств", РЕДАКТОР РПО_РАСШИФР_НЕИСП_СРЕДСТВ;


var Mas[]: S;

var A:S=if(Учитывать,"","+");
var D:S=if(Учитывать,"","-");

var НоваяЗапись:L=(CurrentState=crdusInserted);
var SelfCrd:S="РПО_РАСШИФР_НЕИСП_СРЕДСТВ";

var Призн_[]: String = Позиции[$].Призн;
cbПроводить  :Object;
cbУчитывать  :Object;
edДатаОпер   :Object;

var nS:I=6;
var БО: String;
var ср: String;
var ВидОперации_:S=if(ВидОперации=1:"Внесение наличных"|ВидОперации=2:"Не использованные по карте"|True:"");


--var SelfCfg:S="Rpo_заявл_средств_на_карту.cfg";
var BufField[]:     String;
var BufColorBg[]:   integer;
var BufColorFo[]:   integer;

s1: Section;
s2: Section;
s3: Section;
s4: Section;
s5: Section;
s6: Section;
s7: Section;

func проверить :logical;
var i: Integer;
var num: Integer;
   if номер = 0:   Message("Не заполнено поле 'номер расшифровки'",mtError); ^false; fi;
   if ВидОперации_ = "":   Message("Не указан вид операции",mtError); ^false; fi;
   if ДатаДок = 1.1.100: Message("Не заполнено поле 'дата заявки'",mtError); ^false; fi;
   if ДатаПодписи = 1.1.100: Message("Не заполнено поле 'дата подписания заявки'",mtError); ^false; fi;
   if сумДок<>суммИт:  Message("Итоговоя сумма не совпадает с полем 'Денежные средства в сумме'",mtError);^false; fi;
   if ВидСредств = "":	 Message("Не заполнено поле 'вид средств'",mtError);^false; fi;
   if ФИОРук = "":  Message("Не выбран руководитель",mtError);^ false;fi;
   if ФИОБух = "":  Message("Не выбран бухгалтер",mtError);^ false; fi;
   if ДатаДок>ДатаПодписи: Message("Дата документа не может быть позже даты подписания",mtError); ^false;fi;
   if сумДок = 0:  Message("Поле 'денежные средства в сумме' не заполнено",mtError); ^false;  fi;


num = ПОЗИЦИИ;
for i=1..num do
      if ПОЗИЦИИ[i].БК ="": Message("Поле 'Бк' не заполнено",mtError);^ false; fi;
      if ПОЗИЦИИ[i].СуммАп =0: Message("Поле 'сумма' не заполненно",mtError);^ false; fi;
      if not Correspond(ПОЗИЦИИ[i].СчДеб,ПОЗИЦИИ[i].СчКре): Message("Счет дебета, счет кредита не могут корреспондировать(строка "+str(i)+")",mtError);^ false; fi;
od;

Раб.Бюджет.ПроверитьПризнакиНачать;
 for i=1..num do
  if ПОЗИЦИИ[i].СчДеб="": Message("Введите счет дебета ",mtError);  ^False; fi;
  if ПОЗИЦИИ[i].СчКре="": Message("Введите счет кредита",mtError); ^False; fi;
  if Раб.Бюджет.ПроверитьПризнакиОбязательные(ПОЗИЦИИ[i].СчДеб,ПОЗИЦИИ[i].СчКре,ПОЗИЦИИ[i].Призн,"")=False:  ^False; fi;
  if Раб.Бюджет.ПроверитьПризнакиСвязанные(ПОЗИЦИИ[i].СчДеб,ПОЗИЦИИ[i].СчКре,ПОЗИЦИИ[i].Призн,"")=False :  ^False; fi;
 od;
 Раб.КСА.Начать;

 for i=1..Позиции do
  Раб.КСА.Добавить(Позиции[i].СчДеб);
  Раб.КСА.Добавить(Позиции[i].СчКре);
  Раб.КСА.Добавить(Раб.Бюджет2005.ВзятьКодСчета(Позиции[i].СчДеб,"","ВД",True)+".ЗАБ.00."+Раб.Бюджет2005.ВзятьКодСчета(Позиции[i].СчДеб,"","КОСГУ",False));
  Раб.КСА.Добавить(Раб.Бюджет2005.ВзятьКодСчета(Позиции[i].СчКре,"","ВД",True)+".ЗАБ.КР."+Раб.Бюджет2005.ВзятьКодСчета(Позиции[i].СчКре,"","КОСГУ",False));
 od;
 if Раб.КСА.Закончить(True): Message("Добавление новых счетов закончено"); fi;

 ^true;
end;

Func ПолучитьНомер:I;
var Н1:I;
 if ДатаДок=1.1.100:
    Н1=РАБ.ОБЛ.СледСУчетомГодаФ(SelfCrd,"Номер","ДатаДок","UKey<>"+RecordToString(Current));
   else
    Н1=РАБ.ОБЛ.СледСУчетомДатыФ(SelfCrd,"Номер","ДатаДок",ДатаДок,"UKey<>"+RecordToString(Current));
 fi;
 ^Н1;
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 оформление;
var s,c,r,cc,rr,n:i;
var Obj: Object;
var Field:S;
var Flag:L;
var i: I;
cbУчитывать.Enabled=not Проводить;
cbПроводить.Enabled=Учитывать;
  for s=1..nS do
 -- if FindObject("П",Obj):
   if FindObject("S"+Str(s),Obj):
     rr=asInteger(Obj.RowsCount);
     cc=asInteger(Obj.ColsCount);
     for r=1 .. rr do
      for c=1 .. cc do
       Try
	Field=asString(Obj.Cell(r,c,CellContents,"",False));

	n=SearchInArray(BufField,Field,false);
	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;
       Except
       end;
      od;
     od;

  fi;
od;
end;


Proc Инициализация;
var Obj:Object;
var s,r,rr,c,cc,n,l,bgColor,i,x: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
       Try
	Field =asString(Obj.Cell(r,c,CellContents,"",False));
       if Field<>"":
	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;
       fi;
       Except
       end;
      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;

func формироватьИмяФайла(ПутьВыгрузки: String): String;
  var rez: String;
  var nom: Integer;
  var w:   Integer;
  var i:   Integer;
  var tmp: String;
  var DD:S;
  var M:S;

     w = OpenWorkArea('РПО_ЗАЯВЛ_ДЕНСРЕДСТВ','');
      SetFilter(w, "ДАТАРЕЙС="+DateToString(Сегодня));

      if Records(w) = 0: 
		nom=1;
      else
	for i=1..Records(w) do
		 if nom<GetFieldI(w,i,"НОМРЕЙС"): nom =GetFieldI(w,i,"НОМРЕЙС");fi;
	od;
      fi;
      nom=nom+1;
   НОМРЕЙС = nom;
   ДатаРейс = Сегодня;
  if Day(ДатаРейс)<10: DD = Str(Day(ДатаРейс)); else DD = Chr(65+Day(ДатаРейс)-10);fi;
  if Mon(ДатаРейс)<10: M  = Str(Mon(ДатаРейс)); else M = Chr(65+Mon(ДатаРейс)-10);fi;
  rez = ПутьВыгрузки+Рекв.РПО_КБП+DD;
  tmp = Раб.Бюджет2005.Format36(nom);
  rez = rez+tmp+".rn";
  rez = rez+M;

  Closeworkarea(w);
  return rez;
  --openworkarea("table_rpo","ukey=0");
end;

Func ЗаменитьРазделительПредложения(srcSTR:String; oldSEP:String; newSEP:String) :String;
var num, ii :Integer;
var RES :String;
 RES="";
 num=WordsCount(srcSTR, oldSEP);
 if num>0:
   for ii=1 to num do
     RES=РАБ.БЮДЖЕТ2005.Объединить(RES, ExtractWord(ii, srcSTR, oldSEP), newSEP);
   od;
 fi;
 ^RES;
end;

proc Выгрузить(ПутьВыгрузки: String);

var OWA,OA,State,Iter,F,n,nr,n1,nr1,hНомРейс_:I;
var Buf,Cache:S;
var isBUAU:L;
var num:I;
var i: I;
var path: S;
var tmp:s;
var k: S;

EditorApply;
	path =формироватьИмяФайла(ПутьВыгрузки);
	F=TextFileCreate(path); --ПутьВыгрузки+имя файла(Рекв.РПО_КБП+день месяца+номер заявки за день . zn+месяц)
	TextFileWriteLn(F,"FK|TXRN150101|Турбо Бухгалтер 6.9 Бюджет-157н "+SubStr(Str(Версия.Сборка0),1,2)+"|"+SubStr(Str(Версия.Сборка0)+if(Версия.Сборка1<>0,"."+Str(Версия.Сборка1),"")+Версия.Сборка2,1,10)+"||");

	--Информация об отправителе
	isBUAU=Рекв.РПО_ТипУчр="АУ" or Рекв.РПО_ТипУчр="БУ";
	TextFileAppendLn(F,"FROM|");
	--Уровень бюджета
	Buf=Trim(Банк.РПО_КодБюдж);
	Buf=SubStr(Buf,1,1);
	TextFileAppendLn(F,Buf);
	TextFileAppendLn(F,"|");
	--Код УБП
	Buf=Trim(Рекв.РПО_КБП);
	Buf=SubStr(Buf,1,5);
	TextFileAppendLn(F,Buf);
	TextFileAppendLn(F,"|");
	--Наименование УБП
	Buf=Trim(Рекв.ПолнИмя);
	Buf=SubStr(Buf,1,255);
	TextFileAppendLn(F,Buf);
	Buf=trimRight(Рекв.РПО_ПолнИмя2);
	Buf=SubStr(Buf,1,255);
	TextFileAppendLn(F,Buf);
	TextFileWriteLn(F,"|");
	--Информация о получателе
	TextFileAppendLn(F,"TO|");
	--Код ОФК
	Buf=Trim(Банк.РПО_ОФК_Код);
	Buf=SubStr(Buf,1,4);
	TextFileAppendLn(F,Buf);
	TextFileAppendLn(F,"|");
	--Наименование ОФК
	Buf=Trim(Банк.РПО_ОФК_Имя);
	Buf=SubStr(Buf,1,255);
	TextFileAppendLn(F,Buf);
	Buf=Trim(Банк.РПО_ОФК_Имя2);

	Buf=SubStr(Buf,1,255);
	TextFileAppendLn(F,Buf);
	TextFileWriteLn(F,"|");
	--Общая информация
	TextFileAppendLn(F,"RN|");
	-------------------------------------
	--Глобальный уникальный идентификатор
	TextFileAppendLn(F,"|");
	--N расшифровки
	Buf=Trim(Str(Номер));
	Buf=SubStr(Buf,1,15);
	TextFileAppendLn(F,Buf);
	TextFileAppendLn(F,"|");
	--Дата документа
	Buf=DateToString(ДатаДок);
	Buf=Trim(Buf);
	TextFileAppendLn(F,Buf);
	TextFileAppendLn(F,"|");
	--Номер лицевого счета клиента
	Buf=Trim(ЛСКЛИЕНТА);
	TextFileAppendLn(F,Buf);
	TextFileAppendLn(F,"|");
	--видОперации
	Buf=Trim(str(ВидОперации));
	TextFileAppendLn(F,Buf);
	TextFileAppendLn(F,"|");
	--Код УБП
	if Trim(Банк.РПО_КодБюдж)="1":
	-- Заполнятся только для клиентов Федерального бюджета.
	  Buf=Trim(Рекв.РПО_КБП);
	  Buf=SubStr(Buf,1,5);
	  TextFileAppendLn(F,Buf);
	fi;
	TextFileAppendLn(F,"|");
	--Наименование клиента
	Buf=Trim(Рекв.ПолнИмя);
	Buf=SubStr(Buf,1,255);
	TextFileAppendLn(F,Buf);
	Buf=trimRight(Рекв.РПО_ПолнИмя2);
	Buf=SubStr(Buf,1,255);
	TextFileAppendLn(F,Buf);
	TextFileAppendLn(F,"|");
	--ИНН
	Buf=Trim(РЕКВ.ИНН);
	TextFileAppendLn(F,Buf);
	TextFileAppendLn(F,"|");
	--КПП
	Buf=Trim(РЕКВ.КПП);
	TextFileAppendLn(F,Buf);
	TextFileAppendLn(F,"|");
	--КОД ТОФК
	Buf=Trim(Банк.РПО_ОФК_Код);
	Buf=SubStr(Buf,1,4);
	TextFileAppendLn(F,Buf);
	TextFileAppendLn(F,"|");
	--Наименование ОФК
	Buf=Trim(Банк.РПО_ОФК_Имя);
	Buf=SubStr(Buf,1,255);
	TextFileAppendLn(F,Buf);
	Buf=Trim(Банк.РПО_ОФК_Имя2);
	Buf=SubStr(Buf,1,255);
	TextFileAppendLn(F,Buf);
	TextFileAppendLn(F,"|");
	--ФАИП
	Buf=Trim(ФАИП);
	TextFileAppendLn(F,Buf);
	TextFileAppendLn(F,"|");
	--номер Банковской карты
	Buf=Trim(НомерКарты);
	TextFileAppendLn(F,Buf);
	TextFileAppendLn(F,"|");
	--Должность руководителя
	Buf=Trim(ДолжнРук);
	Buf=SubStr(Buf,1,100);
	TextFileAppendLn(F,Buf);
	TextFileAppendLn(F,"|");
	--ФИО руководителя
	Buf=Trim(ФИОРук);
	Buf=SubStr(Buf,1,50);
	TextFileAppendLn(F,Buf);
	TextFileAppendLn(F,"|");
	--Должность главного бухгалтера
	Buf=Trim(ДолжнБух);
	Buf=SubStr(Buf,1,100);
	TextFileAppendLn(F,Buf);
	TextFileAppendLn(F,"|");
	--ФИО главного бухгалтера
	Buf=Trim(ФИОБух);
	Buf=SubStr(Buf,1,50);
	TextFileAppendLn(F,Buf);
	TextFileAppendLn(F,"|");
	 --Дата подписания документа
	Buf=DateToString(ДатаПодписи);
	Buf=Trim(Buf);
	TextFileAppendLn(F,Buf);
	TextFileAppendLn(F,"|");
	--сумма ден средств
	Buf=Trim(Str(сумДок,2));
--	  Buf=SubStr(Buf,1,100);
	TextFileAppendLn(F,Buf);
	TextFileAppendLn(F,"|");
	--сумма ден средств
	Buf=Trim(Str(СуммИт,2));
   --	  Buf=SubStr(Buf,1,100);
	TextFileAppendLn(F,Buf);
	TextFileWriteLn(F,"|");
	--Расшифровка
	 num = ПОЗИЦИИ;
	  for i=1 to num do

	       TextFileAppendLn(F,"RNKBK|");
	       --номер
	       TextFileAppendLn(F,str(i));
	       TextFileAppendLn(F,"|");
	       ---код по БК
	       Buf=Trim(Позиции[i].БК);
	       Buf=SubStr(Buf,1,50);
	       Buf=ЗаменитьРазделительПредложения(Buf, ".", "");
	       TextFileAppendLn(F,Buf);
	       TextFileAppendLn(F,"|");
	       --тип БК
	       Buf=Trim(Позиции[i].типБК);
	       Buf=SubStr(Buf,1,50);
	       TextFileAppendLn(F,Buf);
	       TextFileAppendLn(F,"|");
	       --Код цели
	       Buf=Trim(Позиции[i].КодЦели);
	       Buf=SubStr(Buf,1,50);
	       TextFileAppendLn(F,Buf);
	       TextFileAppendLn(F,"|");
	       --Вид ссредств
	       --Buf=Trim(ВидСредств);
	       --	 TextFileAppendLn(F,Buf);
	       --
	       if   видсредств = "средства бюджета": TextFileAppendLn(F,"1");  
		    |  видсредств = "доходы от оказания получателями средств бюджета платных услуг": TextFileAppendLn(F,"2");
		    |  видсредств = "средства дополнительного бюджетного финансирования": TextFileAppendLn(F,"3");
		    |  видсредств = "средства для финансирования мероприятий по оперативно-розыскной деятельности": TextFileAppendLn(F,"4");
		    |  видсредств = "средства поступившие во временное распоряжениеполучателей бюджетных средств": TextFileAppendLn(F,"5");
		    |  видсредств = "средства юридических лиц": TextFileAppendLn(F,"6");
		    |  видсредств = "средства от привлечения осужденных к оплачиваемому труду" : TextFileAppendLn(F,"7");

		fi;
	       TextFileAppendLn(F,"|");
	       --сумма
	       Buf=Trim(Str(Позиции[i].СУММАП,2));
	       Buf=SubStr(Buf,1,50);
	       TextFileAppendLn(F,Buf);
	       TextFileAppendLn(F,"|");
	       --примечание
	       Buf=Trim(Позиции[i].ПРИМЕЧАНИЕ);
	       TextFileAppendLn(F,Buf);
	       TextFileWriteLn(F,"|");
	  od;
TextFileClose(F);
    Message("Рейс успешно сформирован"+Chr(13));
end;

Proc OnOpen(Create: Logical);
  if Позиции=0:
     InsertFrame(Позиции,1);
   fi;
   Позиции[1].НомерП=1;
end;


Proc AfterOpen(Destroy: Logical);
	Инициализация;
	оформление;
	if Позиции=0:
	   InsertFrame(Позиции,1);
	fi;
	Позиции[1].НомерП=1;
end;

Proc ЗаполнитьКлиента (vRec: Record);
var new:l;
 if vRec=nil: new=true; vRec=Раб.Бюджет2005.НашРекв; fi;
 if not vRec=nil:
    Рекв=vRec;
 fi;
end;




Func A_OnEnter(FieldName: String; Iter: Integer): logical;
var num: Integer;
var i: Integer;

if not Учитывать:
 InsertFrame(Позиции, Iter+1);
 num = Позиции;
      for i=1 to num do
	 Позиции[i].НомерП=i;
      od;
  СуммИт = СуммаМассива(Позиции[].СуммаП);
 fi;
 Return False ;
end;


Func D_OnEnter(FieldName: String; Iter: Integer): logical;
var num: Integer;
var i: Integer;
if not Учитывать and Позиции <> 1:

  DeleteFrame(Позиции,Iter);
   num = Позиции;
      for i=1 to num do
	 Позиции[i].НомерП=i;
      od;
   СуммИт = СуммаМассива(Позиции[].СуммаП);
fi;
  Return  False;
end;

Func НаимКлиента_OnEnter(FieldName: String; Iter: Integer): logical;
  var Rec:Record;
 Rec=OpenCardFile("Контрагент","Наше",Рекв,crdRecordOnly);
 if not Rec=nil:
     ЗаполнитьКлиента(Rec);
      Rec=OpenCardFile("Банк_Счета","Контрагент="+RecordToString(Рекв),Банк,crdRecordOnly);
	if not Rec=nil:
	   Банк=Rec;
	   лсклиента = банк.РПО_ЛСЧЕТ;
	fi;
 fi;
  Return false ;
end;

Func НаимКазн_OnEnter(FieldName: String; Iter: Integer): logical;
var Rec: Record;
 if Рекв=nil: Message("Выберите клиента",mtError); Template.Field="Клиент"; ^False; fi;
 Rec=OpenCardFile("Банк_Счета","Контрагент="+RecordToString(Рекв),Банк,crdRecordOnly);
 if not Rec=nil:
    Банк=Rec;
    лсклиента = банк.РПО_ЛСЧЕТ;
 fi;
 Return False;
end;

Func БК_OnEnter(FieldName: String; Iter: Integer): logical;
  var tmpE:S;
  var tmp:S;
  tmpE= AnaElection("КОСГУ.*");
  if tmpE<>'' then
   if Позиции=0:
     InsertFrame(Позиции,1);
   fi;
   ПОЗИЦИИ[Iter].Призн = Раб.Бюджет2005.ДобавитьСловоВНаборСЗаменой(ПОЗИЦИИ[Iter].Призн," ",tmpE,"КОСГУ.*","");
   if раб.бюджет2005.MatchMask(tmpE,раб.бюджет2005.МаскаРасхКОСГУ):
     Позиции[iter].типБк = "10";
     tmp = AnaElection("ФКР.*");
     ПОЗИЦИИ[Iter].Призн = Раб.Бюджет2005.ДобавитьСловоВНаборСЗаменой(ПОЗИЦИИ[Iter].Призн," ",tmp,"ФКР.*|КД.*","|");
     tmp = Подстр(tmp, 5, Длина(tmp));
   else
     Позиции[iter].типБк = "20";
     tmp = AnaElection("КД.*");
     ПОЗИЦИИ[Iter].Призн = Раб.Бюджет2005.ДобавитьСловоВНаборСЗаменой(ПОЗИЦИИ[Iter].Призн," ",tmp,"ФКР.*|КД.*","|");
     tmp = Подстр(tmp, 4, Длина(tmp));
   fi;
    tmp = tmp+"."+ExtractWord(2,tmpE,".");
    Позиции[iter].БК = tmp;
  fi;
  Return  false;
end;




Функ ВидСредств_ПриВходе(Поле: Строка; Итер: Целое): Логич;

  var tmp:I;
  ClearVariable(Mas);
  Mas[1]="1 - средства бюджета";
  Mas[2]="2 - доходы от оказания получателями средств бюджета платных услуг";
  Mas[3]="3 - средства дополнительного бюджетного финансирования";
  Mas[4]="4 - средства для финансирования мероприятий по оперативно-розыскной деятельности";
  Mas[5]="5 - средства поступившие во временное распоряжениеполучателей бюджетных средств";
  Mas[6]="6 - средства юридических лиц";
  Mas[7]="7 - средства от привлечения осужденных к оплачиваемому труду";

  tmp=Alternate("Выберите вид средств", Mas, -1,1,14);
  if tmp = 1:	видсредств = "средства бюджета";
       | tmp = 2: видсредств = "доходы от оказания получателями средств бюджета платных услуг";
       | tmp = 3: видсредств = "средства дополнительного бюджетного финансирования";
       | tmp = 4: видсредств = "средства для финансирования мероприятий по оперативно-розыскной деятельности";
       | tmp = 5: видсредств = "средства поступившие во временное распоряжениеполучателей бюджетных средств";
       | tmp = 6: видсредств = "средства юридических лиц";
       | tmp = 7: видсредств = "средства от привлечения осужденных к оплачиваемому труду";

  fi;
  Return False;

end;

Proc СуммАп_OnExit(FieldName: String; Iter: Integer);
  СуммИт = СуммаМассива(Позиции[].СуммаП);
end;

Func СчДеб_OnEnter(FieldName: String; Iter: Integer): logical;
var tmp,tmp2:S;
 if ПОЗИЦИИ[Iter].СчКре = "":
    Message("Укажите счет кредита", mtError);
 else
	tmp=PickCorrAccount(ПОЗИЦИИ[Iter].СчКре,True,tmp);
	if not tmp="":
	   ПОЗИЦИИ[Iter].СчДеб=tmp;
	fi;
 fi;
 Return False;
end;


Func СчКре_OnEnter(FieldName: String; Iter: Integer): logical;
var tmp,Mask:S;
 if видсредств = "средства бюджета":   Mask="*.?.304.05.*";
 elsif видсредств = "доходы от оказания получателями средств бюджета платных услуг":  Mask="*.?.210.??.*";
 elsif видсредств = "средства поступившие во временное распоряжениеполучателей бюджетных средств":  Mask="*.3.201.11.*";
 else Mask="*.?.210.03.660";
 fi;
 tmp=AccountElection(Mask,False,tmp);
 if not tmp="":
    ПОЗИЦИИ[Iter].СчКре=tmp;
 fi;
 Return False;
end;


Func Призн__OnEnter(FieldName: String; Iter: Integer): logical;
  var tmpE:S;
  var tmp: S;
  var s: S;
  if Позиции[Iter].СчДеб = "" and Позиции[Iter].Счкре = "":
    Message("Укажите счет дебета или кредита", mtError);
  fi;
 tmp = раб.бюджет2005.СписокСправ(Раб.бюджет2005.Объединить(Позиции[Iter].СчДеб, Позиции[Iter].СчКре, "|"),0,"");
 tmpE= AnaElection(tmp);
  if tmpE<>'' then
      ПОЗИЦИИ[Iter].призн =Раб.Бюджет2005.ДобавитьСловоВНаборСЗаменой(ПОЗИЦИИ[Iter].Призн," ",tmpE,SubStr(tmp,1,Pos(".",tmpE))+"*","");
  fi;
  Return  false;
end;

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


Func ФИО_OnLookup(Sect: String; Row: Integer; Col: Integer; Cur: String): String;
var Field:S;
var Rec:Record;
var v1,v2:S;
 Template.HideEditor(False);
 Field=AsString(Template.Field);
 Template.HideEditor(False);
 Rec=OpenCardFile("Сотрудники");
 if not Rec=nil:
    v1=GetCardFieldS("Сотрудники",rec,"ДОЛЖНОСТЬ.Долж");
    v2=GetCardFieldS("Сотрудники",rec,"ФАМИЛИЯ")+" "+GetCardFieldS("Сотрудники",rec,"ИНИЦИАЛЫ");
    if Field="ДолжнРук" or Field="ФИОРук": ДолжнРук=v1; ФИОРук=v2;
      |Field="ДолжнБух" or Field="ФИОБух": ДолжнБух=v1; ФИОБух=v2;
    fi;
 fi;
 Return Cur;
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 cbПроводить_OnChange(Sender: String);
var Flag:L;
var z,n,i: Integer;
--if
 Try
  if Проводить:
     Flag=True;
     if ДатаОпер = 1.1.100: Message("Поле 'дата проводки' не заполнено",mtError); Проводить=False; Exit; fi;
	else
     if EnqOkCancel("Вы уверены, что хотите исключить документ из обработки ?",mtWarning)=cmCancel:
	EditorCancel;
     fi;
  fi;
 Finally
  cbПроводить.State=Проводить;
 end;
 if Flag=Проводить: EditorApply; fi;
 оформление;
end;


Proc cbУчитывать_OnChange(Sender: String);
if учитывать:
	if проверить:
		if датаОпер =  1.1.100:датаОпер = ДатаДок; fi;
		оформление;
		EditorApply;
	else
	 учитывать = false;
	 cbУчитывать.State=учитывать;
	fi;
else
	оформление;
	EditorApply;
fi;

end;





Proc Button1_OnClick(Sender: String);
var path:String; 
if not учитывать:
	if проверить:
	   Template.HideEditor(False);
	   if ChooseFolder(path,"Путь выгрузки")= cmOk then  fi;
	   Выгрузить(path);
       fi;
else
	  Template.HideEditor(False);
	   if ChooseFolder(path,"Путь выгрузки")= cmOk then  fi;
	   Выгрузить(path);
fi;
end;


Функ ВидОперации_ПриВходе(Поле: Строка; Итер: Целое): Логич;
var tmp:I;
 ClearVariable(Mas);
 Mas[1]="1 - Внесение наличных";
 Mas[2]="2 - Не использованные по карте";
 tmp=Alternate("Выберите вид операции", Mas, -1,1,14);
 if not tmp=0:
    видОперации = tmp;
 fi;
 Return False;
end;


Проц ПриСчитывании;

  if НоваяЗапись:
    if Номер=0: ДатаДок=ToDay; fi;
       Номер=ПолучитьНомер;
      видОперации = 0;
    fi;
  if Позиции=0:
     InsertFrame(Позиции,1);
     Позиции[1].НомерП=1;
  fi;
end;


Конец
