БланкСШаблоном "Карточка учета материалов";
var SORT_MENU	:s='02';
var BTNNAME_MENU:s='Карточка НФА';

  Итого:с="Итого";
  Sch1:s="Итого";
  СчетТМЦ:С;
  СкладПр:С;
  Склад:С;
  ТоварПр:С;
  ТоварЕд:С;
  Товар:С;
  ТоЧНОСТЬ:Ц;
  ДатаН:Дата=[01.01.98];
  ДатаК:Дата=[СЕГОДНЯ];
  а[]:С=Стр($);
  КолП[]:Ч;
  СумП[]:Ч;
  КолР[]:Ч;
  СумР[]:Ч;
  ОстСум[]:Ч;
  ОстКол[]:Ч;
  Позиции	    :Handle;	 -- упр.переменная
  Контр[]:С;
  Контр1[]:С;
  Контр2[]:С;
  ПризКонтр[]:С;
  Приз[]:С;
  ОСТНАЧР:Ч;
  ОСТНАЧК:Ч;
  --ИтогоКол:Ч=СуммаМассива(ОстКол,Позиции);
  КолПИ:Ч=СуммаМассива(КолП,Позиции);
  СумПИ:Ч=СуммаМассива(СумП,Позиции);
  КолРИ:Ч=СуммаМассива(КолР,Позиции);
  СумРИ:Ч=СуммаМассива(СумР,Позиции);
  ИтогоКол:Ч=ОСТНАЧК+КолПИ-КолРИ;

  КолПСтр[]=КолП[$];
  КолРСтр[]=КолР[$];
  ОстКолСтр[]=ОстКол[$];
  КолПИСтр=КолПИ;
  КолРИСтр=КолРИ;
  ИтогоКолСтр=ИтогоКол;
--  МаскаСчетов:С="050!|061!|062!|063!|064!|065!|066!|066!|067!|068!|069!";
  МаскаСчетов:С="*.?.101.??.???|*.?.102.??.???|*.?.105.??.???|*.?.106.??.???";
  PeremSkl:handle;
  PeremSch:handle;
  Kom[]:s;
  st[]:s;

  tT[]		:Integer;
  ДатаД[]	:Date;
  tDeb[]	:String;
  tCre[]	:String;
  tAna[]	:String;
  tComm[]	:String;
  tSum1[]	:Numeric;
  tSum2[]	:Numeric;
  tCur1[]	:String;
  tCur2[]	:String;
  tEstSum[]	:Numeric;
  tBalSum[]	:Numeric;
  tValSum[]	:Numeric;
  tKolSum[]	:Numeric;
  tKol[]	:String;
  tKolSign[]	:String;
  tCur[]	:String;
  OpenJur	:String = 'Открыть журнал';
  Skl[] 	:String;
  Skl_P[]	:String;
  OstSkl[]	:Numeric;
  Sch[] 	:String;
  OstSch[]	:Numeric;
  ItogoSkl	:n;
  ItogoSch	:n;
  Послцена1=ЕСЛИ(Saldo(СчетТМЦ+'{'+ТоварПр+'}',ДатаК+1,'кол')<>0:Saldo(СчетТМЦ+'{'+ТоварПр+'}',ДатаК+1)/Saldo(СчетТМЦ+'{'+ТоварПр+'}',ДатаК+1,'кол'),0);
  Послцена2=ЕСЛИ(Saldo(СчетТМЦ+'{'+ТоварПр+'&'+СкладПр+'}',ДатаК+1,'кол')<>0:Saldo(СчетТМЦ+'{'+ТоварПр+'&'+СкладПр+'}',ДатаК+1)/Saldo(СчетТМЦ+'{'+ТоварПр+'&'+СкладПр+'}',ДатаК+1,'кол'),0);
  Срцена[]:Ч;

