



-- Шаблон создан мастером бланков
-- 16.01.2008 18:34:30
--
БланкСШаблоном "Расстановка_ДВИЖ_НФА";
УСЛ_АН_ДНФА:s;
var УСЛ_АН_ДНФА_:s=Name_A('ДНФА.'+УСЛ_АН_ДНФА);
var wa:i;
var wa_open:l=[false];
var ChangingWA:l=[false];
var ChangingTrue:l=[false];
var rs:i=if(wa_open,records(wa),0);
var nn[]:i=$;
var ДВИЖ_НФА  []:s;
var Сохранить_изменения:l;
var Отменить_изменения:l;
Флаг1:object;
Флаг2:object;
var АН:s=['25'];
var ТАН:s;
var АН25_Ш    []:s=if(wa_open,GetFieldS(wa,$,АН+'_Ш'	),'');
var ДВИЖ_НФА_ЗАПИСАТЬ[]:l=ДВИЖ_НФА[$]<>'' and ДВИЖ_НФА[$]<>АН25_Ш[$];

var ТАН25     []:s=if(wa_open,GetFieldS(wa,$,'Т'+АН	),'');
var ПРОВОДИТЬ []:l=if(wa_open,GetFieldL(wa,$,'ПРОВОДИТЬ'),false);
var НОМЕР     []:s=if(wa_open,GetFieldS(wa,$,'НОМЕР'	),'');
var ДАТОПЕР   []:s=if(wa_open,GetFieldS(wa,$,'ДАТОПЕР'	),'');
var АН_ДНФА   []:s=if(wa_open,GetFieldS(wa,$,'АН_ДНФА'	),'');
var ОСНОВАНИЕ []:s=if(wa_open,GetFieldS(wa,$,'ОСНОВАНИЕ'),'');
var СОСТАВИЛ  []:s=if(wa_open,GetFieldS(wa,$,'СОСТАВИЛ' ),'');
var АН_ДНФА_  []:s=Name_A(АН_ДНФА[$]);

func ВзятьАН_ПоСправочнику(СПР:s):s;
 var waДНФА,waЗапрос,ii,rs:i;
 var ss:s;
 var rec:record;
  if СПР='':^'';fi;
  if УСЛ_АН_ДНФА_<>' ':
     rec=ПризнакВзапись('ДНФА.'+УСЛ_АН_ДНФА,false);
     if rec=nil:^'';fi;
     waДНФА=OpenWorkArea('РПО_ДНФА','','UKEY='+recordtostring(rec));
--	 waЗапрос=OpenArray(waДНФА,1,'ЗАПРОС','','ТИППАРАМЕТРА=9');
       waЗапрос=OpenArray(waДНФА,1,'ЗАПРОС','','(ТИППАРАМЕТРА=9 or ТИППАРАМЕТРА=14) and pos("'+СПР+'",ОТВЕТ)>0');
       rs=records(waЗапрос);
       if rs<>1:-- надо добавить поле! пока не реализованно!
	 CloseWorkArea(waЗапрос);CloseWorkArea(waДНФА);^'';
       fi;
       ss=GetFieldS(waЗапрос,1,'ПОЛЕПОДТАБЛИЦЫ')+'|'+GetFieldS(waЗапрос,1,'НОМПРОВОДКИ');
       CloseWorkArea(waЗапрос);
     CloseWorkArea(waДНФА);
       ^ss;
  fi;
end;
proc ClearArray;
 ClearVariable(ДВИЖ_НФА );
 ClearVariable(ДВИЖ_НФА_ЗАПИСАТЬ);
 ClearVariable(АН25_Ш	);
 ClearVariable(ТАН25	);
 ClearVariable(ПРОВОДИТЬ);
 ClearVariable(НОМЕР	);
 ClearVariable(ДАТОПЕР	);
 ClearVariable(АН_ДНФА	);
 ClearVariable(ОСНОВАНИЕ);
 ClearVariable(СОСТАВИЛ );
 ClearVariable(АН_ДНФА_ );
 ClearVariable(nn);
end;
proc ПрименитьИзменения(i:i);
 var waПОЗИЦИИ,ii,rsПОЗИЦИИ,z:i;
   waПОЗИЦИИ=OpenArray(wa,i,'ПОЗИЦИИ','');
   rsПОЗИЦИИ=records(waПОЗИЦИИ);
   for ii=1..rsПОЗИЦИИ do
     z=PutFields(waПОЗИЦИИ,ii,АН,ДВИЖ_НФА[i]);
   od;
   z=PutFields(wa,i,АН+'_Ш',ДВИЖ_НФА[i]);
   z=PutFields(wa,i,'Т'+АН,ТАН);
   z=PutFieldL(wa,i,'ФИКС',false);
   CloseWorkArea(waПОЗИЦИИ);
   ChangingTrue=True;
