БланкСШаблоном "Документы [УНФА]";
var колкнопок:i=15;
var Заголовок:s;
var ИменаБланков:s;
--var ИменаБланков:s='ДОКУМЕНТЫ.ВЕДОМОСТИ.*';
Label00 :Object;
Button01 :Object;Label01 :Object;
Button02 :Object;Label02 :Object;
Button03 :Object;Label03 :Object;
Button04 :Object;Label04 :Object;
Button05 :Object;Label05 :Object;
Button06 :Object;Label06 :Object;
Button07 :Object;Label07 :Object;
Button08 :Object;Label08 :Object;
Button09 :Object;Label09 :Object;
Button10 :Object;Label10 :Object;
Button11 :Object;Label11 :Object;
Button12 :Object;Label12 :Object;
Button13 :Object;Label13 :Object;
Button14 :Object;Label14 :Object;
Button15 :Object;Label15 :Object;

var tmp_s[]:s;
var doc[]:s;
var BtnName_Menu[]:s;
var Lab[]:s=Name_B(doc[$]);
var Doc_Menu[]:s;       -- главное хранилище
var DocBtnName_Menu[]:s;-- главное хранилище
var List_ИменаБланков[]:s;
var ListN_ИменаБланков[]:i;
func ВзятьКодБланка(БланкИмя:s):s;
 БланкИмя=ВыделитьСлово(КоличествоСлов(БланкИмя,'.'),БланкИмя,'.');
 if БланкИмя='ОПЕРАЦИИДНФА'  :^'Журнал операций НФА';
  | БланкИмя='РПО_ОСТ_НФА'   :^'Журнал остатков НФА';
--  | БланкИмя='АМОРТИЗАЦИЯ'   :^'Журнал начислений амортизации на НФА';
  | БланкИмя='ИНВЕНТАРИЗАЦИЯ':^'Инвентаризационная ведомость ';
 fi;
 ^'форма '+БланкИмя;
end;

proc ВзятьИменаБланковПоСписку(sss:s);
 var ii,j,k,z,zz,q:i;
 var ss:s;
 ii=Поисквмассиве(List_ИменаБланков,sss);
 if ii<1:
    ii=ВзятьИменаБланков(sss,doc,true,false,false);
    j=Поисквмассиве(doc,'НФА.ДОКУМЕНТЫ.ВЕДОМОСТИ.ОКУД_0317001');
    if j>0:DeleteFromArray(doc,j);ii=ii-1;fi;
    j=Поисквмассиве(doc,'НФА.ДОКУМЕНТЫ.ВЕДОМОСТИ.ОКУД_0317004');
    if j>0:DeleteFromArray(doc,j);ii=ii-1;fi;
    j=Поисквмассиве(doc,'НФА.ДОКУМЕНТЫ.ВЕДОМОСТИ.ИНВ_РАЗБ');
    if j>0:DeleteFromArray(doc,j);ii=ii-1;fi;
    j=Поисквмассиве(doc,'НФА.ДОКУМЕНТЫ.ВЕДОМОСТИ.АМОРТИЗАЦИЯ_СПРАВКА');
    if j>0:DeleteFromArray(doc,j);ii=ii-1;fi;
    j=Поисквмассиве(doc,'НФА.ДОКУМЕНТЫ.КАРТОЧКИ.ОКУД_0504031_52');
    if j>0:DeleteFromArray(doc,j);ii=ii-1;fi;
    j=ДлинаМассива(List_ИменаБланков);
    List_ИменаБланков[j+1]=sss;
    ListN_ИменаБланков[j+1]=ДлинаМассива(Doc_Menu)+1;
    k=ListN_ИменаБланков[j+1];zz=j+1;
    z=k+ii-1;
    ii=0;
    ClearVariable(tmp_s);
    ii=0;
    for j=k..z do 
      ii=ii+1;
      ss=doc[ii]+'.SORT_MENU';
      if ПеременнаяСуществует(ss):ss=GetVariableS(ss);if ss='':ss='50';fi;
       | true:ss='50';
      fi;
      ss=ss+'_'+Format('%2.d', ii);
      addinarray(tmp_s,true,true,ss);
      ss=ss+'_'+Format('%2.d', ii);
    od;
    ii=0;
    for j=k..z do 
      ii=ii+1;
      q=int(ВыделитьСлово(2,tmp_s[ii],'_'));
      ss=doc[q]+'.BTNNAME_MENU';
      if ПеременнаяСуществует(ss):ss=GetVariableS(ss);
       | true:ss=ВзятьКодБланка(doc[q]);
      fi;
      --BtnName_Menu[ii]=ss;
      Doc_Menu[j]=doc[q];
      DocBtnName_Menu[j]=ss;
    od;
    ii=zz;
 fi;
 ClearVariable(doc);
 ClearVariable(BtnName_Menu);
 if ii>0:
    k=ListN_ИменаБланков[ii];
    z=ДлинаМассива(Doc_Menu);
    if ii<ДлинаМассива(ListN_ИменаБланков):z=ListN_ИменаБланков[ii+1]-1;fi;
    ii=0;
    for j=k..z do
      ii=ii+1;
      doc[ii]=Doc_Menu[j];
      BtnName_Menu[ii]=DocBtnName_Menu[j];
    od;
 fi;