proc Turns (S:S);
  var t,i,j,k :Integer;
  var SK,SC,ss:С;
  var ost1:n;
  var ost2:n;
  var flag1,flag2,lcre,ldeb:l;
  var temp:С;
  var Откуда:С;
  var Куда:С;
  var ммм:С;
  if trim(ТоварПр)='':exit;fi;
  ммм=выделитьслово(1,СКЛАДПР,'.')+'.';
  if ммм='':ммм='М.';fi;

  if СчетТМЦ="":СчетТМЦ=МаскаСчетов;fi;
   ClearVariable(Позиции);
   if Склад='':
    clearVariable(СкладПр);
   fi;

   ClearVariable(PeremSkl);
   ClearVariable(PeremSch);
   ClearVariable(Skl);
   ClearVariable(Sch);
   ClearVariable(OstSch);
   ClearVariable(OstSkl);
   ClearVariable(а);
   ClearVariable(ДатаД);
   ClearVariable(Контр1);
   ClearVariable(Контр2);
   ClearVariable(КолПСтр);
   ClearVariable(СумП);
   ClearVariable(КолРСтр);
   ClearVariable(СумР);
   ClearVariable(СрЦена);
   ClearVariable(ОстКолСтр);
   ClearVariable(ОстСум);
   ClearVariable(Kom);
   ClearVariable(st);

   ОСТНАЧР=ОСТАТОК(СчетТМЦ+"{"+ТОВАРПР+ЕСЛИ(ДЛИНА(Склад)>0,"&"+СкладПР,"")+"}", ДатаН);
   ОСТНАЧК=ОСТАТОК(СчетТМЦ+"{"+ТОВАРПР+ЕСЛИ(ДЛИНА(Склад)>0,"&"+СкладПР,"")+"}", ДатаН,"КОЛ");
   st[1]='М.';
   st[2]='МОЛ.';
   st[3]='Ф.';
   st[4]='К.';
   st[4]='ПБС.';
    for transaction t = СчетТМЦ+"{"+ТОВАРПР+ЕСЛИ(ДЛИНА(Склад)>0,"&"+СкладПР,"")+"}", ДатаН, ДатаК+1 do
	  InsertFrame(Позиции, Позиции+1);

	  tT[Позиции] = t;
	  ДатаД[Позиции] = TransDate(t);

	  tDeb[Позиции] = TransDeb(t);ldeb=РАБ.НФА.B01.СоотвСчета(tDeb[Позиции],СчетТМЦ);
	  tCre[Позиции] = TransCre(t);lcre=РАБ.НФА.B01.СоотвСчета(tCre[Позиции],СчетТМЦ);
	  Откуда='';Куда='';
	  k=ДлинаМассива(st);
	  for j=1..k do
	    temp=st[j];
	    i=ПроводНомерПризнака(t,temp);
	    if i>0:
	      ss=ПроводИмяПризн(t,i);
	      if pos(ммм,ss)=1:
		 ldeb=ldeb и РАБ.НФА.B01.СоотвПризнака(ss,СкладПр);
		 lcre=lcre и РАБ.НФА.B01.СоотвПризнака(ss,СкладПр);
	      fi;
	      Откуда=Откуда+chr(13)+Name_A(ss);
	      Куда  =Куда  +chr(13)+Name_A(ss);
	     | true:
	       i=ПроводНомерПризнака(t,'+'+temp);
	       if i>0:
		  ss=SubStr(ПроводИмяПризн(t,i),2,255);
		  if pos(ммм,ss)=1:
		     ldeb=ldeb и РАБ.НФА.B01.СоотвПризнака(ss,СкладПр);
		  fi;
		  Куда	=Куда  +chr(13)+Name_A(ss);
	       fi;
	       i=ПроводНомерПризнака(t,'-'+temp);
	       if i>0:
		  ss=SubStr(ПроводИмяПризн(t,i),2,255);
		  if pos(ммм,ss)=1:
		     lcre=lcre и РАБ.НФА.B01.СоотвПризнака(ss,СкладПр);
		  fi;
		  Откуда=Откуда+chr(13)+Name_A(ss);
	       fi;
	    fi;
	  od;
	  Контр1[Позиции]=Откуда;
	  Контр2[Позиции]=Куда;


	  tSum1[Позиции] = TransSum1(t);
	  tSum2[Позиции] = TransSum2(t);


	  tBalSum[Позиции] = TransSum(t);
	  tKolSum[Позиции] = TransSum(t, 'кол');
	if ldeb:
	       СумП[Позиции]=TransSum(t);
	       КолП[Позиции]=TransSum(t,'кол');
	 | true:
	       СумП[Позиции]=0;
	       КолП[Позиции]=0;
	fi;
	if lcre:
	       СумР[Позиции]=TransSum(t);
	       КолР[Позиции]=TransSum(t,'кол');
	 | true:
	       СумР[Позиции]=0;
	       КолР[Позиции]=0;
	fi;

	  ОстСум[Позиции]=ОстСум[Позиции-1]+СумП[Позиции]-СумР[Позиции]+ЕСЛИ(Позиции=1,ОСТНАЧР,0);
	  ОстКол[Позиции]=ОстКол[Позиции-1]+КолП[Позиции]-КолР[Позиции]+ЕСЛИ(Позиции=1,ОСТНАЧК,0);
	  ss=TransComment(t);
	  if ss='':
	    i=ПроводНомерПризнака(t,'ДНФА.');
	    if i>0:ss=Name_A(ПроводИмяПризн(t,i));fi;
	  fi;
	  Kom[Позиции] =ss;
	  tKol[Позиции] = TransMeasure(t);
	  tKolSign[Позиции] = TransQuantSign(t);
	  Срцена[Позиции]=TransSum(t)/TransSum(t,'кол');

    end;


