-- Шаблон создан мастером бланков
-- 17.09.2008 13:59:31
--
БланкСШаблоном "Инвертаный список(печать)";
Фл_Шапка:l;
var filedbt:s='РАБ.ВСПОМ.ИНВВЕДОМОСТЬ_СПИСОК.dbt';
Список_состав:i=5;
учет[]:l;
СОСТАВ[]:i;
шрифт[]:i;
var НФА_ИМЯ []:s;
var НФА_КОД []:s;
var Инвен[]:S;
var transf:I;
var НОМЕРИНВ[]:s=РАБ.НФА.FUNC_LIB.FormatInvAna(НФА_код[$], Инвен[$], transf, "б/н", Chr(13));
var ЕДИЗМ   []:s;
var ПРИМЕЧ  []:s;
var ПечатьШК[]:L=[True];
var Buf[]:S;

var ШКИзм:L;
--var ШТРИХКОД[]:s;
var КМНТ:s;

PrintBtn:Object;
СЕКЦ_ШАПКА:Section;
СЕКЦ_ПОЗИЦИИ:Section;

Func ИнвКартКлюч(i:I):Record;
var tmp:S;
tmp='ИНВВЕД.'+НФА_код[i]+'.'+Инвен[i];
if Name_A(tmp)<>' ' then ^SignToRecord(tmp,False); else ^nil; fi;
end;

Func ТолькоЦифры(In:S):S;
var i:I;
var r,sym:S;

r='';
for i=1 to Length(In) do
    sym=Substr(In,i,1);
    if Int(sym)>0 or sym='0' then r=r+sym; fi;
od;
^r;
end;

Proc ПечатьШтрихКода(i:I);
var OWA,i1:i;
var code:S;
 OWA=OpenWorkArea('РПО_ИНВКАРТ_ОС','','UKEY='+RecordToString(ИнвКартКлюч(i)));
 try
   if Records(OWA)>0 then
      code=GetFieldS(OWA,1,'ШТРИХКОД');
      if code='' then
	 code=ТолькоЦифры(РАБ.НФА.FUNC_LIB.FormatInvAna(НФА_код[i],Инвен[i],2,'',''));
	 BeginChanging(OWA);
	 try
	   i1=PutFieldS(OWA,1,'ШТРИХКОД',code);
	   EndChanging(OWA);
	   ШКИзм=True;
	 except
	   CancelChanging(OWA);
	 end;

      fi;
      Раб.Штрихкод.ПЕЧАТЬШК(ИнвКартКлюч(i));
--	Раб.Штрихкод.ПЕЧАТЬШК(code,Substr(GetFieldS(OWA,1,'НФА_ИМЯ'),1,16),РАБ.НФА.FUNC_LIB.FormatInvAna(НФА_код[i],Инвен[i], 1,'б/н' ,''),РАБ.НФА.FUNC_LIB.FormatInvAna(НФА_код[i],Инвен[i],2,'б/н', ''));
   fi;
 finally
   CloseWorkArea(OWA);
 end;
end;

func ВЗЯТЬ_СОСТАВ_ИМЯ(ii:i):s;
 if ii=1:^'код';
  | ii=2:^'наименование';
  | ii=3:^'Единица измерения';
  | ii=4:^'Инвентарный номер';
  | ii=5:^'Примечание';
 fi;
 ^'';
end;
func ВЗЯТЬ_СОСТАВ_ПОЛЕ(ii:i):s;
 if ii=1:^'НФА_КОД';
  | ii=2:^'НФА_ИМЯ';
  | ii=3:^'ЕДИЗМ';
  | ii=4:^'НОМЕРИНВ';
  | ii=5:^'ПРИМЕЧ';
 fi;
 ^'';
end;

var СОСТАВ_ИМЯ[]:s=ВЗЯТЬ_СОСТАВ_ИМЯ(СОСТАВ[$]);
var NN0[]:i=$;
var NN[]:i=$;
ПОЗИЦИИ:i;
Проц refreshСЕКЦ_ПОЗИЦИИ;
 var j:i;
 var obj:object;
 if FindObject('СЕКЦ_ПОЗИЦИИ',obj):
    for j=1..Список_состав do
      obj.Row(j, RowVisible, учет[j]);
      obj.Cell(j, 2, CellContents, ВЗЯТЬ_СОСТАВ_ПОЛЕ(СОСТАВ[j]));
      obj.Cell(j, 2, CellFontSize, шрифт[СОСТАВ[j]]);
    od;
--    for j=1..Список_состав do
--	obj.Row(j, RowVisible, учет[j]);
--    od;
 fi;
end;

Проц ПослеОткрытия(Уничтожить: Логич);
 var ll:l;
 if existfile(filedbt):
    ll=ReadVarFromDBT(filedbt);
 fi;
 PrintBtn.Visible=Раб.Штрихкод.ЭлИнвВкл;
 СЕКЦ_ШАПКА.Column(3,ColVisible,Раб.Штрихкод.ЭлИнвВкл);
 СЕКЦ_ПОЗИЦИИ.Column(3,ColVisible,Раб.Штрихкод.ЭлИнвВкл);

 if СОСТАВ[1]=0:
    СОСТАВ[1]=1;шрифт[1]=8;
    СОСТАВ[2]=2;шрифт[2]=8;
    СОСТАВ[3]=3;шрифт[3]=8;
    СОСТАВ[4]=4;шрифт[4]=8;
    СОСТАВ[5]=5;шрифт[5]=8;
 fi;
 refreshСЕКЦ_ПОЗИЦИИ;
end;


Проц ПриЗакрытии(Уничтожить: Логич);
 var ll:l;
     ll=WriteVarInDBT(filedbt,true);
end;


Проц Кнопка1_ПриНажатии(Отправитель: Строка);
  refreshСЕКЦ_ПОЗИЦИИ;
end;


Func ПечатьШК_OnEnter(FieldName: String; Iter: Integer): logical;
  ПечатьШК[Iter]=not  ПечатьШК[Iter];
  Return False ;
end;


Proc PrintBtn_OnClick(Sender: String);
var i:I;
 ШКИзм=False;
 for i= 1 to ПОЗИЦИИ do
   if ПечатьШК[i] then ПечатьШтрихКода(i); fi;
 od;
 if ШКИзм then Message('Данные штрих-кодов были обновлены.'+chr(13)+'Сделайте перерасчет инвентарной ведомости для корректной выгрузки.',mtWarning); fi;
end;


Проц ПечатьШК_ПриНажатии(Стр: Целое; Кол: Целое; Двойной: Логич);
var i,n:I;
ClearVariable(Buf);
Buf[1]='Снять выделение для всех позиций';
Buf[2]='Установить выделение для всех позиций';
n=Alternate('Печать Штрих-кодов',Buf);
if n>0 then
  for i=1 to ПОЗИЦИИ do
      ПечатьШК[i]=(n=2);
  od;
fi;
end;


Конец
