БЛАНКСШАБЛОНОМ "Фондовый расходный ордер";

SloEnabled:L;
var Проводить:L;

var РЕКВ     :Record;
var НаимОрг  :S;
var ОКПО     :S;
var НомерБум :S;
var Д	     :D;
var ПО	     :S;
var НаимПодр :S=if(Name_A(ПО)<>"" and Name_A(ПО)<>" ",Name_A(По),По);
var Счет     :S;
var Призн    :S;
var КСчет    :S;
var Сумма    :N;
var Цель     :S;
var ФИО      :S;
var Осн      :S;
var Проп1    :S=if(Сумма=0,"",СЛО(Сумма));
var Прил     :S;
var Проп2    :S=if(SloEnabled,if(Сумма=0,"",СЛО(Сумма)),"");
var Паспорт  :S;
var ДолжнРук :S;
var ФИОРук   :S;
var ДолжнБух :S;
var ФИОБух   :S;
var ФИОКасс  :S;

S1:Section;
S2:Section;
S3:Section;
S4:Section;
S5:Section;

var BufField[]:S;
var BufColorBg[]:I;
var BufColorFo[]:I;
--
--Процедуры и функции -------------	   
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..5 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;
 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;
 for s=1..5 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); 
	     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 Очистить;
 ClearVariable(Документы.ДенДок.ОрдРасх.Рекв);
 ClearVariable(Документы.ДенДок.ОрдРасх.НаимОрг);
 ClearVariable(Документы.ДенДок.ОрдРасх.ОКПО);
 ClearVariable(Документы.ДенДок.ОрдРасх.НомерБум);
 ClearVariable(Документы.ДенДок.ОрдРасх.Д);
 ClearVariable(Документы.ДенДок.ОрдРасх.ПО);
 ClearVariable(Документы.ДенДок.ОрдРасх.Счет);
 ClearVariable(Документы.ДенДок.ОрдРасх.Призн);
 ClearVariable(Документы.ДенДок.ОрдРасх.КСчет);
 ClearVariable(Документы.ДенДок.ОрдРасх.Сумма);
 ClearVariable(Документы.ДенДок.ОрдРасх.Цель);
 ClearVariable(Документы.ДенДок.ОрдРасх.ФИО);
 ClearVariable(Документы.ДенДок.ОрдРасх.Осн);
 ClearVariable(Документы.ДенДок.ОрдРасх.Прил);
 ClearVariable(Документы.ДенДок.ОрдРасх.Паспорт);
 ClearVariable(Документы.ДенДок.ОрдРасх.ДолжнРук);
 ClearVariable(Документы.ДенДок.ОрдРасх.ФИОРук);
 ClearVariable(Документы.ДенДок.ОрдРасх.ДолжнБух);
 ClearVariable(Документы.ДенДок.ОрдРасх.ФИОБух);
 ClearVariable(Документы.ДенДок.ОрдРасх.ФИОКасс);
end;
--Процедуры и функции -------------			      
--
--
--Обработчики событий полей шаблона-----
Func НаимОрг_onEnter (Field:S; Iter:I):L;
var Rec:Record;
 Rec=OpenCardFile("Контрагент", "Наше", Рекв, crdRecordOnly);
 if Rec=nil: ^False; fi;
 РЕКВ=Rec;
 НаимОрг=GetCardFieldS("Контрагент",РЕКВ,"КорИмя");
 ОКПО=GetCardFieldS("Контрагент",РЕКВ,"ОКПО");
 ДолжнРук=GetCardFieldS("Контрагент",РЕКВ,"ДолжнРук");
 ДолжнБух=GetCardFieldS("Контрагент",РЕКВ,"ДолжнБух");
 ФИОРук=GetCardFieldS("Контрагент",РЕКВ,"ФИОРук");
 ФИОБух=GetCardFieldS("Контрагент",РЕКВ,"ФИОБух");
 ФИОКасс=GetCardFieldS("Контрагент",РЕКВ,"ФИОКАСС");
 ^False;
end;

Proc НаимОрг_OnExit(FieldName: String; Iter: Integer);
 ClearVariable(Рекв); 
 ClearVariable(НаимОрг);  
 ClearVariable(ОКПО);
end;

Func ФИО_OnLookup(Sect: String; Row: Integer; Col: Integer; Cur: String): String;
var Rec:Record;
var v1,v2,Field:S;
 Template.HideEditor(False);
 Field=AsString(Template.Field);
 Rec=OpenCardFile("Сотрудники");
 if Rec=nil: ^Cur; fi;
 v1=GetCardFieldS("Сотрудники",rec,"ДОЛЖНОСТЬ.Долж");
 v2=GetCardFieldS("Сотрудники",rec,"ФАМИЛИЯ")+" "+GetCardFieldS("Сотрудники",rec,"ИНИЦИАЛЫ");
 if Field="ДолжнРук" or Field="ФИОРук": ДолжнРук=v1; ФИОРук=v2;
   |Field="ДолжнБух" or Field="ФИОБух": ДолжнБух=v1; ФИОБух=v2;
   |Field="ФИОКасс": ФИОКасс=v2;
 fi;
 ^Cur;
end;
--Обработчики событий полей шаблона-----
--
--
--Обработчики событий объектов шаблона-----
Proc btnPrint_onClick (Obj:S);
 Раб.Настр_Печать.Prn("","","RPO_0310002_000.cfg","",1);
end;
--Обработчики событий объектов шаблона-----
--
--
--Обработчики событий шаблона -----
Proc onOpen(Create:L);
 if Раб.Настр_Печать.ExistCfg("RPO_0310002_000.cfg")=False: Раб.Настр_Печать.CreateCfg("","RPO_0310002_000.cfg"); fi;
end;

Proc AfterOpen(Destroy: Logical);
 Инициализация;
 Оформление;
end;
--Обработчики событий шаблона -----
--

КОНЕЦ