ItogoSkl=0;
ItogoSch=0;
if (length(ТоварПр))<4:ТоварПр='НФА.*';fi;
--for sign SK='М.*' do
--    for transaction t = СчетТМЦ+"{"+ТОВАРПР+ЕСЛИ(ДЛИНА(Склад)>0,"&"+СкладПР,"")+"}", ДатаН, ДатаК+1 do
if ЕстьПроводки(МаскаСчетов+"{"+ТОВАРПР+"&М.*}",1.1.100,ДатаК+1):
  for account SC=МаскаСчетов do
   SC=SubStr(SC,1,Length(SC)-3)+'???';
   if поисквмассиве(Sch,SC)<1:

   if ЕстьПроводки(SC+"{"+ТОВАРПР+"&М.*}",1.1.100,ДатаК+1):
     for sign SK='М.*' do
      if ЕстьПроводки(SC+"{"+ТОВАРПР+"&"+SK+"}",1.1.100,ДатаК+1):
	 -- if СчетБалансовый(SC):SC=SubStr(SC,1,Length(SC)-3)+'???';fi;
	  ost1=Остаток(SC+" {"+SK+"&"+ТоварПр+"}",ДатаК+1,"КОЛ");
	  ost2=Остаток(SC+" {"+SK+"&"+ТоварПр+"}",ДатаК+1);
	  if (ost1<>0) or (ost2<>0):
	   flag1=false;
	   flag2=false;
	 if (СкладПр<>SK) or (Склад=''):
	   for i=1..PeremSkl do
	    if Skl[i]=Наим_П(SK):
	       OstSkl[i]=OstSkl[i]+ost1;
	       flag1=true;
	       ItogoSkl=ItogoSkl+ost1;
	    fi;
	   od;
	    if not flag1:
	      InsertFrame(PeremSkl,PeremSkl+1);
	      Skl[PeremSkl]=Наим_П(SK);
	      Skl_P[PeremSkl]=SK;
	      OstSkl[PeremSkl]=ost1;
	      ItogoSkl=ItogoSkl+ost1;
	    fi;
	 fi;
	 if (SC<>СчетТМЦ) :
	   for i=1..PeremSch do
	    if Sch[i]=SC:
	       OstSch[i]=OstSch[i]+ost2;
	       flag2=true;
	       ItogoSch=ItogoSch+ost2;
	    fi;
	   od;
	    if not flag2:
	      InsertFrame(PeremSch,PeremSch+1);
	      Sch[PeremSch]=SC;
	      OstSch[PeremSch]=ost2;
	      ItogoSch=ItogoSch+ost2;
	    fi;
	 fi;
	  fi;
	-- fi;
      fi;
     od;
   fi;
   fi;
  od;
fi;


end;

  ПРОЦ Открр(РР:l);
  Склад=if(length(СкладПр)>3:Name_a(СкладПр),'');
  TURNS("Button1");
  КОНЕЦ;

  proc Turns1 (ОБ:Л);
  VAR S:S;
  TURNS(S);
  КОНЕЦ;

  proc Clear (S:S);
    ClearVariable(Позиции);
  end;

  proc ОЧИСТИТЬСКЛАД (S:S);
  Очиститьпеременную(СКЛАД);
  end;

Код:С;
Коммент:s ;

Дата1:d;
Дата2:d;

Пров:Ц=1;
Движение[]:С;
Наимен[]:С;
Номер[]:Ц;
Куда[]:С;
МОЛ[]:С;
Кол[]:Ч;
Цена[]:Ч;
НДС[]:Ч;
НДССумма[]:Ч=Кол[$]*Цена[$]*НДС[$]/100;
Сумма[]:Ч=Кол[$]*Цена[$]*НДС[$]/100+Кол[$]*Цена[$];