end;
proc inidoc;
 var ii:i;
 var ss:s;
 Label00.Caption=Заголовок;
 ВзятьИменаБланковПоСписку(ИменаБланков);
end;
Proc ПриОткрытии(Откр:Logical);
end;
Proc ПослеОткрытия(Откр:Logical);
 var ss,s:s;
 var obj:Объект;
 var ii,j:i;
 inidoc;
 ii=ДлинаМассива(doc);
 for j=1..ii do
  if j<10:s='0';|true:s='';fi;
  if НайтиОбъект('Button'+s+str(j),obj):
     ss=BtnName_Menu[j];
     obj.Caption=ss;--
     if AsString(obj.Hint)='':obj.Hint=Lab[j];fi;--if Not BlankExist(doc[j]):obj.Enabled=false;fi;
     if НайтиОбъект('Label'+s+str(j),obj):obj.Caption=Lab[j];fi;
  fi;
 od;
 for j=ii+1..колкнопок do
  if j<10:s='0';|true:s='';fi;
  if НайтиОбъект('Button'+s+str(j),obj):obj.visible=false;if НайтиОбъект('Label'+s+str(j),obj):obj.visible=false;fi;fi;
 od;
end;
Proc Выбор_ПриНажатии(Кнопка:String);
var ii,j:i;
var ss,ss1,ss2:s;
  ii=int(SubStr(Кнопка,7,2));
  if ii>0:
    ss='ВИДДОК.'+doc[ii];
    if Name_A(ss)<>' ':
       ss1=РАБ.НФА.B01.2ПолеПоПризнакуС0(ss,'КартУсл');
       ss2=РАБ.НФА.B01.2ПолеПоПризнакуС0(ss,'КАРТБРО');
       ss2=РАБ.НФА.B01.ВзятьBROизКартотеки(ss2);
       if ss='ВИДДОК.НФА.ДОКУМЕНТЫ.КАРТОЧКИ.ОКУД_0504031':
          if trim(ss1)='':
             j=Вопрос('','Как показать карточки ОС?','Все;Не списанные;Списанные',mtConfirmation);
             if j<2:ss1='ВЫБЫТ_ДАТА<>01.01.1950';
              | j=2:ss1='ВЫБЫТ_ДАТА<01.01.1950';
              | j=3:ss1='ВЫБЫТ_ДАТА>01.01.100';
             fi;
          fi;
       fi;
       ss =РАБ.НФА.B01.2ПолеПоПризнакуС0(ss,'КартИмя');
       if ss<>'':
	 if pos('НФА.ДОКУМЕНТЫ.АКТЫ.',up(doc[ii]))=1:ЗаписатьПеременнуюС(doc[ii]+'.NewRECbln',doc[ii]);
	    if match(ss1,'КОДФОРМЫ="ОКУД_???????"') :
	      Кнопка=SubStr(ss1,11,12)+'*';
	      Кнопка=' or match(КОДФОРМЫ,"'+Кнопка+'")';
	      ss1='('+ss1+Кнопка+')';
	    fi;

	 fi;
--         ВЫБЫТ_ДАТА<>01.01.1950
         if ss2<>'': ОткрытьКартотеку(ss2,'--'+ss1);
--         if ss2<>'':ОткрытьКартотеку(PlanVar('НФА')+'\Картотеки\'+ss2,'--'+ss1);
          | ss1<>'':ОткрытьКартотеку(ss,'--'+ss1);
          | true:ОткрытьКартотеку(ss);
         fi;
       fi;
     | true:OpenBlank(doc[ii],false);
    fi;
  fi;
end;
Proc кнЗакрыть_ПриНажатии(Кнопка:String);
  close;
end;


Конец