end;

proc ПрименитьВсеИзменения;
var k:i;
  for k=1..rs do
    if ДВИЖ_НФА_ЗАПИСАТЬ[k]:ПрименитьИзменения(k);fi;
  od;
end;

proc EndChangingWA;
 if wa_open:
   if ChangingWA:
     if 1=0:BeginChanging(wa);fi;
     EndChanging(wa);
     ChangingWA=false;
     ChangingTrue=false;
   fi;
 fi;
end;
proc CancelChangingWA;
 if wa_open:
   if ChangingWA:
     if 1=0:BeginChanging(wa);fi;
     CancelChanging(wa);
     ChangingWA=false;
     ChangingTrue=false;
   fi;
 fi;
end;
proc BeginChangingWA;
 if wa_open:
   CancelChangingWA;
   BeginChanging(wa);
   ChangingWA=true;
   if 1=0:CancelChanging(wa);fi;
 fi;
end;

proc CloseWorkAreaWA;
 if wa_open:
    if ChangingTrue:
       if ВопрДаОтказ('Внимание! Обнаружены не сохраненные изменения.^MСохранить изменения?',mtWarning)=кмдВерно:ПрименитьВсеИзменения;EndChangingWA;
	| true:CancelChangingWA;
       fi;
     | true:CancelChangingWA;
    fi;
    wa_open=false;
    CloseWorkArea(wa);
    ClearArray;
 fi;
end;

proc OpenWorkAreaWA;
 var ss:s;
 ss=ВзятьАН_ПоСправочнику('ДВИЖ_НФА.');
 if ss='':message('Ошибка!',mterror);CloseWorkAreaWA;exit;fi;
 АН =ВыделитьСлово(1,ss,'|');
 ТАН=ВыделитьСлово(2,ss,'|');
 CloseWorkAreaWA;
 wa=OpenWorkArea('РПО_ОПЕРАЦИИДНФА','ДАТОПЕР','АН_ДНФА="'+УСЛ_АН_ДНФА+'"');
 wa_open=true;
end;

-------------------------------------------------------------------------

func УСЛ_АН_ДНФА_ПриВходе(Поле: Строка; Итер: Целое): Логич;
var ss:s;
  ss=Удалить(ВыборПризнака('ДНФА.*'),1,5);
  if ss<>'':
    if ss<>УСЛ_АН_ДНФА:
      УСЛ_АН_ДНФА=ss;
      OpenWorkAreaWA;
     | true:
       if ВопрДаОтказ('Выбрана та же операция!^MЗагрузить ее заново?',mtWarning)=кмдВерно:OpenWorkAreaWA;fi;
    fi;
  fi;
  ^false;
end;


-------------------------------------------------------------------------
proc ПриОткрытии(Создать: Логич);
  wa_open=false;
  ChangingWA=false;
  ChangingTrue=false;
  ClearArray;
  Флаг1.Visible=ChangingTrue;
  Флаг2.Visible=ChangingTrue;
end;


proc ПриЗакрытии(Уничтожить: Логич);
  CloseWorkAreaWA;
end;




func ДВИЖ_НФА_ПриВходе(Поле: Строка; i: Целое): Логич;
var ss:s;
  ss=ВыборПризнака('ДВИЖ_НФА.*');
  if ss<>'':
    if ss<>ДВИЖ_НФА[i]:
      ДВИЖ_НФА[i]=ss;
      --ДВИЖ_НФА_ЗАПИСАТЬ[i]=true;
      if not ChangingWA:BeginChangingWA;fi;
    fi;
  fi;
  ^false;
end;


proc Кнопка1_ПриНажатии(Отправитель: Строка);
 ПрименитьВсеИзменения;
 Флаг1.Visible=ChangingTrue;
 Флаг2.Visible=ChangingTrue;
 Сохранить_изменения=false;
 Отменить_изменения=false;
end;


proc Флаг1_ПриИзменении(Отправитель: Строка);
  EndChangingWA;
  BeginChangingWA;
  Сохранить_изменения=false;
  Отменить_изменения=false;
  Флаг1.Visible=ChangingTrue;
  Флаг2.Visible=ChangingTrue;
end;
proc Флаг2_ПриИзменении(Отправитель: Строка);
  CancelChangingWA;
  BeginChangingWA;
  Сохранить_изменения=false;
  Отменить_изменения=false;
  Флаг1.Visible=ChangingTrue;
  Флаг2.Visible=ChangingTrue;
end;

Func nn_OnEnter(FieldName: String; Iter: Integer): logical;
  OpenBlankEditor('НФА.ЖУР.ОПЕРАЦИИДНФА',wa,Iter);
  ^false;
end;

Конец