FUNC ВыборТМЦ (Об:С;итер:I):L;
  Перем Сч:С;
  перем РабОб:Ц;
  перем т:Ц;
   Сч=ВыборПризнака("НФА.*");

   If Сч <> Склад И Сч <> "" :
      Код = Сч;
      КОММЕНТ = Наим_П(Сч);

   Fi;
 turns("ddd");
^FALSE;
End;


func ВыборСчета (Об:С;Итер:Ц):L;
  Перем Сч:С;
   Сч=ВыборСчета(МаскаСчетов);
   If Сч <> СчетТМЦ И Сч <> "":
      СчетТМЦ= Сч;
   Fi;
   turns("ddd");
  ^ false;
End;

FUNC ВыборСклад (Об:С;итер:I):L;
  Перем Сч:С;
   Сч=ВыборПризнака("М.*|МОЛ.*");

   If Сч <> Склад И Сч <> "" :
       СкладПр =Сч;
       Склад=Name_A(СкладПр);
    | true:
       СкладПр ="М.*";
       Склад=Name_A("М.");
   Fi;
  turns("ddd");
^false;
End;

FUNC ВыборТовар (Об:С;итер:I):L;
  Перем Сч:С;
  перем РабОб:Ц;
  перем т:Ц;
   Сч=ВыборПризнака("НФА.*");
   if Сч='':Сч="НФА.*";fi;
   ТоварПр =Сч;
   If Сч <> Склад И Сч <> "" :
       ТоварПр =Сч;
       ТоварЕд =Unit(Сч);
       Товар =Наим_П(Сч);
       Точность=Раб.НФА.B01.ПолеПоПризнакуЦ(ТоварПр,'Точность');
   Fi;
 turns("fff");
^FALSE;
End;

FUNC КаленДат(Об:с;Итер:Ц):L;
   Var DTMP :Date;
       If Об = "ДатаН" :
	    DTMP=КАЛЕНДАРЬ;
	    If DTMP > 1.1.100 :
	       ДатаН=DTMP;
	       ^False;
	    Fi;
       |  Об = "ДатаК" :
	    DTMP=КАЛЕНДАРЬ;
	    If DTMP > 1.1.100 :
	       ДатаК=DTMP;
	       ^False;
	    Fi;
       Fi;
       ^False;
КОНЕЦ;

  func OpenT (S:S; I:I) :L;
    РАБ.НФА.B01.TransOpenJurNFA(tT[I]);
    ^FALSE;
  end;


func Отчет_по_др(Об:С; Итер:Ц):l;
if Об='Skl':
 СкладПр=Skl_P[Итер];
 Склад=Name_a(СкладПр);
 Turns ('S');
 | Об='Итого':
 СкладПр='*';
 Склад='';
 Turns ('S');
 | Об='Sch':
 СчетТМЦ=Sch[Итер];
 Turns ('S');
 | Об='Sch1':
 СчетТМЦ=МаскаСчетов;
 Turns ('S');
fi;
^false;
end;

proc closebln(ob:l);
clearvariable(а        );
clearvariable(ДатаД    );
clearvariable(Контр1   );
clearvariable(Контр2   );
clearvariable(КолПСтр  );
clearvariable(СумП     );
clearvariable(КолРСтр  );
clearvariable(СумР     );
clearvariable(СрЦена   );
clearvariable(ОстКолСтр);
clearvariable(ОстКол   );
clearvariable(ОстСум   );
clearvariable(Kom      );
clearvariable(Skl      );
clearvariable(OstSkl   );
clearvariable(ТоварЕд  );
clearvariable(Sch      );
clearvariable(OstSch   );

clearvariable(tT       );
clearvariable(ДатаД    );
clearvariable(tDeb     );
clearvariable(tCre     );
clearvariable(tAna     );
clearvariable(tComm    );
clearvariable(tSum1    );
clearvariable(tSum2    );
clearvariable(tCur1    );
clearvariable(tCur2    );
clearvariable(tEstSum  );
clearvariable(tBalSum  );
clearvariable(tValSum  );
clearvariable(tKolSum  );
clearvariable(tKol     );
clearvariable(tKolSign );
clearvariable(tCur     );
clearvariable(Skl_P    );
clearvariable(КолР     );
end;



Функ ВыборСчета_приобзоре(Сек: Строка; Стр: Целое; Столб: Целое; Тек: Строка): Строка;
  ВыборСчета('',1);
  Шаблон.СкрытьРедактор(false);
  Возврат '' ;
end;


Конец

