-- Шаблон создан мастером бланков
-- 07.04.2009 16:16:45
--
--  МОЛ_ОТККОД	 :STRING; --МОЛ откуда код
--  МОЛ_ОТКИМЯ	 :STRING; --МОЛ откуда имя
--  МХЭ_ОТККОД_ОБЩ :STRING; --местонахождение откуда код
--  МХЭ_ОТКИМЯ_ОБЩ :STRING; --местонахождение откуда имя
--  ДОП_УСЛ_ОСТ_АН :STRING; --дополнительные условия для расчета остатков по аналитике
--  ДОП_УСЛ_ОСТ_СЧ :STRING; --дополнительные условия для расчета остатков по счетам
--  VOC_CALC_ОСТ	 :STRING; --справочники для расчета остатков

--  SUBTAB ДОК;
--    UKEYCRD :INTEGER; --ссылка на документ
--    ВИДДОК  :STRING(63); --ПРИЗНАК=ВидДОК
--  ENDSUB;




БланкСШаблоном "Справка по НФА - редактор", Редактор РПО_НФА_СПРАВКА;
BTNNAME_MENU	   :String="Справка по НФА";
func ОписаниеСпособ_Расчета(Способ:i):s;
  var ss:s;
  if Способ=0:ss='1. Коррекция ОС 25н=>148н			     ';
   | Способ=1:ss='2. Коррекция амортизации ОС под сроки начисления   ';
   | Способ=2:ss='3. Коррекция "зависшей" амортизации по списанным ОС';
   | Способ=3:ss='4. Передача  иммущества			     ';
   | Способ=4:ss='5. Коррекция ОС 25н=>148н без учн до 3000	     ';
   | Способ=5:ss='6. Бюджет=>Внебюджет				     ';
   | Способ=6:ss='7. ЗАБ.21=>101 для вооружения 		     ';
  fi;
  ^trim(ss);
end;
var ДОП_ПАРАМ_для_вывода:i;
var ДОП_ПАРАМ_ОПИСАНИЕ[]:s;
var ДОП_ПАРАМ_ЗНАЧЕНИЕ[]:s;
var ДОП_ПАРАМ_ОПИСАНИЕ1[]:s;

func get_key_value(stab:s;key:s):s;
var j:i;
if stab='ДОП_ПАРАМ':
   j=searchinarray(ДОП_ПАРАМ[].ПАРАМ_ИМЯ,key);
   if j>0:^ДОП_ПАРАМ[j].ПАРАМ_ЗНЧ;fi;
fi;
^'';
end;

proc put_key_value(stab:s;key:s;v:s);
var j:i;
if stab='ДОП_ПАРАМ':
   j=searchinarray(ДОП_ПАРАМ[].ПАРАМ_ИМЯ,key);
   if j>0:
      if ДОП_ПАРАМ[j].ПАРАМ_ЗНЧ<>v:
	 ДОП_ПАРАМ[j].ПАРАМ_ЗНЧ=v;
      fi;

    | true:
      if v<>'':
	 j=insertframe(ДОП_ПАРАМ,ДОП_ПАРАМ+1);
	 ДОП_ПАРАМ[j].ПАРАМ_ИМЯ=key;
	 put_key_value(stab,key,v);
      fi;
   fi;
fi;
end;

Позиции_tr_section :object;
Секц_шапка	   :object;

proc Показать_ДОП_ПАРАМ_для_вывода(x:i);
  ClearVariable(ДОП_ПАРАМ_ОПИСАНИЕ);
  ClearVariable(ДОП_ПАРАМ_ЗНАЧЕНИЕ);
  ClearVariable(ДОП_ПАРАМ_ОПИСАНИЕ1);
  if x<>6:ДОП_ПАРАМ_для_вывода=0;exit;fi;
  ДОП_ПАРАМ_для_вывода=2;
  ДОП_ПАРАМ_ОПИСАНИЕ[1]='Выбор ФКР';		      ДОП_ПАРАМ_ЗНАЧЕНИЕ[1]=get_key_value('ДОП_ПАРАМ','6_ФКР');
  ДОП_ПАРАМ_ОПИСАНИЕ[2]='Выбор счета "прочие доходы"';ДОП_ПАРАМ_ЗНАЧЕНИЕ[2]=get_key_value('ДОП_ПАРАМ','6_СЧЕТ_401_10_180');
  Позиции_tr_section.cell(2,4,CellReadOnly, проводить или Способ_Расчета<>6);
  Позиции_tr_section.cell(2,5,CellReadOnly, проводить или Способ_Расчета<>6);
  Позиции_tr_section.cell(3,4,CellReadOnly, проводить или Способ_Расчета<>6);
  Позиции_tr_section.cell(3,5,CellReadOnly, проводить или Способ_Расчета<>6);

  Позиции_tr_section.cell(1,18,CellReadOnly, проводить или Способ_Расчета<>6);
  Позиции_tr_section.cell(2,18,CellReadOnly, проводить или Способ_Расчета<>6);
  Позиции_tr_section.cell(3,18,CellReadOnly, проводить или Способ_Расчета<>6);
end;
proc ВыбратьДОП_ПАРАМ(iter:i);
 if iter=1:ДОП_ПАРАМ_ЗНАЧЕНИЕ[1]=ВыборПризнака('ФКР.*')    ;ДОП_ПАРАМ_ОПИСАНИЕ1[1]=Name_A(ДОП_ПАРАМ_ЗНАЧЕНИЕ[1]);put_key_value('ДОП_ПАРАМ','6_ФКР',ДОП_ПАРАМ_ЗНАЧЕНИЕ[1]);
  | iter=2:ДОП_ПАРАМ_ЗНАЧЕНИЕ[2]=ВыборСчета('*.401.10.180');ДОП_ПАРАМ_ОПИСАНИЕ1[2]=Name_S(ДОП_ПАРАМ_ЗНАЧЕНИЕ[2]);put_key_value('ДОП_ПАРАМ','6_СЧЕТ_401_10_180',ДОП_ПАРАМ_ЗНАЧЕНИЕ[2]);
 fi;
end;

ИспользоватьSQL:l;
var УчетДопАн:l=Способ_Расчета=3 или Способ_Расчета=5 или Способ_Расчета=6;
var SaveTr_l:l;--SaveTr в работе
var NN[]:i=$;
var Отладка:l;
var БылРасчитанСписокОКОФ:l;
var БылОбновленСписокОКОФ:l;
var СписокОКОФ[]:s;
var СписокАмГр[]:i;
var СписокАмГр02[]:i;
var СписокАмГр09[]:i;
var СписокГрПр[]:s;-- список групп для переоценки
var ДатаПоследнегоИзменения_РПО_НФА:d;-- для пересчета СписокОКОФ
var ВремяМодификацииСек_РПО_НФА:i;
var БланкКОД:s;

var StoreANA	   :String;
var VOCИНВ	   :String=if(if(Name_A("УЧН.")<>" ",2007, 2006)>2006, "УЧН", "ИНВ");
var VOC_ОБЯЗАТ	   :String="М.*|МОЛ.*|НФА.*|"+VOCИНВ+".*";

var список []:s=if(ДОК[$].UKEYCRD=0,'+','=>');
var ВидДОК_[]:s=Name_A(ДОК[$].ВидДОК);

var VOC_CALC_ОСТ_  :String=VOC_CALC_ОСТ;
var МОЛ_ОТККОД_    :String=МОЛ_ОТККОД;
var МОЛ_ОТКИМЯ_    :String=if(Name_A(МОЛ_ОТККОД)<>"" and Name_A(МОЛ_ОТККОД)<>" ", Name_A(МОЛ_ОТККОД), МОЛ_ОТККОД);
var МХЭ_ОТККОД_ОБЩ_:s=МХЭ_ОТККОД_ОБЩ;
var МХЭ_ОТКИМЯ_ОБЩ_:s=if(Name_A(МХЭ_ОТККОД_ОБЩ)<>"" and Name_A(МХЭ_ОТККОД_ОБЩ)<>" ", Name_A(МХЭ_ОТККОД_ОБЩ), МХЭ_ОТККОД_ОБЩ);
var УПР_ДОП_АН:l=Способ_Расчета=3;
var ДОП_АН_КОД_    :String=ДОП_АН_КОД;
var ДОП_АН_ИМЯ_    :String=if(Name_A(ДОП_АН_КОД)<>"" and Name_A(ДОП_АН_КОД)<>" ", Name_A(ДОП_АН_КОД), ДОП_АН_КОД);
НФА_ВЫВОД:i=[2];
УЧН_ВЫВОД:i=[1];
ДОПАНА_ВЫВОД:i=[2];

УслСчет      :S;
УслАналит    :S;
УслИсклАналит:S;
var Buf[]	   :String;
var КнМОЛ:s='';
var КнМ:s='';
var КнМОЛК:s='';
var КнМК:s='';
var ForSelect[]:s;
var ForSelectN[]:n;
var ForSelectN1[]:n;
Позиции_tr:i;
var УслПД_106_0   :S=РАБ.НФА.INI_SETUP.УслПД_106_0;
var УслНетАморт_0 :S=РАБ.НФА.INI_SETUP.УслНетАморт_0;
var НФА_КОД	[]:S;
var НФА_КОД_	[]:S=Раб.НФА.B01.2ВыводП0(НФА_КОД[$],НФА_ВЫВОД);

var УЧН_КОД	[]:S;
var УЧН_КОД_	[]:S=Раб.НФА.B01.2ВыводП_ИНВ0(НФА_КОД[$],УЧН_КОД[$],УЧН_ВЫВОД,' ','/');
var КОЛНФА	[]:n;
var СУМНФА	[]:n;
var СУМНФА_	[]:n=СУМНФА[$];
var АМСУМНФА	[]:n;
var СЧНФА	[]:S;
var СЧНФАЗАБ	[]:S;
var СЧНФАКРЕ	[]:S;
var АМСЧНФА	[]:S;
var АМСЧНФАДЕБ	[]:S;
var ОСТНФА	[]:S;
var ОСТАМНФА	[]:S;
var ДОПАНА01	[]:S;
var ДОПАНА02	[]:S;
var ДОПАНА03	[]:S;
var ДОПАНА04	[]:S;
var ДОПАНА05	[]:S;
var ДОПАНА06	[]:S;
var ДОПАНА07	[]:S;
var ДОПАНА08	[]:S;
var ДОПАНА09	[]:S;
var ДОПАНА10	[]:S;
var ДОПАНА_	[]:S=Раб.НФА.B01.ФорматСтрокиАн(ДОПАНА01[$]+' '+ДОПАНА02[$]+' '+ДОПАНА03[$]+' '+ДОПАНА04[$]+' '+ДОПАНА05[$]+' '+ДОПАНА06[$]+' '+ДОПАНА07[$]+' '+ДОПАНА08[$]+' '+ДОПАНА09[$]+' '+ДОПАНА10[$],' ',chr(13),ДОПАНА_ВЫВОД);
var СУММА1	[]:N;
var СУММА2	[]:N;
var СУММА3	[]:N;
var КОЛ1	[]:N;
var КОЛ2	[]:N;
var КОЛ3	[]:N;
var СчДеб1	[]:S;
var СчКре1	[]:S;
var СчДеб2	[]:S;
var СчКре2	[]:S;
var СчДеб3	[]:S;
var СчКре3	[]:S;
var ИтогСумма:n=SumOfArray(СУММА1,Позиции_tr)+SumOfArray(СУММА2,Позиции_tr)+SumOfArray(СУММА3,Позиции_tr);
var ИтогКол  :n=SumOfArray(КОЛ1  ,Позиции_tr)+SumOfArray(КОЛ2  ,Позиции_tr)+SumOfArray(КОЛ3  ,Позиции_tr);
var ДЭКСПЛ	[]:D;
var ДУЧЕТ	[]:D;
var ИСКЛ	[]:L;
var КМНТ_	[]:S;
var КМНТ1	[]:S;
var КМНТ2	[]:S;
var КМНТ3	[]:S;
var ОБЩАН1	[]:S;
var ОБЩАН2	[]:S;
var ОБЩАН3	[]:S;
var НЕТАМОРТ	[]:I;


2Func0 2ИспользованыПризнаки0(УслНаПризнаки:s):l;
  ^ЕстьПроводки('{'+УслНаПризнаки+'}',1.1.100,1.1.2099);
2end0;
Proc ЗаполнитьУЧН;
var j:i;
var sg,a,ДопПр:s;
 a='УЧН.?????';
 ClearVariable(ForSelect);
 for j=1..Позиции_tr do
   ДопПр=НФА_КОД[j]+'&';
      for sign sg=a do
	if не _ИспользованыПризнаки.(ДопПр+sg):
	   if searchinarray(ForSelect,ДопПр+sg,true,1)<1:
	      ОБЩАН1[j]=УЧН_КОД[j];УЧН_КОД[j]='';
	      ОБЩАН2[j]=sg;
	      ОБЩАН3[j]=sg;
	      addinarray(ForSelect,true,false,ДопПр+sg);
	      break;
	   fi;
	fi;
      od;
 od;
 ClearVariable(ForSelect);
2end0;


Proc ЗаполнитьСписокАмГр_ГрПр;
 var wa,rs,i,j,k,p:i;
 var ss,okof:s;
 k=ДлинаМассива(СписокОКОФ);
 j=0;
 okof='';
 While k>j do
   While k>j do
    j=j+1;ss=okof+' '+СписокОКОФ[j];
    if Длина(ss)>233:j=j-1;break;
     | true:okof=ss;
    fi;
   od;
   wa=OpenWorkArea('РПО_ОКОФ','КОД_ОКОФ','pos(КОД_ОКОФ,"'+okof+'")>0');   --
     rs=Records(wa);
     for i=1..rs do
      ss=Trim(GetFieldS(wa,i,'КОД_ОКОФ'));
      p=ПоискВмассиве(СписокОКОФ,ss,true);
      if p>0:СписокАмГр[p]  =int(GetFieldS(wa,i,'АМОРТ_ГР'));
	     СписокАмГр02[p]=int(GetFieldS(wa,i,'АМОРТ_ГР02'));
	     СписокАмГр09[p]=int(GetFieldS(wa,i,'АМОРТ_ГР09'));
	     СписокГрПр[p]  =GetFieldS(wa,i,'ГР_ПЕРЕОЦЕНКИ');
      fi;
     od;
   CloseWorkArea(wa);
   okof='';
 od;
end;

Proc ЗаполнитьСписокОКОФ;
 var wa,rs,i:i;
 var ss:s;
 if БылОбновленСписокОКОФ:exit;fi;
 if не БылРасчитанСписокОКОФ:БылРасчитанСписокОКОФ=true;
   ClearVariable(СписокОКОФ);
   ClearVariable(СписокАмГр);
   ClearVariable(СписокАмГр02);
   ClearVariable(СписокАмГр09);
   ClearVariable(СписокГрПр);
   ClearVariable(ДатаПоследнегоИзменения_РПО_НФА);
   ClearVariable(ВремяМодификацииСек_РПО_НФА);
 fi;
 if ДатаПоследнегоИзменения_РПО_НФА<1.1.2000:ДатаПоследнегоИзменения_РПО_НФА=1.1.2000;fi;
 ss=DateToString(ДатаПоследнегоИзменения_РПО_НФА);
 wa=OpenWorkArea('РПО_НФА','ОКОФ','length(ОКОФ)>8 and UpdateTime>='+ss+' and UpdateTimeSec>'+str(ВремяМодификацииСек_РПО_НФА));   -- sql вариант= LEN([ОКОФ])>8 and Convert(VarChar,[UpdateTime],108)>'00:01:40'
   rs=Records(wa);
   for i=1..rs do ДобавитьВмассив(СписокОКОФ,true,false,Trim(GetFieldS(wa,i,'ОКОФ')));od;
 CloseWorkArea(wa);
 ВремяМодификацииСек_РПО_НФА=Время;
 ДатаПоследнегоИзменения_РПО_НФА=Сегодня;
 if rs>0:ЗаполнитьСписокАмГр_ГрПр;fi;
 БылОбновленСписокОКОФ=true;
end;
Func ВзятьНомерПоОКОФ(КдОКОФ:s):i;
  ЗаполнитьСписокОКОФ;
  ^ПоискВмассиве(СписокОКОФ,Trim(КдОКОФ),true);
end;
Func ВзятьГРПРПоОКОФ(КдОКОФ:s):s;
  if соотв(КдОКОФ,'11.*') or соотв(КдОКОФ,'12.*') or соотв(КдОКОФ,'13.*'):^'ЗДАНИЯ';fi;
  ЗаполнитьСписокОКОФ;
  ^СписокГрПр[ПоискВмассиве(СписокОКОФ,Trim(КдОКОФ),true)];
end;




var EDIT	[]:l;
--Способ_Расчета:i;
var Flag_onEnter :Logical;
var NewREC	 :Logical=(CurrentState=crdusInserted);
var SelfCRD	 :String="РПО_НФА_СПРАВКА";
var кнОК	 :String="ОК";
var кнЗкр	 :String="Закрыть";
--var CopyClosedModFob:l=ClosedModFob;
Var SQLver:l;	 -- расчитывается при открытии бланка (шаблонпослеоткрытия)
cbПроводить	 :Object;

ФлCopyClosedModFob:object;
var CopyClosedModFob:l=ClosedModFob;
var установили_блокировку:l;
2func UpdateTimeSecCurrent:i;^UpdateTimeSec;end;-- функция обязательная для работы с SQL запросами

func РазрешеноРедактирование:l;
 if (ClosedModFob or Проводить):
    if Проводить:Beep(16);Сообщение('Операция проведена!'+chr(13)+'Для редактирования записи снимите флажок ПРОВОДИТЬ ОПЕРАЦИЮ.',mtWarning);
     | ClosedModFob:EditorCancel;Beep(16);Сообщение('Операция заблокирована!'+chr(13)+'Для редактирования записи снимите флажок БЛОКИРОВКА.',mtWarning);
    fi;
   ^false;
 fi;
 ^true;
end;
func Заблокирована:l;
 if ClosedModFob:EditorCancel;Beep(16);Сообщение('Операция заблокирована!'+chr(13)+'Для редактирования записи снимите флажок БЛОКИРОВКА.',mtWarning);
   ^true;
 fi;
 ^false;
end;


Proc ClearVartr;
 ClearVariable(НФА_КОД	 );
 ClearVariable(УЧН_КОД	 );
 ClearVariable(КОЛНФА	 );
 ClearVariable(СУМНФА	 );
 ClearVariable(АМСУМНФА  );
 ClearVariable(СЧНФА	 );
 ClearVariable(СЧНФАЗАБ  );
 ClearVariable(СЧНФАКРЕ  );
 ClearVariable(АМСЧНФА	 );
 ClearVariable(АМСЧНФАДЕБ);
 ClearVariable(ОСТНФА	 );
 ClearVariable(ОСТАМНФА  );
 ClearVariable(ДОПАНА01  );
 ClearVariable(ДОПАНА02  );
 ClearVariable(ДОПАНА03  );
 ClearVariable(ДОПАНА04  );
 ClearVariable(ДОПАНА05  );
 ClearVariable(ДОПАНА06  );
 ClearVariable(ДОПАНА07  );
 ClearVariable(ДОПАНА08  );
 ClearVariable(ДОПАНА09  );
 ClearVariable(ДОПАНА10  );
 ClearVariable(СУММА1	 );
 ClearVariable(СУММА2	 );
 ClearVariable(СУММА3	 );
 ClearVariable(КОЛ1	 );
 ClearVariable(КОЛ2	 );
 ClearVariable(КОЛ3	 );
 ClearVariable(ДЭКСПЛ	 );
 ClearVariable(ДУЧЕТ	 );
 ClearVariable(ИСКЛ	 );
 ClearVariable(КМНТ_	 );
 ClearVariable(КМНТ1	 );
 ClearVariable(КМНТ2	 );
 ClearVariable(КМНТ3	 );
 ClearVariable(ОБЩАН1	 );
 ClearVariable(ОБЩАН2	 );
 ClearVariable(ОБЩАН3	 );
 ClearVariable(СЧДЕБ1	 );
 ClearVariable(СЧКРЕ1	 );
 ClearVariable(СЧДЕБ2	 );
 ClearVariable(СЧКРЕ2	 );
 ClearVariable(СЧДЕБ3	 );
 ClearVariable(СЧКРЕ3	 );
 ClearVariable(EDIT	 );
 ClearVariable(НЕТАМОРТ  );
 ClearVariable(Позиции_tr);
end;  
Proc ClearVartr_iter(iter:i);
 НФА_КОД   [iter]='';
 УЧН_КОД   [iter]='';
 КОЛНФА    [iter]=0;
 СУМНФА    [iter]=0;
 АМСУМНФА  [iter]=0;
 СЧНФА	   [iter]='';
 СЧНФАЗАБ  [iter]='';
 СЧНФАКРЕ  [iter]='';
 АМСЧНФА   [iter]='';
 АМСЧНФАДЕБ[iter]='';
 ОСТНФА    [iter]='';
 ОСТАМНФА  [iter]='';
 ДОПАНА01  [iter]='';
 ДОПАНА02  [iter]='';
 ДОПАНА03  [iter]='';
 ДОПАНА04  [iter]='';
 ДОПАНА05  [iter]='';
 ДОПАНА06  [iter]='';
 ДОПАНА07  [iter]='';
 ДОПАНА08  [iter]='';
 ДОПАНА09  [iter]='';
 ДОПАНА10  [iter]='';
 СУММА1    [iter]=0;
 СУММА2    [iter]=0;
 СУММА3    [iter]=0;
 КОЛ1	   [iter]=0;
 КОЛ2	   [iter]=0;
 КОЛ3	   [iter]=0;
 ДЭКСПЛ    [iter]=1.1.100;
 ДУЧЕТ	   [iter]=1.1.100;
 ИСКЛ	   [iter]=false;
 КМНТ_	   [iter]='';
 КМНТ1	   [iter]='';
 КМНТ2	   [iter]='';
 КМНТ3	   [iter]='';
 ОБЩАН1    [iter]='';
 ОБЩАН2    [iter]='';
 ОБЩАН3    [iter]='';
 СЧДЕБ1    [iter]='';
 СЧКРЕ1    [iter]='';
 СЧДЕБ2    [iter]='';
 СЧКРЕ2    [iter]='';
 СЧДЕБ3    [iter]='';
 СЧКРЕ3    [iter]='';
 EDIT	   [iter]=false;
 НЕТАМОРТ  [iter]=0;
end;  
Proc ОчиститьПОЗИЦИИ_поле_tr;
var t:i;
  for t=1..ПОЗИЦИИ do
    ПОЗИЦИИ[t].tr=nil;
  od;
end;
Proc ОчиститьПОЗИЦИИtr;
var wa :Integer;
 ОчиститьПОЗИЦИИ_поле_tr;
 РедакторПрименить;
 ClearVariable(ПОЗИЦИИ);
 РедакторПрименить;
 wa=OpenWorkArea('РПО_НФА_СПРАВКА_ПРОВОДКИ','','РПО_НФА_СПРАВКА='+RecordToString(Current)+' or НФА_СПРАВКА="'+НФА_СПРАВКА+'"');
 try
   beginchanging(wa);
   deleteallrecords(wa);
   endchanging(wa);
   CloseWorkArea(wa);
 except
 CancelChanging(wa);
 CloseWorkArea(wa);
 Message('Ошибка при удалении записей из картотеки^MРПО_НФА_СПРАВКА_ПРОВОДКИ',тсОшибка);
 end;
-- ClearVartr;
end;

func ff(ff:s):s;
ff='|'+ff+'='+ff;
^ff;
end;

Проц LoadTr_sql;
var z,j:i;
var lst,field_to_field:ls;
var ss:s;
var crd_sql1,crd_sql2,crd_sql3,crd_tbb:s;
crd_sql1=GetRealCardfileName('РПО_НФА_СПРАВКА_ПРОВОДКИ');
crd_sql2=GetRealCardfileName('РПО_НФА_СПРАВКА');
crd_sql3=SubStr(crd_sql2,1,length(crd_sql2)-1)+'@ПОЗИЦИИ]';
crd_tbb ='РПО_НФА_СПРАВКА';
field_to_field='УЧН_КОД=УЧН_КОД';
lst='';
ss='НФА_КОД КОЛНФА СУМНФА АМСУМНФА СЧНФА СЧНФАЗАБ СЧНФАКРЕ АМСЧНФА АМСЧНФАДЕБ ОСТНФА ОСТАМНФА ДОПАНА01 ДОПАНА02 ДОПАНА03 ДОПАНА04 ДОПАНА05 ДОПАНА06 ДОПАНА07 ДОПАНА08 ДОПАНА09 ДОПАНА10 СУММА1 СУММА2 СУММА3 КОЛ1 КОЛ2 КОЛ3 ДЭКСПЛ ДУЧЕТ';
z=КоличествоСлов(ss,' ');
for j=1..z do
  field_to_field=field_to_field+ff(ВыделитьСлово(j,ss,' '));
od;
ss='ИСКЛ КМНТ_ КМНТ1 КМНТ2 КМНТ3 ОБЩАН1 ОБЩАН2 ОБЩАН3 СЧДЕБ1 СЧКРЕ1 СЧДЕБ2 СЧКРЕ2 СЧДЕБ3 СЧКРЕ3 НЕТАМОРТ EDIT';
z=КоличествоСлов(ss,' ');
for j=1..z do
  field_to_field=field_to_field+ff(ВыделитьСлово(j,ss,' '));
od;
     lst=lst+' '+trim('        SELECT * 		  ');
     lst=lst+' '+trim(' 	 FROM '+crd_sql1+' crd1 WITH (NOLOCK)			    ');
--     lst=lst+' '+trim('	   , '+crd_sql2+' crd2 WITH (NOLOCK)			   ');
     lst=lst+' '+trim(' 	 , '+crd_sql3+' crd3 WITH (NOLOCK)			 ');
     lst=lst+' '+trim(' 	 WHERE				     ');
     lst=lst+' '+trim(' 	 crd3.cardukey='+str(recordtointeger(current)));
     lst=lst+' '+trim(' 	 and crd1.ukey=crd3.tr				     ');
     lst=lst+' '+trim('order by crd1.UKEY ASC				    ');

--z=Раб.НФА.B00sql.COUNTinCRD('РПО_НФА_СПРАВКА',GetRealCardfileName('РПО_НФА_СПРАВКА_ПРОВОДКИ'),'',false );
z=Раб.SQL.LoadRowsSelect(crd_tbb,lst,true,field_to_field,'');

--message(str(z));
end;


Proc LoadTr;
 var t:i;
 ShowProgress(позиции,'Открытие справки...');
 if SQLQueryEnabled and ИспользоватьSQL:
    LoadTr_sql;
    Позиции_tr=позиции;
    CloseProgress;
    exit;
 fi;
 ClearVartr;
 Позиции_tr=позиции;
 for t=1..позиции do
     ProgressPos(t);
     НФА_КОД   [t]=позиции[t].tr.НФА_КОД    ;
     УЧН_КОД   [t]=позиции[t].tr.УЧН_КОД    ;
     КОЛНФА    [t]=позиции[t].tr.КОЛНФА     ;
     СУМНФА    [t]=позиции[t].tr.СУМНФА     ;
     АМСУМНФА  [t]=позиции[t].tr.АМСУМНФА   ;
     СЧНФА     [t]=позиции[t].tr.СЧНФА	    ;
     СЧНФАЗАБ  [t]=позиции[t].tr.СЧНФАЗАБ   ;
     СЧНФАКРЕ  [t]=позиции[t].tr.СЧНФАКРЕ   ;
     АМСЧНФА   [t]=позиции[t].tr.АМСЧНФА    ;
     АМСЧНФАДЕБ[t]=позиции[t].tr.АМСЧНФАДЕБ ;
     ОСТНФА    [t]=позиции[t].tr.ОСТНФА     ;
     ОСТАМНФА  [t]=позиции[t].tr.ОСТАМНФА   ;
     ДОПАНА01  [t]=позиции[t].tr.ДОПАНА01   ;
     ДОПАНА02  [t]=позиции[t].tr.ДОПАНА02   ;
     ДОПАНА03  [t]=позиции[t].tr.ДОПАНА03   ;
     ДОПАНА04  [t]=позиции[t].tr.ДОПАНА04   ;
     ДОПАНА05  [t]=позиции[t].tr.ДОПАНА05   ;
     ДОПАНА06  [t]=позиции[t].tr.ДОПАНА06   ;
     ДОПАНА07  [t]=позиции[t].tr.ДОПАНА07   ;
     ДОПАНА08  [t]=позиции[t].tr.ДОПАНА08   ;
     ДОПАНА09  [t]=позиции[t].tr.ДОПАНА09   ;
     ДОПАНА10  [t]=позиции[t].tr.ДОПАНА10   ;
     СУММА1    [t]=позиции[t].tr.СУММА1     ;
     СУММА2    [t]=позиции[t].tr.СУММА2     ;
     СУММА3    [t]=позиции[t].tr.СУММА3     ;
     КОЛ1      [t]=позиции[t].tr.КОЛ1	    ;
     КОЛ2      [t]=позиции[t].tr.КОЛ2	    ;
     КОЛ3      [t]=позиции[t].tr.КОЛ3	    ;
     ДЭКСПЛ    [t]=позиции[t].tr.ДЭКСПЛ     ;
     ДУЧЕТ     [t]=позиции[t].tr.ДУЧЕТ	    ;
     ИСКЛ      [t]=позиции[t].tr.ИСКЛ	    ;
     КМНТ_     [t]=позиции[t].tr.КМНТ	    ;
     КМНТ1     [t]=позиции[t].tr.КМНТ1	    ;
     КМНТ2     [t]=позиции[t].tr.КМНТ2	    ;
     КМНТ3     [t]=позиции[t].tr.КМНТ3	    ;
     ОБЩАН1    [t]=позиции[t].tr.ОБЩАН1     ;
     ОБЩАН2    [t]=позиции[t].tr.ОБЩАН2     ;
     ОБЩАН3    [t]=позиции[t].tr.ОБЩАН3     ;
     СЧДЕБ1    [t]=позиции[t].tr.СЧДЕБ1     ;
     СЧКРЕ1    [t]=позиции[t].tr.СЧКРЕ1     ;
     СЧДЕБ2    [t]=позиции[t].tr.СЧДЕБ2     ;
     СЧКРЕ2    [t]=позиции[t].tr.СЧКРЕ2     ;
     СЧДЕБ3    [t]=позиции[t].tr.СЧДЕБ3     ;
     СЧКРЕ3    [t]=позиции[t].tr.СЧКРЕ3     ;
     НЕТАМОРТ  [t]=позиции[t].tr.НЕТАМОРТ   ;
     EDIT      [t]=позиции[t].tr.EDIT	    ;
 od;
 CloseProgress;
end;  

Proc SaveTr;
 var wa,rs,ii,nr:i;
 var ll:l;
 var ss:s;
 SaveTr_l=true;
    if ПОЗИЦИИ>0:
       if ПОЗИЦИИ[1].TR.Способ_Расчета<>Способ_Расчета:Способ_Расчета=ПОЗИЦИИ[1].TR.Способ_Расчета;fi;
    fi;
 -- проверка количества проводок
    wa=OpenWorkArea('РПО_НФА_СПРАВКА_ПРОВОДКИ','','РПО_НФА_СПРАВКА='+RecordToString(Current)+' or НФА_СПРАВКА="'+НФА_СПРАВКА+'"');
--    wa=OpenWorkArea('РПО_НАЧ_АМОРТ_TR','','ПЕРИОД='+ПЕРИОД);
    rs=records(wa);
    CloseWorkArea(wa);
    ll=rs=ПОЗИЦИИ and ПОЗИЦИИ=ПОЗИЦИИ_tr and ПОЗИЦИИ_tr>0;
    if ll:-- сравниваем построчно
      ShowProgress(rs,'Запись данных - проверка...');
      for ii=1..rs do
	ProgressPos(ii);
	ll=ll and ПОЗИЦИИ[ii].tr<>nil;
	if ll:
	  ll=ll
	  and (current	     =ПОЗИЦИИ[ii].tr.РПО_НФА_СПРАВКА )
	  and (НФА_СПРАВКА   =ПОЗИЦИИ[ii].tr.НФА_СПРАВКА     )
	  and (ПРОВОДИТЬ     =ПОЗИЦИИ[ii].tr.ПРОВОДИТЬ	     )
	  and (ДАТАОПЕР      =ПОЗИЦИИ[ii].tr.ДАТАОПЕР	     )
	  and (СПОСОБ_РАСЧЕТА=ПОЗИЦИИ[ii].tr.СПОСОБ_РАСЧЕТА  )
	  and (НФА_КОД	 [ii]=позиции[ii].tr.НФА_КОД	  )
	  and (УЧН_КОД	 [ii]=позиции[ii].tr.УЧН_КОД	  )
	  and (КОЛНФА	 [ii]=позиции[ii].tr.КОЛНФА	  )
	  and (СУМНФА	 [ii]=позиции[ii].tr.СУМНФА	  )
	  and (АМСУМНФА  [ii]=позиции[ii].tr.АМСУМНФА	  )
	  and (СЧНФА	 [ii]=позиции[ii].tr.СЧНФА	  )
	  and (СЧНФАЗАБ  [ii]=позиции[ii].tr.СЧНФАЗАБ	  )
	  and (СЧНФАКРЕ  [ii]=позиции[ii].tr.СЧНФАКРЕ	  )
	  and (АМСЧНФА	 [ii]=позиции[ii].tr.АМСЧНФА	  )
	  and (АМСЧНФАДЕБ[ii]=позиции[ii].tr.АМСЧНФАДЕБ   )
	  and (ОСТНФА	 [ii]=позиции[ii].tr.ОСТНФА	  )
	  and (ОСТАМНФА  [ii]=позиции[ii].tr.ОСТАМНФА	  )
	  and (ДОПАНА01  [ii]=позиции[ii].tr.ДОПАНА01	  )
	  and (ДОПАНА02  [ii]=позиции[ii].tr.ДОПАНА02	  )
	  and (ДОПАНА03  [ii]=позиции[ii].tr.ДОПАНА03	  )
	  and (ДОПАНА04  [ii]=позиции[ii].tr.ДОПАНА04	  )
	  and (ДОПАНА05  [ii]=позиции[ii].tr.ДОПАНА05	  )
	  and (ДОПАНА06  [ii]=позиции[ii].tr.ДОПАНА06	  )
	  and (ДОПАНА07  [ii]=позиции[ii].tr.ДОПАНА07	  )
	  and (ДОПАНА08  [ii]=позиции[ii].tr.ДОПАНА08	  )
	  and (ДОПАНА09  [ii]=позиции[ii].tr.ДОПАНА09	  )
	  and (ДОП_АН_КОД    =позиции[ii].tr.ДОПАНА10	  )
--	    and (ДОПАНА10  [ii]=позиции[ii].tr.ДОПАНА10     )
	  and (СУММА1	 [ii]=позиции[ii].tr.СУММА1	  )
	  and (СУММА2	 [ii]=позиции[ii].tr.СУММА2	  )
	  and (СУММА3	 [ii]=позиции[ii].tr.СУММА3	  )
	  and (КОЛ1	 [ii]=позиции[ii].tr.КОЛ1	  )
	  and (КОЛ2	 [ii]=позиции[ii].tr.КОЛ2	  )
	  and (КОЛ3	 [ii]=позиции[ii].tr.КОЛ3	  )

	  and (ДЭКСПЛ	 [ii]=позиции[ii].tr.ДЭКСПЛ	  )
	  and (ДУЧЕТ	 [ii]=позиции[ii].tr.ДУЧЕТ	  )
	  and (ИСКЛ	 [ii]=позиции[ii].tr.ИСКЛ	  )
	  and (КМНТ_	 [ii]=позиции[ii].tr.КМНТ	  )
	  and (КМНТ1	 [ii]=позиции[ii].tr.КМНТ1	  )
	  and (КМНТ2	 [ii]=позиции[ii].tr.КМНТ2	  )
	  and (КМНТ3	 [ii]=позиции[ii].tr.КМНТ3	  )
	  and (ОБЩАН1	 [ii]=позиции[ii].tr.ОБЩАН1	  )
	  and (ОБЩАН2	 [ii]=позиции[ii].tr.ОБЩАН2	  )
	  and (ОБЩАН3	 [ii]=позиции[ii].tr.ОБЩАН3	  )
	  and (СЧДЕБ1	 [ii]=позиции[ii].tr.СЧДЕБ1	  )
	  and (СЧКРЕ1	 [ii]=позиции[ii].tr.СЧКРЕ1	  )
	  and (СЧДЕБ2	 [ii]=позиции[ii].tr.СЧДЕБ2	  )
	  and (СЧКРЕ2	 [ii]=позиции[ii].tr.СЧКРЕ2	  )
	  and (СЧДЕБ3	 [ii]=позиции[ii].tr.СЧДЕБ3	  )
	  and (СЧКРЕ3	 [ii]=позиции[ii].tr.СЧКРЕ3	  )
	  and (НЕТАМОРТ  [ii]=позиции[ii].tr.НЕТАМОРТ	  )
	  and (EDIT	 [ii]=позиции[ii].tr.EDIT	  );
	fi;
	if not ll:break;fi;
      od;
      CloseProgress;
    fi;
    if not ll:-- нашли несоответствие!
      -- зачистка проводок по периоду
      ОчиститьПОЗИЦИИtr;
      rs=ПОЗИЦИИ_tr;
      if rs>0:
	ShowProgress(rs,'Запись данных - сохранение...');
	wa=OpenWorkArea('РПО_НФА_СПРАВКА_ПРОВОДКИ','','РПО_НФА_СПРАВКА='+RecordToString(Current));
	  beginchanging(wa);
	    for ii=1..rs do
	      ProgressPos(ii);
	      nr=InsertRecord(wa);
	      nr=PutFieldR(wa,nr,'РПО_НФА_СПРАВКА',Current	 );
	      nr=PutFieldS(wa,nr,'НФА_СПРАВКА'	  ,НФА_СПРАВКА	 );
	      nr=PutFieldL(wa,nr,'ПРОВОДИТЬ'	  ,ПРОВОДИТЬ	 );
	      nr=PutFieldD(wa,nr,'ДАТАОПЕР'	  ,ДАТАОПЕР	 );
	      nr=PutFieldI(wa,nr,'СПОСОБ_РАСЧЕТА' ,СПОСОБ_РАСЧЕТА);
	      nr=PutFieldS(wa,nr,'НФА_КОД'    ,НФА_КОД	 [ii]);
	      nr=PutFieldS(wa,nr,'УЧН_КОД'    ,УЧН_КОД	 [ii]);
	      nr=PutFieldN(wa,nr,'КОЛНФА'     ,КОЛНФА	 [ii]);
	      nr=PutFieldN(wa,nr,'СУМНФА'     ,СУМНФА	 [ii]);
	      nr=PutFieldN(wa,nr,'АМСУМНФА'   ,АМСУМНФА  [ii]);
	      nr=PutFieldS(wa,nr,'СЧНФА'      ,СЧНФА	 [ii]);
	      nr=PutFieldS(wa,nr,'СЧНФАЗАБ'   ,СЧНФАЗАБ  [ii]);
	      nr=PutFieldS(wa,nr,'СЧНФАКРЕ'   ,СЧНФАКРЕ  [ii]);
	      nr=PutFieldS(wa,nr,'АМСЧНФА'    ,АМСЧНФА	 [ii]);
	      nr=PutFieldS(wa,nr,'АМСЧНФАДЕБ' ,АМСЧНФАДЕБ[ii]);
	      nr=PutFieldS(wa,nr,'ОСТНФА'     ,ОСТНФА	 [ii]);
	      nr=PutFieldS(wa,nr,'ОСТАМНФА'   ,ОСТАМНФА  [ii]);
	      nr=PutFieldS(wa,nr,'ДОПАНА01'   ,ДОПАНА01  [ii]);
	      nr=PutFieldS(wa,nr,'ДОПАНА02'   ,ДОПАНА02  [ii]);
	      nr=PutFieldS(wa,nr,'ДОПАНА03'   ,ДОПАНА03  [ii]);
	      nr=PutFieldS(wa,nr,'ДОПАНА04'   ,ДОПАНА04  [ii]);
	      nr=PutFieldS(wa,nr,'ДОПАНА05'   ,ДОПАНА05  [ii]);
	      nr=PutFieldS(wa,nr,'ДОПАНА06'   ,ДОПАНА06  [ii]);
	      nr=PutFieldS(wa,nr,'ДОПАНА07'   ,ДОПАНА07  [ii]);
	      nr=PutFieldS(wa,nr,'ДОПАНА08'   ,ДОПАНА08  [ii]);
	      nr=PutFieldS(wa,nr,'ДОПАНА09'   ,ДОПАНА09  [ii]);
	      nr=PutFieldS(wa,nr,'ДОПАНА10'   ,ДОП_АН_КОД    );
	      ДОПАНА10[ii]=ДОП_АН_КОД;
--		nr=PutFieldS(wa,nr,'ДОПАНА10'	,ДОПАНА10  [ii]);
              nr=PutFieldN(wa,nr,'СУММА1'     ,round(СУММА1[ii],2));
              nr=PutFieldN(wa,nr,'СУММА2'     ,round(СУММА2[ii],2));
              nr=PutFieldN(wa,nr,'СУММА3'     ,round(СУММА3[ii],2));
	      nr=PutFieldN(wa,nr,'КОЛ1'       ,КОЛ1	 [ii]);
	      nr=PutFieldN(wa,nr,'КОЛ2'       ,КОЛ2	 [ii]);
	      nr=PutFieldN(wa,nr,'КОЛ3'       ,КОЛ3	 [ii]);

	      nr=PutFieldD(wa,nr,'ДЭКСПЛ'     ,ДЭКСПЛ	 [ii]);
	      nr=PutFieldD(wa,nr,'ДУЧЕТ'      ,ДУЧЕТ	 [ii]);
	      nr=PutFieldL(wa,nr,'ИСКЛ'       ,ИСКЛ	 [ii]);
	      nr=PutFieldS(wa,nr,'КМНТ'       ,КМНТ_	 [ii]);
	      nr=PutFieldS(wa,nr,'КМНТ1'      ,КМНТ1	 [ii]);
	      nr=PutFieldS(wa,nr,'КМНТ2'      ,КМНТ2	 [ii]);
	      nr=PutFieldS(wa,nr,'КМНТ3'      ,КМНТ3	 [ii]);
	      nr=PutFieldS(wa,nr,'ОБЩАН1'     ,ОБЩАН1	 [ii]);
	      nr=PutFieldS(wa,nr,'ОБЩАН2'     ,ОБЩАН2	 [ii]);
	      nr=PutFieldS(wa,nr,'ОБЩАН3'     ,ОБЩАН3	 [ii]);
	      nr=PutFieldS(wa,nr,'СЧДЕБ1'     ,СЧДЕБ1	 [ii]);
	      nr=PutFieldS(wa,nr,'СЧКРЕ1'     ,СЧКРЕ1	 [ii]);
	      nr=PutFieldS(wa,nr,'СЧДЕБ2'     ,СЧДЕБ2	 [ii]);
	      nr=PutFieldS(wa,nr,'СЧКРЕ2'     ,СЧКРЕ2	 [ii]);
	      nr=PutFieldS(wa,nr,'СЧДЕБ3'     ,СЧДЕБ3	 [ii]);
	      nr=PutFieldS(wa,nr,'СЧКРЕ3'     ,СЧКРЕ3	 [ii]);
	      nr=PutFieldL(wa,nr,'EDIT'       ,EDIT	 [ii]);
	      nr=PutFieldI(wa,nr,'НЕТАМОРТ'   ,НЕТАМОРТ  [ii]);
	      nr=PutFieldR(wa,nr,'РПО_НФА_СПРАВКА',CURRENT);
	      if ПОЗИЦИИ<ii:insertframe(ПОЗИЦИИ,ПОЗИЦИИ+1);fi;
	      ПОЗИЦИИ[ii].tr=GetRecordKey(wa,nr);
	    od;
	  endchanging(wa);
	CloseWorkArea(wa);
      fi;
      CloseProgress;
    fi;
   SaveTr_l=false;
end;  

Func TemplateSaveOK :Logical; -- проверка правильности ввода данных
-- if ДатОтчСлед=1.1.100:
--   Message("Укажите период отчета!", mtWarning);
--   Template.Field="ОтчМесСтр";
--   ^False;
-- fi;
 if Позиции_tr=0:
   Message("Сначала необходимо сделать расчет!", mtWarning);
   Template.Object="btnРасчет"; 
   ^False;
 fi;
 ^True;
end;
--Func ДобавитьСправочникОстатков(PrevValue:String) :String;
--var qq :Integer;
-- ClearVariable(Buf);
-- Buf[1]="Добавить пользовательский справочник к уже имеющимся.";
-- Buf[2]="Считать справочники настроенные в операции 'ВНПР.ЭЭ'.";
-- qq=Alternate("Выберите действие...", Buf, -1, 1, 12);
-- if qq=1: ^AddVocUSER(PrevValue);
-- |  qq=2: ^AddVocOPER(PrevValue, False);
-- else ^PrevValue;
-- fi;
--end;
Func ВыборМОЛ(PrevValue:String) :String;
var res :String;
 res=AnaElection("МОЛ.*", False, False, PrevValue);
 if res="": ^PrevValue; fi;
 ^res;
end;
Func ВыборМ(PrevValue:String) :String;
var res :String;
 res=AnaElection("М.*", False, False, PrevValue);
 if res="": ^PrevValue; fi;
 ^res;
end;
Func ОтменитьИзмененияУсловийОтчета :Logical;
var FF :Logical;
var qq :Integer;
 FF=False;
 if Позиции>0:
   qq=EnqOkCancel("Условия отбора данных для отчета изменились!^MОчистить отчет?", mtConfirmation);
   if qq=cmOk: --Очистить; ОчиститьТаблицу; ClearVariable(Позиции);
   |  qq=cmCancel: FF=True;
   fi;
 fi;
 ^FF;
end;

Func УдалитьСловоИзНабора_Диалог(Set:String; SepSet:String) :String;
var num, i, nn :Integer;
 ClearVariable(Buf);
 num=WordsCount(Set, SepSet);
 if num<2: ^""; fi;
 for i=1 to num do Buf[i+1]=ExtractWord(i, Set, SepSet); od;
 Buf[1]="Удалить все";
 nn=Alternate("Удаление...", Buf, -1, 1, 12);
 if nn=0: ^Set; fi;
 Set="";
 if nn=1: ^Set; fi;
 num=num+1;
 for i=2 to num do if not i=nn: Set=Set+SepSet+Buf[i]; fi; od;
 Set=SubStr(Set, Length(SepSet)+1, 255);
 ^Set;
end;

--var txt[]:s;
--Func MatchMask(Src:String; Mask:String; SepMask:String) :Logical;
--var i, num :Integer;
--var tmp :String;
-- num=WordsCount(Mask, SepMask);
-- for i=1 to num do
--   tmp=ExtractWord(i, Mask, SepMask);
--   if Match(Src, tmp): ^True; fi;
-- od;
-- ^if(num=0, Match(Src, Mask), False);
--end;
--Func Объединить(Value1:String; Value2:String; Separator:String) :String;
--var Ret :String;
-- if Value1<>"" and Value2<>"": Ret=Value1+Separator+Value2;
-- |  Value1= "" and Value2<>"": Ret=Value2;
-- |  Value1<>"" and Value2="" : Ret=Value1;
-- |  True: Ret="";
-- fi;
-- ^Ret;
--end;
--Func НаборСлов_Маску(Set:String; SetSep:String; MaskSep:String; Множество:Logical) :String;
----Возвращает маску набора слов "Set"
--var num, ii :Integer;
--var Res, voc :String;
-- Res="";
-- num=WordsCount(Set, SetSep);
-- if num>0:
--    for ii=1 to num do
--	voc=Trim(GetAnaGlossary(ExtractWord(ii, Set, SetSep)));
--	if voc<>"": Res=Res+MaskSep+voc+if(Множество, ".*", ""); fi;
--    od;
--    if Res<>"": Res=Trim(SubStr(Res, Length(MaskSep)+1, 255)); fi;
-- fi;
-- ^Res;
--end;

--Func МаскаОбязательныхСправочников(Acc:String; ДопПризн:String) :String;
--var SetVoc, mask :String;
--var ii, len :Integer;
--  ClearVariable(Txt);
--  SetVoc= SignsMask (Acc, True);
--  if SetVoc<>"":
--     len=WordsCount(SetVoc, "|");
--     for ii=1 to len do
--	 mask=ExtractWord(ii, SetVoc, "|");
--	 if not MatchMask(mask, Объединить(VOC_ОБЯЗАТ, НаборСлов_Маску(ДопПризн, " ", "|", True), "|"), "|"):
--	    if SearchInArray(Txt, mask, True)<0: InsertInArraySort(Txt, mask); fi;
--	 fi;
--     od;
--  fi;
--  mask="";
--  len=LengthOfArray(Txt);
--  if len>0: for ii=1 to len do mask=mask+"|"+Txt[ii]; od; else mask=""; fi;
--  if mask<>"": mask=SubStr(mask, 2, 255); fi;
--  ^mask;
--end;

Proc ВыбратьДопПризнак(Iter:Integer);
var tmp, mask :String;
--var num, jj, ii, len :Integer;
  mask=РАБ.БЮДЖЕТ2005.СписокСправ('*.401.10.180',0,VOC_ОБЯЗАТ);
  if mask='':Message('Отсутствует недостающая дополнительная аналитика!');
     exit;
  fi;
  ДОП_АН_КОД=ВыборПризнака(mask);
--  ДОП_АН_КОД=ВыборПризнака(МаскаОбязательныхСправочников('*.101.38.310',''));
--  ДОП_АН_КОД=ВыборПризнака('ПБС.*');
--  mask=МаскаОбязательныхСправочников(tmp, Позиции[Iter].ДОПАНАИТОГО);
--  if mask="": Message("Аналитические признаки не требуются!", mtInformation); Exit; fi;
--  tmp=AnaElection(mask);
--  if tmp="": Exit; fi;
--  -- ***
--  ClearVariable(Buf);
--  Buf[1]="Добавить значение в текущую ячейку";
--  Buf[2]="Добавить значение во все ячейки таблицы";
--  num=Alternate("Выберите действие...", Buf, -1, 1, 12);
--  if num=1: ii=Iter; len=Iter;
--  |  num=2: ii=1;    len=Позиции;
--  else Exit;
--  fi;
--  for jj=ii to len do
--    Позиции[jj].Призн=ДобавитьПризнак(Позиции[jj].Призн, tmp);
--    Позиции[jj].Призн=СортироватьНаборСлов(Позиции[jj].Призн, " ", True);
--  od;
end;

2-- События клеток
Func Field_onEnter(Field:String; Iter:Integer): Logical; -- на входе в клетку
var nn, Store :Integer;
var tmp :String;
var REC :Record;
 Flag_onEnter=False;
 if Field="кнОк"	: if ClosedModFob=False: Savetr;EditorApply; fi; Close; ^False;
 |  Field="кнЗкр"	: if ClosedModFob=False: EditorCancel; fi; Close; ^False;
 |  Field="VOC_CALC_ОСТ_" : StoreANA=VOC_CALC_ОСТ;
--			      VOC_CALC_ОСТ=ДобавитьСправочникОстатков(VOC_CALC_ОСТ);
--			      if VOC_CALC_ОСТ<>StoreANA: if ОтменитьИзмененияУсловийОтчета: VOC_CALC_ОСТ=StoreANA; fi; fi;
--			      СформироватьСтолбцыАналитики(VOC_CALC_ОСТ);
			    ^False;
 |  Field="МОЛ_ОТККОД_"   : StoreANA=МОЛ_ОТККОД;
                            if Способ_Расчета=1:
                              МОЛ_ОТККОД=AnaElection("МОЛ.*|НФА.*", False, False, StoreANA);
                             | true:МОЛ_ОТККОД=ВыборМОЛ(МОЛ_ОТККОД);
                            fi;

			    if МОЛ_ОТККОД<>StoreANA: 
--				 if ОтменитьИзмененияУсловийОтчета:
--				    МОЛ_ОТККОД=StoreANA;
--				 fi;
			    fi;
			    ^False;
 |  Field="МХЭ_ОТККОД_ОБЩ_": StoreANA=МХЭ_ОТККОД_ОБЩ;
			    МХЭ_ОТККОД_ОБЩ=ВыборМ(МХЭ_ОТККОД_ОБЩ);
			    if МХЭ_ОТККОД_ОБЩ<>StoreANA: 
--				 if ОтменитьИзмененияУсловийОтчета:
--				    МХЭ_ОТККОД_ОБЩ=StoreANA;
--				 fi;
			    fi;
			    ^False;
 |  Field="ДОП_АН_КОД_"        : 
    if Способ_Расчета=10:ВыбратьДопПризнак(1);
     | true:ВыбратьДопПризнак(0);
    fi;

 |  Field="ДОП_ПАРАМ_ЗНАЧЕНИЕ": ВыбратьДОП_ПАРАМ(Iter);
			    ^False;
 fi;
 ^True;
end;

Proc Field_onExit(Field:String; Iter:Integer); -- на выходе из клетки
 if Field="VOC_CALC_ОСТ_"  : StoreANA=VOC_CALC_ОСТ;
			    VOC_CALC_ОСТ=УдалитьСловоИзНабора_Диалог(VOC_CALC_ОСТ, "|");
--			      if VOC_CALC_ОСТ<>StoreANA: if ОтменитьИзмененияУсловийОтчета: VOC_CALC_ОСТ=StoreANA; fi; fi;
--			      СформироватьСтолбцыАналитики(VOC_CALC_ОСТ);
 |  Field="МОЛ_ОТККОД_"    : StoreANA=МОЛ_ОТККОД;
			    МОЛ_ОТККОД=УдалитьСловоИзНабора_Диалог(МОЛ_ОТККОД, "|");
--			      if МОЛ_ОТККОД<>StoreANA: if ОтменитьИзмененияУсловийОтчета: МОЛ_ОТККОД=StoreANA; fi; fi;
 |  Field="МХЭ_ОТККОД_ОБЩ_": StoreANA=МХЭ_ОТККОД_ОБЩ;
			    МХЭ_ОТККОД_ОБЩ=УдалитьСловоИзНабора_Диалог(МХЭ_ОТККОД_ОБЩ, "|");
--			      if МХЭ_ОТККОД_ОБЩ<>StoreANA: if ОтменитьИзмененияУсловийОтчета: МХЭ_ОТККОД_ОБЩ=StoreANA; fi; fi;
 |  Field="ДОП_АН_КОД_"    : StoreANA=ДОП_АН_КОД;ДОП_АН_КОД=УдалитьСловоИзНабора_Диалог(ДОП_АН_КОД, " ");
 fi;
-- if Field="ОтчГод" : if Flag_onEnter=True and ОтчГод<>ОтчГодOld: if ОтменитьИзмененияУсловийОтчета: ОтчГод=ОтчГодOld; fi; fi;
--		       if ОтчГод=0: ОтчГод=ОтчГодOld; fi;
-- |  Field="ПризнД_"  : ПризнД=РАБ.БЮДЖЕТ2005.УдалитьСловоИзНабора_Диалог(ПризнД, " ");
---- |	Field="УслПД_106": СохранитьНастройкиСправочников('УслПД_106',УслПД_106);
---- |	Field="УслСПР"	 : СохранитьНастройкиСправочников('УслСПР'   ,УслСПР   );

-- fi;
 Flag_onEnter=False;
end;

Func Field_OnValidateI(Field:String; Iter:Integer; Value:Integer): Logical;
-- if Value<0 : Message('Нельзя вводить отрицательное число.', mtError); ^False; fi;
-- if Field="ОтчГод":
--   if Value<1990 or Value>2090 : Message('Отчетный год задан вне допустимого диапазона.^M[1990-2090 гг.]', mtError); ^False; fi;
--   ОтчГодOld=Value;
-- fi;
 ^True;
end;
2-- События объектов
Proc Флаги_onChange(Sender:String);
var Flag, Old, Work :Logical;
var tmp :String;
var nn :Integer;
var ОбъектИмя :Object;
 Work=False;
 if FindObject(Sender, ОбъектИмя): Work=True; fi;
 if Work:
   tmp="f"+SubStr(Sender, 3, Length(Sender)); -- вычисляем имя переменной
   Flag=GetVariableL(tmp); -- текущий статус;
   Old=not(Flag); -- предыдущий статус
   nn=cmOk;
--   if Sender="cbПровЭкспл":
--     nn=EnqOkCancel("Включение данного флага может существенно увеличить время расчета!^MПродолжить?", mtWarning);
--     if nn=cmCancel: Flag=Old; fi;
--   fi;
--   if nn=cmOk:
--     if ОтменитьИзмененияУсловийОтчета: Flag=Old; fi;
--   fi;
   PutVariableL(tmp, Flag);
   ОбъектИмя.State=Flag;
 fi;
end;  

Proc cbПроводить_onChange(Sender:String);
var Flag, SaveOK :Logical;
var n :Integer;
 if Проводить=False:
    SaveOK=True; -- если защита 'снимается' значит проверка данных уже производилась
    n=EnqOkCancel("Вы действительно хотите исключить данный документ из обработки?", mtConfirmation);
    if n=cmCancel: Flag=True; else Flag=False; fi;
   else
    if ПОЗИЦИИ>0:
       if ПОЗИЦИИ[1].TR.Способ_Расчета<>Способ_Расчета:Способ_Расчета=ПОЗИЦИИ[1].TR.Способ_Расчета;fi;
    fi;
    SaveOK=TemplateSaveOK; Flag=SaveOK;SaveTr;
 fi;
 Проводить=Flag; cbПроводить.State=Проводить;
  Позиции_tr_section.cell(2,4,CellReadOnly, проводить или Способ_Расчета<>6);
  Позиции_tr_section.cell(2,5,CellReadOnly, проводить или Способ_Расчета<>6);
  Позиции_tr_section.cell(3,4,CellReadOnly, проводить или Способ_Расчета<>6);
  Позиции_tr_section.cell(3,5,CellReadOnly, проводить или Способ_Расчета<>6);
  Позиции_tr_section.cell(1,18,CellReadOnly, проводить или Способ_Расчета<>6);
  Позиции_tr_section.cell(2,18,CellReadOnly, проводить или Способ_Расчета<>6);
  Позиции_tr_section.cell(3,18,CellReadOnly, проводить или Способ_Расчета<>6);
 --ТолькоЧтение(Flag);
 if not(SaveOK): Exit; fi; -- Избегаем двойных сообщений
 EditorApply;
end;

Proc ФлCopyClosedModFob_onChange(Sender:String);
var Flag :Logical;
var q :Integer;
var obj :object;
     if not ClosedModFob:ClosedModFob=true;--блокировка от удаления
--	  if FindObject('ФлCopyClosedModFob',obj):obj.State=true;fi;
--	  ФлCopyClosedModFob.State=true;
--	  ФлCopyClosedModFob.State=false;
      | true:-- надо снять флаг
	Раб.SQL.SetClosedModFobUpdateOnBlankEditor_false(SelfCRD,current,5,SQLver,false);
     fi;
     установили_блокировку=true;
--     ФлCopyClosedModFob.State=ClosedModFob;
     РедакторПрименить;
     установили_блокировку=false;
--	  if FindObject('ФлCopyClosedModFob',obj):obj.State=true;fi;
--     ФлCopyClosedModFob.State=ClosedModFob;
     --exit;

end;
2-- События шаблона

Proc ШаблонПриСчитывании;
   if НФА_СПРАВКА='':НФА_СПРАВКА=Раб.СТР.ЗаменаПодстроки(substr(getguid,2,36),'-','_');fi;
   if Способ_Расчета=3 or Способ_Расчета=5:
     if ДОК=0:
	insertframe(ДОК,1);
	ДОК[1].ВИДДОК='ВИДДОК.НФА.ДОКУМЕНТЫ.АКТЫ.ОКУД_0306031';
     fi;
     if ДОК=1:
	if ДОК[1].ВИДДОК='ВИДДОК.НФА.ДОКУМЕНТЫ.АКТЫ.ОКУД_0306031':
	  insertframe(ДОК,2);
	  ДОК[2].ВИДДОК='ВИДДОК.НФА.ДОКУМЕНТЫ.НАКЛАДНЫЕ.РПО_НАКЛАДНАЯ_М15';
	fi;
     fi;
   fi;
   Показать_ДОП_ПАРАМ_для_вывода(Способ_Расчета);
   LoadTr;
end;		    


Proc Удалитьсправку_OnClick(Row: Integer; Col: Integer; Double: Logical);
 var wa:i;
  if вопрдаотказ('Даная справка будет удалена! Вы уверены?',mtWarning)=кмдВерно:
    SaveTr_l=true;
    ОчиститьПОЗИЦИИtr;
    ClearVartr;
    SaveTr_l=false;
    wa=OpenWorkArea(SelfCRD,'','UKEY='+RecordToString(current));
    try
     BeginChanging(wa);
      УдалитьЗапись(wa,1);
     EndChanging(wa);
    CloseWorkArea(wa);
    except
     CancelChanging(wa);
    CloseWorkArea(wa);
    end;
  fi;
  Close;
end;

--var НФА_КОД	  []:S;
--var УЧН_КОД	  []:S;
--var КОЛНФА	  []:n;
--var СУМНФА	  []:n;
--var АМСУМНФА	  []:n;
--var СЧНФА	  []:S;
--var СЧНФАЗАБ	  []:S;
--var СЧНФАКРЕ	  []:S;
--var АМСЧНФА	  []:S;
--var АМСЧНФАДЕБ  []:S;
--var ОСТНФА	  []:S;
--var ОСТАМНФА	  []:S;
--var ДОПАНА_	  []:S=ДОПАНА01[$]+' '+ДОПАНА02[$]+' '+ДОПАНА03[$]+' '+ДОПАНА04[$]+' '+ДОПАНА05[$]+' '+ДОПАНА06[$]+' '+ДОПАНА07[$]+' '+ДОПАНА08[$]+' '+ДОПАНА09[$]+' '+ДОПАНА10[$];
--var СУММА1	  []:N;
--var СУММА2	  []:N;
--var СУММА3	  []:N;
--var КОЛ1	  []:N;
--var КОЛ2	  []:N;
--var КОЛ3	  []:N;
--var СчДеб1	  []:S;
--var СчКре1	  []:S;
--var СчДеб2	  []:S;
--var СчКре2	  []:S;
--var СчДеб3	  []:S;
--var СчКре3	  []:S;
--var ДЭКСПЛ	  []:D;
--var ДУЧЕТ	  []:D;
--var ИСКЛ	  []:L;
--var КМНТ_	  []:S;
func АмортНаДатуЛинейно(НФА:s;УЧН:s;ДУЧЕТ_:d;ДЭКСПЛ_:d;ДАТАОПЕР_:d;НЕТМЕСАМОРТ:i;RO:i;ver_tb_net:l):n;--расчет процента амортизации при линейном начислении на дату
  var dd:d;
  var pp,p,КЛГРУПП:i;
  var СрокАм,nn:n;
  var tmp,ss,postfix:s;
  ДАТАОПЕР_=дат(1,мес(ДАТАОПЕР_),год(ДАТАОПЕР_));
  dd=Раб.СТР.MinDebDat2(ДУЧЕТ_,ДЭКСПЛ_);
  if not ver_tb_net:
     pp=ВзятьНомерЗаписи(RO,SignToRecord(НФА, False));
   | true:
     tmp="UKey="+RecordToString(SignToRecord(НФА, False));
     SetFilter(RO, tmp);
     if Records(RO)<>1: Message("Ошибка обработки списка НФА...", mtError); ^-1; fi;
     pp=1;
  fi;
--  НормаАморт=0;
  КЛГРУПП=0;СрокАм=0;--СумАмМес=0;
  ss=GetFieldS(RO, pp ,"ОКОФ");
  p=ВзятьНомерПоОКОФ(ss);
  if dd<1.1.2007:postfix='02';
   | dd<1.1.2009:postfix='';
   | true:postfix='09';
  fi;

  if postfix='09':-- с датой ввода в эксплуатацию с 2009 и более
    if p>0:КЛГРУПП=СписокАмГр09[p];
       if КЛГРУПП=0:--2009 неопределен - пытаемся выбрать до 2009 г
	  postfix='';КЛГРУПП=СписокАмГр[p];
       fi;
    fi;
    if КЛГРУПП=10:СрокАм=int(GetFieldN(RO, pp, "СрокАм"+postfix)*12);
--	 if СрокАм<=(РАБ.НФА.B01.ВзятьСрокАмортГруппы(КЛГРУПП-1)*12):СрокАм=РАБ.НФА.B01.ВзятьСрокАмортГруппы(КЛГРУПП)*12;fi;
       if СрокАм<10:СрокАм=РАБ.НФА.B01.ВзятьСрокАмортГруппы(КЛГРУПП)*12;fi;
     | КЛГРУПП>0	     :СрокАм=РАБ.НФА.B01.ВзятьСрокАмортГруппы(КЛГРУПП)*12;
     | true:

     СрокАм=int(GetFieldN(RO, pp, "СрокАм"+postfix)*12);
    fi;
    if СрокАм>0:СрокАм=СрокАм+НЕТМЕСАМОРТ;fi;-- добавляем к сроку месеца пропущенные на консервации
    nn=РАБ.НФА.B01.ПолныхМесяцев(dd,ДАТАОПЕР_);
    if nn>=СрокАм:^1;fi;
    ^nn/СрокАм;
--    if МетодАморт_0=1:--начисляем с коррекцией под срок
--	 if СрокАм>0:СрокАм=int(deb(СрокАм+1-РАБ.НФА.B01.ПолныхМесяцев(dd,ddBA)));fi;
--	 if СрокАм>0:СумАмМес=trunc((ЦенаИ-НФАамортИ/КОЛИ)/СрокАм,2);
--	  | true: СумАмМес=ЦенаИ;
--	 fi;
--	 НормаАморт=СумАмМес*1200/ЦенаИ;
--     | true:--начисляем линейно
--	 НормаАморт=1200/СрокАм;
--    fi;
   | postfix='':-- с датой ввода в эксплуатацию с 2007 по 31.12.2008
    if p>0:КЛГРУПП=СписокАмГр[p];fi;
    if КЛГРУПП=10:СрокАм=int(GetFieldN(RO, pp, "СрокАм"+postfix)*12);
--	 if СрокАм<=(РАБ.НФА.B01.ВзятьСрокАмортГруппы(КЛГРУПП-1)*12):СрокАм=РАБ.НФА.B01.ВзятьСрокАмортГруппы(КЛГРУПП)*12;fi;
       if СрокАм<10:СрокАм=РАБ.НФА.B01.ВзятьСрокАмортГруппы(КЛГРУПП)*12;fi;
     | КЛГРУПП>0	     :СрокАм=РАБ.НФА.B01.ВзятьСрокАмортГруппы(КЛГРУПП)*12;
     | true:СрокАм=int(GetFieldN(RO, pp, "СрокАм"+postfix)*12);
    fi;
    if СрокАм>0:СрокАм=СрокАм+НЕТМЕСАМОРТ;fi;-- добавляем к сроку месеца пропущенные на консервации
    nn=РАБ.НФА.B01.ПолныхМесяцев(dd,ДАТАОПЕР_);
    if nn>=СрокАм:^1;fi;
    ^nn/СрокАм;
   | true:-- с датой ввода в эксплуатацию до 2007
--	if линейно_при_дэкспл_до2007:НормаАморт=GetFieldN(RO, pp, "НОРМАМОРТ"+postfix);fi;
--	if НормаАморт=0:-- пытаемся вычислить норму по ОКОФ

	 if p>0:КЛГРУПП=СписокАмГр02[p];fi;
	 if КЛГРУПП=10:СрокАм=int(GetFieldN(RO, pp, "СрокАм"+postfix)*12);
--	      if СрокАм<=(РАБ.НФА.B01.ВзятьСрокАмортГруппы(КЛГРУПП-1)*12):СрокАм=РАБ.НФА.B01.ВзятьСрокАмортГруппы(КЛГРУПП)*12;fi;
	    if СрокАм<10:СрокАм=РАБ.НФА.B01.ВзятьСрокАмортГруппы(КЛГРУПП)*12;fi;
	  | КЛГРУПП>0		  :СрокАм=РАБ.НФА.B01.ВзятьСрокАмортГруппы(КЛГРУПП)*12;
	  | true:СрокАм=int(GetFieldN(RO, pp, "СрокАм"+postfix)*12);
	 fi;
	 if СрокАм>0:СрокАм=СрокАм+НЕТМЕСАМОРТ;fi;-- добавляем к сроку месеца пропущенные на консервации
	 nn=РАБ.НФА.B01.ПолныхМесяцев(dd,ДАТАОПЕР_);
	 if nn>=СрокАм:^1;fi;
	 ^nn/СрокАм;

--	   if МетодАморт_0=1:--начисляем с коррекцией под срок
--	      if СрокАм>0:СрокАм=int(deb(СрокАм+1-РАБ.НФА.B01.ПолныхМесяцев(dd,ddBA)));fi;
--	      if СрокАм>0:СумАмМес=trunc((ЦенаИ-НФАамортИ/КОЛИ)/СрокАм,2);
--	       | true: СумАмМес=ЦенаИ;
--	      fi;
--	      НормаАморт=СумАмМес*1200/ЦенаИ;
--	    | true:--начисляем линейно
--	      НормаАморт=1200/СрокАм;
--	   fi;
--	fi;

  fi;
--fi;

^0;
end;

var НФА_НЕСПИСЫВАТЬДО1000[]:i;
var НФА_АМОРТ0[]:i;
Proc Load_НФА_НЕСПИСЫВАТЬДО1000;
 var wa,rs,z:i;
     ClearVariable(НФА_НЕСПИСЫВАТЬДО1000);
     wa=OpenWorkArea('РПО_НФА','','НЕСПИСЫВАТЬДО1000');
     rs=records(wa);
     for z=1..rs do
       addinarray(НФА_НЕСПИСЫВАТЬДО1000,true,false,RecordToInteger(GetRecordKey(wa,z)));
     od;
     CloseWorkArea(wa);
end;
Proc Load_НФА_АМОРТ0;
 var wa,rs,z:i;
     ClearVariable(НФА_АМОРТ0);
     wa=OpenWorkArea('РПО_НФА','','АМОРТ0');
     rs=records(wa);
     for z=1..rs do
       addinarray(НФА_АМОРТ0,true,false,RecordToInteger(GetRecordKey(wa,z)));
     od;
     CloseWorkArea(wa);
end;

 Proc SaveDataAs0;
 var t,xx,z,zz,poz,q,z_any_ref_list,Позиции_tr_x,trx,rec:i;
 var ss,ss0,sacc,sacc0:s;
 var ll,УслНетАморт_1:l;
 var ОС_100,ОС_РАСХ,цена:n;
 z_any_ref_list=количествослов(Раб.НФА.Свертка.any_ref_list,'|');

 ОС_100 =Общ_Пер('ОС_100' ,ДАТАОПЕР);
 ОС_РАСХ=Общ_Пер('ОС_РАСХ',ДАТАОПЕР);
 Позиции_tr=1;
 Позиции_tr_x=1;
 xx=lengthofarray(Раб.НФА.Свертка.salddata);
 ShowProgress(xx,'Расчет справки...');
 if xx>0:
    ss0=выделитьслова(1,2,Раб.НФА.Свертка.salddata[1],'|');
     НФА_КОД[Позиции_tr_x]=Раб.НФА.Свертка.sig[int(выделитьслово(1,Раб.НФА.Свертка.salddata[1],'|'))];
     УЧН_КОД[Позиции_tr_x]=Раб.НФА.Свертка.sig[int(выделитьслово(2,Раб.НФА.Свертка.salddata[1],'|'))];
    --ss0=Раб.НФА.Свертка.sig[int(выделитьслово(1,Раб.НФА.Свертка.salddata[1],'|'))]+'|'+Раб.НФА.Свертка.sig[int(выделитьслово(2,Раб.НФА.Свертка.salddata[1],'|'))];
 fi;
 for t=1..xx+1 do
  ProgressPos(t);
--  zz=количествослов(salddata[t],'|');
  ss=выделитьслова(1,2,Раб.НФА.Свертка.salddata[t],'|');
--  ss=Раб.НФА.Свертка.sig[int(выделитьслово(1,Раб.НФА.Свертка.salddata[t],'|'))]+'|'+Раб.НФА.Свертка.sig[int(выделитьслово(2,Раб.НФА.Свертка.salddata[t],'|'))];
  if ss<>ss0 or t>xx:q=0;
     for trx=Позиции_tr..Позиции_tr_x do
       if length(СЧНФА[trx])=33:
	  if КОЛНФА[trx]<>0:цена=СУМНФА[trx]/КОЛНФА[trx];
	   | true:цена=СУМНФА[trx];
	  fi;
	  УслНетАморт_1=false;
	  if УслНетАморт_0<>'':ll=false;
	     if not ll:if НФА_КОД[trx]<>'':ll=Раб.НФА.B01.2СоотвПризнака0(НФА_КОД[trx],УслНетАморт_0);fi;fi;
	     if not ll:if УЧН_КОД[trx]<>'':ll=Раб.НФА.B01.2СоотвПризнака0(УЧН_КОД[trx],УслНетАморт_0);fi;fi;
	     if not ll:if ДОПАНА01[trx]<>'':ll=Раб.НФА.B01.2СоотвПризнака0(ДОПАНА01[trx],УслНетАморт_0);fi;
		if not ll:if ДОПАНА02[trx]<>'':ll=Раб.НФА.B01.2СоотвПризнака0(ДОПАНА02[trx],УслНетАморт_0);fi;
		   if not ll and z_any_ref_list>0:if ДОПАНА03[trx]<>'':ll=Раб.НФА.B01.2СоотвПризнака0(ДОПАНА03[trx],УслНетАморт_0);fi;
		      if not ll and z_any_ref_list>1:if ДОПАНА04[trx]<>'':ll=Раб.НФА.B01.2СоотвПризнака0(ДОПАНА04[trx],УслНетАморт_0);fi;
			 if not ll and z_any_ref_list>2:if ДОПАНА05[trx]<>'':ll=Раб.НФА.B01.2СоотвПризнака0(ДОПАНА05[trx],УслНетАморт_0);fi;
			    if not ll and z_any_ref_list>3:if ДОПАНА06[trx]<>'':ll=Раб.НФА.B01.2СоотвПризнака0(ДОПАНА06[trx],УслНетАморт_0);fi;
			       if not ll and z_any_ref_list>4:if ДОПАНА07[trx]<>'':ll=Раб.НФА.B01.2СоотвПризнака0(ДОПАНА07[trx],УслНетАморт_0);fi;
				  if not ll and z_any_ref_list>5:if ДОПАНА08[trx]<>'':ll=Раб.НФА.B01.2СоотвПризнака0(ДОПАНА08[trx],УслНетАморт_0);fi;
				     if not ll and z_any_ref_list>6:if ДОПАНА09[trx]<>'':ll=Раб.НФА.B01.2СоотвПризнака0(ДОПАНА09[trx],УслНетАморт_0);fi;
					if not ll and z_any_ref_list>7:if ДОПАНА10[trx]<>'':ll=Раб.НФА.B01.2СоотвПризнака0(ДОПАНА10[trx],УслНетАморт_0);fi;
					fi;
				     fi;
				  fi;
			       fi;
			    fi;
			 fi;
		      fi;
		   fi;
		fi;
	     fi;
	     УслНетАморт_1=ll;
	  fi;
	  if цена<=ОС_100 and цена>ОС_РАСХ:-- от 3000 до 40000
	     rec=RecordToInteger(ПризнакВзапись(НФА_КОД[trx],false));
	     if rec>0:if КартотекаПризнака(НФА_КОД[trx],false)<>'РПО_НФА':rec=0;fi;
		if rec>0:rec=SearchInArray(НФА_АМОРТ0,rec,true);fi;
	     fi;
	     if match(СЧНФА[trx],'???.????.???????.???.?.101.1?.???'):rec=1;fi;
	     if rec<1:
		if  (ДЭКСПЛ[trx]>1.1.100 or pos(' М.Э.',' '+ДОПАНА02[trx])>0):
		    if -АМСУМНФА[trx]<>СУМНФА[trx]:q=1;-- доначислить аморт до 100%
		    fi;
		 |  ДЭКСПЛ[trx]=1.1.100 and not pos(' М.Э.',' '+ДОПАНА02[trx])>0 and ДУЧЕТ[trx]>31.12.2010 and -АМСУМНФА[trx]>0:q=2;-- новое ОС принято к учету в 2011г - снимаем всю амортизацию
		fi;
	     fi;
	   | цена<=ОС_РАСХ: -- до 3000
	     rec=RecordToInteger(ПризнакВзапись(НФА_КОД[trx],false));
	     if rec>0:if КартотекаПризнака(НФА_КОД[trx],false)<>'РПО_НФА':rec=0;fi;
		if rec>0:rec=SearchInArray(НФА_НЕСПИСЫВАТЬДО1000,rec,true);fi;
	     fi;
	     if rec<1:
		sacc=ВыделитьСлова(6,2,СЧНФА[trx],'.');
		if pos(sacc,'101.31 101.32 101.33 101.34 101.35 101.36 101.38 102.30')>0:
		  if ДЭКСПЛ[trx]>31.12.2008:q=3;--должно быть списано с баланса на 401.20.271 (104 сторно)
		   | (ДЭКСПЛ[trx]>1.1.100 or pos(' М.Э.',' '+ДОПАНА02[trx])>0) and ДЭКСПЛ  [trx]<01.01.2009:q=4;--должно быть списано с баланса на 104
		   | ДЭКСПЛ[trx]=1.1.100 and not pos(' М.Э.',' '+ДОПАНА02[trx])>0 and АМСУМНФА[trx]<>0:q=4;--должно быть списано с баланса на 104
		  fi;
		fi;
	     fi;
	  fi;
       fi;
       if УслНетАморт_1:
	  q=0; -- при попадении в условие не начислять амортизацию - выкидываем ОС из справки
--	    if q=1:q=2;-- снимаем амортизацию под 0
--	     | q=2:q=2;-- снимаем амортизацию под 0
--	     | q=3:q=2;-- снимаем амортизацию под 0
--	     | q=4:q=2;-- снимаем амортизацию под 0
--	    fi;
       fi;
       if q>0  :
	     sacc0=ВыделитьСлова(КоличествоСлов(СЧНФА[trx],'.')-2,2,СЧНФА[trx],'.');
--	       sacc0=ВыделитьСлова(2,2,НФА_КОД[trx],'.');
	     if pos(sacc0,'101.11 101.12 101.13 101.31 101.32 101.33 101.34 101.15 101.35 101.36 101.37 101.18 101.38')>0:АМСЧНФА[trx]=SubStr(СЧНФА[trx],1,23)+'104.'+ВыделитьСлово(2,sacc0,'.')+'.410';
--		| sacc0='101.09':АМСЧНФА[trx]=SubStr(СЧНФА[trx],1,23)+'104.08.410';
	      | sacc0='102.30':АМСЧНФА[trx]=SubStr(СЧНФА[trx],1,23)+'104.09.420';
	     fi;
--	    fi;
	  if АМСЧНФАДЕБ[trx]='':
	     sacc0=ВыделитьСлово(5,СЧНФА[trx],'.');
	     АМСЧНФАДЕБ[trx]=SubStr(АМСЧНФА[trx],1,23)+'401.20.271';
	     if sacc0='2' or sacc0='4':-- 2 - внебюджет - проверка на 2.106.04
		if УслПД_106_0<>'':ll=false;
		   if not ll:if НФА_КОД[trx]<>'':ll=Раб.НФА.B01.2СоотвПризнака0(НФА_КОД[trx],УслПД_106_0);fi;fi;
		   if not ll:if УЧН_КОД[trx]<>'':ll=Раб.НФА.B01.2СоотвПризнака0(УЧН_КОД[trx],УслПД_106_0);fi;fi;
		   if not ll:if ДОПАНА01[trx]<>'':ll=Раб.НФА.B01.2СоотвПризнака0(ДОПАНА01[trx],УслПД_106_0);fi;
		      if not ll:if ДОПАНА02[trx]<>'':ll=Раб.НФА.B01.2СоотвПризнака0(ДОПАНА02[trx],УслПД_106_0);fi;
			 if not ll and z_any_ref_list>0:if ДОПАНА03[trx]<>'':ll=Раб.НФА.B01.2СоотвПризнака0(ДОПАНА03[trx],УслПД_106_0);fi;
			    if not ll and z_any_ref_list>1:if ДОПАНА04[trx]<>'':ll=Раб.НФА.B01.2СоотвПризнака0(ДОПАНА04[trx],УслПД_106_0);fi;
			       if not ll and z_any_ref_list>2:if ДОПАНА05[trx]<>'':ll=Раб.НФА.B01.2СоотвПризнака0(ДОПАНА05[trx],УслПД_106_0);fi;
				  if not ll and z_any_ref_list>3:if ДОПАНА06[trx]<>'':ll=Раб.НФА.B01.2СоотвПризнака0(ДОПАНА06[trx],УслПД_106_0);fi;
				     if not ll and z_any_ref_list>4:if ДОПАНА07[trx]<>'':ll=Раб.НФА.B01.2СоотвПризнака0(ДОПАНА07[trx],УслПД_106_0);fi;
					if not ll and z_any_ref_list>5:if ДОПАНА08[trx]<>'':ll=Раб.НФА.B01.2СоотвПризнака0(ДОПАНА08[trx],УслПД_106_0);fi;
					   if not ll and z_any_ref_list>6:if ДОПАНА09[trx]<>'':ll=Раб.НФА.B01.2СоотвПризнака0(ДОПАНА09[trx],УслПД_106_0);fi;
					      if not ll and z_any_ref_list>7:if ДОПАНА10[trx]<>'':ll=Раб.НФА.B01.2СоотвПризнака0(ДОПАНА10[trx],УслПД_106_0);fi;
					      fi;
					   fi;
					fi;
				     fi;
				  fi;
			       fi;
			    fi;
			 fi;
		      fi;
		   fi;
		   if ll:АМСЧНФАДЕБ[trx]=SubStr(АМСЧНФА[trx],1,23)+'109.60.271';fi;
		fi;
	     fi;
	  fi;
	  if q=1: -- от 3000 до 40000 доначислить аморт до 100%
	       СУММА1[trx]=СУМНФА    [trx]+АМСУМНФА[trx];
	       if СУММА1[trx]<>0:
		  СчДеб1[trx]=АМСЧНФАДЕБ[trx];
		  СчКре1[trx]=АМСЧНФА	[trx];
		  КМНТ1 [trx]='стоимость от 3000 до 40000=> доначислить аморт до 100%';
	       fi;
	   | q=2:-- новое ОС принято к учету в 2009г - снимаем всю амортизацию
	       СУММА1[trx]=АМСУМНФА  [trx];
	       if СУММА1[trx]<>0:
		  СчДеб1[trx]=АМСЧНФАДЕБ[trx];
		  СчКре1[trx]=АМСЧНФА	[trx];
		  КМНТ1 [trx]='стоимость от 3000 до 40000 новое ОС принято к учету в 2011г=> снимаем всю амортизацию';
	       fi;
	   | q=3:--должно быть списано с баланса на 401.20.271 (104 сторно)
		  СУММА1[trx]=АМСУМНФА	[trx];
	       if СУММА1[trx]<>0:
		  СчДеб1[trx]=АМСЧНФАДЕБ[trx];
		  СчКре1[trx]=АМСЧНФА	[trx];
		  КМНТ1 [trx]='стоимость до 3000 ОС 2009г=> 104 сторно';
	       fi;

	       СУММА2[trx]=СУМНФА    [trx];
	       КОЛ2  [trx]=КОЛНФА    [trx];
	       if СУММА2[trx]<>0 or КОЛ2[trx]<>0:
		  СчДеб2[trx]=АМСЧНФАДЕБ[trx];
		  СчКре2[trx]=СЧНФАКРЕ	[trx];
		  КМНТ2 [trx]='стоимость до 3000 ОС 2009г=> списание';
	       fi;

	       СУММА3[trx]=СУМНФА    [trx];
	       КОЛ3  [trx]=КОЛНФА    [trx];
	       if СУММА3[trx]<>0 or КОЛ3[trx]<>0:
		  СчДеб3[trx]=СЧНФАЗАБ	[trx];
		  СчКре3[trx]='ЗАБАЛАНС';
		  КМНТ3 [trx]='стоимость до 3000 ОС 2009г=> к учету по забалансу';
	       fi;
	   | q=4:--должно быть списано с баланса на 104
	       СУММА1[trx]=СУМНФА    [trx]+АМСУМНФА[trx];--доначисляем до 100%
	       if СУММА1[trx]<>0:
		  СчДеб1[trx]=АМСЧНФАДЕБ[trx];
		  СчКре1[trx]=АМСЧНФА	[trx];
		  КМНТ1 [trx]='стоимость до 3000 ОС до 2009г=> доначислить аморт до 100%';
	       fi;

	       СУММА2[trx]=СУМНФА    [trx];
	       КОЛ2  [trx]=КОЛНФА    [trx];
	       if СУММА2[trx]<>0 or КОЛ2[trx]<>0:
		  СчДеб2[trx]=АМСЧНФА	[trx];
		  СчКре2[trx]=СЧНФАКРЕ	[trx];
		  КМНТ2 [trx]='стоимость до 3000 ОС до 2009г=> списание';
	       fi;

	       СУММА3[trx]=СУМНФА    [trx];
	       КОЛ3  [trx]=КОЛНФА    [trx];
	       if СУММА3[trx]<>0 or КОЛ3[trx]<>0:
		  СчДеб3[trx]=СЧНФАЗАБ	[trx];
		  СчКре3[trx]='ЗАБАЛАНС';
		  КМНТ3 [trx]='стоимость до 3000 ОС до 2009г=> к учету по забалансу';
	       fi;
	  fi;
	  if  СУММА1[trx]=0 and СУММА2[trx]=0 and СУММА3[trx]=0:
	      DeleteFrame(Позиции_tr,trx);q=0;
	      Позиции_tr_x=Позиции_tr_x-1;
--		Позиции_tr=Позиции_tr+1;
  --		ClearVartr_iter(Позиции_tr);q=0;
	   | true:if t<=xx:Позиции_tr=Позиции_tr+1;fi;
	  fi;
	| true:--ClearVartr_iter(Позиции_tr);
	      DeleteFrame(Позиции_tr,trx);q=0;
	      Позиции_tr_x=Позиции_tr_x-1;
	      trx=trx-1;
       fi;
     od;
     Позиции_tr_x=Позиции_tr_x+1;
     Позиции_tr=Позиции_tr_x;
     if t<=xx:
	НФА_КОД[Позиции_tr_x]=Раб.НФА.Свертка.sig[int(выделитьслово(1,Раб.НФА.Свертка.salddata[t],'|'))];
	УЧН_КОД[Позиции_tr_x]=Раб.НФА.Свертка.sig[int(выделитьслово(2,Раб.НФА.Свертка.salddata[t],'|'))];
	ss0=ss;
      | true:
	  if  СУММА1[Позиции_tr]=0 and СУММА2[Позиции_tr]=0 and СУММА3[Позиции_tr]=0:
	      DeleteFrame(Позиции_tr,Позиции_tr);q=0;
	  fi;
     fi;
  fi;
  ---------- сохраняем текущую информацию --------------
  sacc=Раб.НФА.Свертка.acc[int(выделитьслово(3,Раб.НФА.Свертка.salddata[t],'|'))];
  if length(sacc)=33: -- баланс
     sacc0=ВыделитьСлово(6,sacc,'.');
--     sacc0=ВыделитьСлова(6,2,sacc,'.')
   | true:sacc0=sacc;
  fi;
  if sacc0='101':
--     if СЧНФА[Позиции_tr_x]<>'' or ДОПАНА01[Позиции_tr_x]<>'' or ДОПАНА01[Позиции_tr_x]<>'' or: Позиции_tr_x=Позиции_tr_x+1;fi;-- явно нелады с количеством на учетном номере или со счетами
     if СЧНФА[Позиции_tr_x]+ДОПАНА01[Позиции_tr_x]+ДОПАНА02[Позиции_tr_x]+ДОПАНА03[Позиции_tr_x]+ДОПАНА04[Позиции_tr_x]+ДОПАНА05[Позиции_tr_x]+ДОПАНА06[Позиции_tr_x]+ДОПАНА07[Позиции_tr_x]+ДОПАНА08[Позиции_tr_x]+ДОПАНА09[Позиции_tr_x]+ДОПАНА10[Позиции_tr_x]<>'':
	Позиции_tr_x=Позиции_tr_x+1;-- явно нелады с количеством на учетном номере или со счетами
	НФА_КОД[Позиции_tr_x]=НФА_КОД[Позиции_tr];
	УЧН_КОД[Позиции_tr_x]=УЧН_КОД[Позиции_tr];
     fi;
     СЧНФА     [Позиции_tr_x]=SubStr(sacc,1,30)+'310';
     СЧНФАКРЕ  [Позиции_tr_x]=SubStr(sacc,1,30)+'410';
     КОЛНФА    [Позиции_tr_x]=Раб.НФА.Свертка.Koldata[t];
     СУМНФА    [Позиции_tr_x]=Раб.НФА.Свертка.Sumdata[t];
     СЧНФАЗАБ  [Позиции_tr_x]='ЗАБ.21.101.'+ВыделитьСлово(3,НФА_КОД[Позиции_tr_x],'.'); --ВыделитьСлово(7,sacc,'.');
     ДОПАНА01  [Позиции_tr_x]=Раб.НФА.Свертка.sig[int(выделитьслово(4,Раб.НФА.Свертка.salddata[t],'|'))];
     ДОПАНА02  [Позиции_tr_x]=Раб.НФА.Свертка.sig[int(выделитьслово(5,Раб.НФА.Свертка.salddata[t],'|'))];
     if z_any_ref_list>0:ДОПАНА03[Позиции_tr_x]=Раб.НФА.Свертка.sig[int(выделитьслово(6,Раб.НФА.Свертка.salddata[t],'|'))];
	if z_any_ref_list>1:ДОПАНА04[Позиции_tr_x]=Раб.НФА.Свертка.sig[int(выделитьслово(7,Раб.НФА.Свертка.salddata[t],'|'))];
	   if z_any_ref_list>2:ДОПАНА05[Позиции_tr_x]=Раб.НФА.Свертка.sig[int(выделитьслово(8,Раб.НФА.Свертка.salddata[t],'|'))];
	      if z_any_ref_list>3:ДОПАНА06[Позиции_tr_x]=Раб.НФА.Свертка.sig[int(выделитьслово(9,Раб.НФА.Свертка.salddata[t],'|'))];
		 if z_any_ref_list>4:ДОПАНА07[Позиции_tr_x]=Раб.НФА.Свертка.sig[int(выделитьслово(10,Раб.НФА.Свертка.salddata[t],'|'))];
		    if z_any_ref_list>5:ДОПАНА08[Позиции_tr_x]=Раб.НФА.Свертка.sig[int(выделитьслово(11,Раб.НФА.Свертка.salddata[t],'|'))];
		       if z_any_ref_list>6:ДОПАНА09[Позиции_tr_x]=Раб.НФА.Свертка.sig[int(выделитьслово(12,Раб.НФА.Свертка.salddata[t],'|'))];
			  if z_any_ref_list>7:ДОПАНА10[Позиции_tr_x]=Раб.НФА.Свертка.sig[int(выделитьслово(13,Раб.НФА.Свертка.salddata[t],'|'))];fi;
		       fi;
		    fi;
		 fi;
	      fi;
	   fi;
	fi;
     fi;
     ----- выборка аналитики ------
--     МОЛ|М + any_ref_list
     ------------------------------
   | sacc0='104':
     АМСЧНФА   [Позиции_tr_x]=SubStr(sacc,1,30)+'410';
     --АМСЧНФАДЕБ[Позиции_tr_x]=SubStr(sacc,1,23)+'401.01.271';
     АМСУМНФА  [Позиции_tr_x]=Раб.НФА.Свертка.Sumdata[t];
   | sacc0='ЗАБ.НФА.ДЭКСПЛ':
     ДЭКСПЛ    [Позиции_tr_x]=1.1.100+int(Раб.НФА.Свертка.Sumdata[t]);
   | sacc0='ЗАБ.НФА.ДУЧЕТ':
     ДУЧЕТ     [Позиции_tr_x]=1.1.100+int(Раб.НФА.Свертка.Sumdata[t]);
   | sacc0='ЗАБ.НФА.НЕТМЕСАМОРТ':
     НЕТАМОРТ  [Позиции_tr_x]=int(Раб.НФА.Свертка.Sumdata[t]);
  fi;
 od;
ДАТАОПЕР=ДАТАОПЕР;
CloseProgress;
end;

 Proc SaveDataAs1;
 var t,xx,z,zz,poz,q,z_any_ref_list,Позиции_tr_x,trx,RO,rec:i;
 var ss,ss0,sacc,sacc0:s;
 var ll,ver_tb_net,УслНетАморт_1:l;
 var ОС_100,ОС_РАСХ,цена,nn:n;
 z_any_ref_list=количествослов(Раб.НФА.Свертка.any_ref_list,'|');

 ОС_100 =Общ_Пер('ОС_100' ,ДАТАОПЕР);
 ОС_РАСХ=Общ_Пер('ОС_РАСХ',ДАТАОПЕР);
 Позиции_tr=1;
 Позиции_tr_x=1;
 xx=lengthofarray(Раб.НФА.Свертка.salddata);
 ShowProgress(xx,'Расчет справки...');
 if xx>0:
    ver_tb_net=ИмяПользователя(ИмяБазы('РПО_ДНФА'))<>'';
    if not ver_tb_net:RO=OpenWorkArea("РПО_НФА", "ПРИЗНАК");
     | true	     :RO=OpenWorkArea("РПО_НФА", "", "1=0");
    fi;

    ss0=выделитьслова(1,2,Раб.НФА.Свертка.salddata[1],'|');
     НФА_КОД[Позиции_tr_x]=Раб.НФА.Свертка.sig[int(выделитьслово(1,Раб.НФА.Свертка.salddata[1],'|'))];
     УЧН_КОД[Позиции_tr_x]=Раб.НФА.Свертка.sig[int(выделитьслово(2,Раб.НФА.Свертка.salddata[1],'|'))];
    --ss0=Раб.НФА.Свертка.sig[int(выделитьслово(1,Раб.НФА.Свертка.salddata[1],'|'))]+'|'+Раб.НФА.Свертка.sig[int(выделитьслово(2,Раб.НФА.Свертка.salddata[1],'|'))];
 fi;
 for t=1..xx+1 do
  ProgressPos(t);
--  zz=количествослов(salddata[t],'|');
  ss=выделитьслова(1,2,Раб.НФА.Свертка.salddata[t],'|');
--  ss=Раб.НФА.Свертка.sig[int(выделитьслово(1,Раб.НФА.Свертка.salddata[t],'|'))]+'|'+Раб.НФА.Свертка.sig[int(выделитьслово(2,Раб.НФА.Свертка.salddata[t],'|'))];
  if ss<>ss0 or t>xx:q=0;-- переход на следующее ОС+обработка текущего, т.к. вся информация по нему собрана
     for trx=Позиции_tr..Позиции_tr_x do
       if length(СЧНФА[trx])=33:цена=0;
	  if КОЛНФА[trx]=1 or КОЛНФА[trx]=0:цена=СУМНФА[trx];--обработка только ос с количеством равным только 1 на инвентарной карточке
	  fi;
--	    if КОЛНФА[trx]<>0:цена=СУМНФА[trx]/КОЛНФА[trx];
--	     | true:цена=СУМНФА[trx];
--	    fi;
	  УслНетАморт_1=false;
	  if УслНетАморт_0<>'':ll=false;
	     if not ll:if НФА_КОД[trx]<>'':ll=Раб.НФА.B01.2СоотвПризнака0(НФА_КОД[trx],УслНетАморт_0);fi;fi;
	     if not ll:if УЧН_КОД[trx]<>'':ll=Раб.НФА.B01.2СоотвПризнака0(УЧН_КОД[trx],УслНетАморт_0);fi;fi;
	     if not ll:if ДОПАНА01[trx]<>'':ll=Раб.НФА.B01.2СоотвПризнака0(ДОПАНА01[trx],УслНетАморт_0);fi;
		if not ll:if ДОПАНА02[trx]<>'':ll=Раб.НФА.B01.2СоотвПризнака0(ДОПАНА02[trx],УслНетАморт_0);fi;
		   if not ll and z_any_ref_list>0:if ДОПАНА03[trx]<>'':ll=Раб.НФА.B01.2СоотвПризнака0(ДОПАНА03[trx],УслНетАморт_0);fi;
		      if not ll and z_any_ref_list>1:if ДОПАНА04[trx]<>'':ll=Раб.НФА.B01.2СоотвПризнака0(ДОПАНА04[trx],УслНетАморт_0);fi;
			 if not ll and z_any_ref_list>2:if ДОПАНА05[trx]<>'':ll=Раб.НФА.B01.2СоотвПризнака0(ДОПАНА05[trx],УслНетАморт_0);fi;
			    if not ll and z_any_ref_list>3:if ДОПАНА06[trx]<>'':ll=Раб.НФА.B01.2СоотвПризнака0(ДОПАНА06[trx],УслНетАморт_0);fi;
			       if not ll and z_any_ref_list>4:if ДОПАНА07[trx]<>'':ll=Раб.НФА.B01.2СоотвПризнака0(ДОПАНА07[trx],УслНетАморт_0);fi;
				  if not ll and z_any_ref_list>5:if ДОПАНА08[trx]<>'':ll=Раб.НФА.B01.2СоотвПризнака0(ДОПАНА08[trx],УслНетАморт_0);fi;
				     if not ll and z_any_ref_list>6:if ДОПАНА09[trx]<>'':ll=Раб.НФА.B01.2СоотвПризнака0(ДОПАНА09[trx],УслНетАморт_0);fi;
					if not ll and z_any_ref_list>7:if ДОПАНА10[trx]<>'':ll=Раб.НФА.B01.2СоотвПризнака0(ДОПАНА10[trx],УслНетАморт_0);fi;
					fi;
				     fi;
				  fi;
			       fi;
			    fi;
			 fi;
		      fi;
		   fi;
		fi;
	     fi;
	     УслНетАморт_1=ll;
	  fi;
	  if цена>=40000:
	     rec=RecordToInteger(ПризнакВзапись(НФА_КОД[trx],false));
	     if rec>0:if КартотекаПризнака(НФА_КОД[trx],false)<>'РПО_НФА':rec=0;fi;
		if rec>0:rec=SearchInArray(НФА_АМОРТ0,rec,true);fi;
	     fi;
	     if rec<1:
		if цена<=ОС_100:-- до 40000
		   if  (ДЭКСПЛ[trx]>1.1.100 or pos(' М.Э.',' '+ДОПАНА02[trx])>0):
		      if -АМСУМНФА[trx]<>СУМНФА[trx]:q=1;-- доначислить аморт до 100%
		      fi;
		    |  (ДЭКСПЛ[trx]=1.1.100 and not pos(' М.Э.',' '+ДОПАНА02[trx])>0) and ДУЧЕТ[trx]>31.12.2010 and -АМСУМНФА[trx]>0:q=2;-- новое ОС принято к учету в 2009г - снимаем всю амортизацию
		    |  ДЭКСПЛ[trx]=1.1.100  and not pos(' М.Э.',' '+ДОПАНА02[trx])>0 and ДУЧЕТ[trx]<01.01.2011			   :q=3;-- новое ОС принято к учету до 2009г - коррекция амортизации по срокам
		   fi;
		 | цена>ОС_100:q=4;--свыше 20000 коррекция амортизации по срокам
		fi;
--		| true:
--		  if -АМСУМНФА[trx]>0:q=5;--Снимаем всю амортизацию
--		  fi;
	     fi;
--	     | КОЛНФА[trx]=0 and -АМСУМНФА[trx]>0:q=5;-- Списанное ОС с зависшей амортизацией - снимаем всю амортизацию
	  fi;
--	  | length(АМСЧНФА[trx])=33:-- есть только амортизация
--		  if -АМСУМНФА[trx]>0:q=5;--Снимаем всю амортизацию
--		  fi;

       fi;
       if УслНетАморт_1:
	  q=0; -- при попадении в условие не начислять амортизацию - выкидываем ОС из справки
--	    if q=1:q=2;-- снимаем амортизацию под 0
--	     | q=2:q=2;-- снимаем амортизацию под 0
--	     | q=3:q=2;-- снимаем амортизацию под 0
--	     | q=4:q=2;-- снимаем амортизацию под 0
--	    fi;
       fi;
       if q>0  :
	  if АМСЧНФА[trx]='':
	     sacc0=ВыделитьСлова(КоличествоСлов(СЧНФА[trx],'.')-2,2,СЧНФА[trx],'.');--sacc0=ВыделитьСлова(2,2,СЧНФА[trx],'.');
	     if pos(sacc0,'101.11 101.12 101.13 101.31 101.32 101.33 101.34 101.15 101.35 101.36 101.37 101.18 101.38')>0:АМСЧНФА[trx]=SubStr(СЧНФА[trx],1,23)+'104.'+ВыделитьСлово(2,sacc0,'.')+'.410';
	      | sacc0='102.30':АМСЧНФА[trx]=SubStr(СЧНФА[trx],1,23)+'104.09.420';
	     fi;
	  fi;
	  if АМСЧНФАДЕБ[trx]='':
	     sacc0=ВыделитьСлово(5,СЧНФА[trx],'.');
	     АМСЧНФАДЕБ[trx]=SubStr(АМСЧНФА[trx],1,23)+'401.20.271';
	     if sacc0='2' or sacc0='4':-- 2 - внебюджет - проверка на 2.106.04
		if УслПД_106_0<>'':ll=false;
		   if not ll:if НФА_КОД[trx]<>'':ll=Раб.НФА.B01.2СоотвПризнака0(НФА_КОД[trx],УслПД_106_0);fi;fi;
		   if not ll:if УЧН_КОД[trx]<>'':ll=Раб.НФА.B01.2СоотвПризнака0(УЧН_КОД[trx],УслПД_106_0);fi;fi;
		   if not ll:if ДОПАНА01[trx]<>'':ll=Раб.НФА.B01.2СоотвПризнака0(ДОПАНА01[trx],УслПД_106_0);fi;
		      if not ll:if ДОПАНА02[trx]<>'':ll=Раб.НФА.B01.2СоотвПризнака0(ДОПАНА02[trx],УслПД_106_0);fi;
			 if not ll and z_any_ref_list>0:if ДОПАНА03[trx]<>'':ll=Раб.НФА.B01.2СоотвПризнака0(ДОПАНА03[trx],УслПД_106_0);fi;
			    if not ll and z_any_ref_list>1:if ДОПАНА04[trx]<>'':ll=Раб.НФА.B01.2СоотвПризнака0(ДОПАНА04[trx],УслПД_106_0);fi;
			       if not ll and z_any_ref_list>2:if ДОПАНА05[trx]<>'':ll=Раб.НФА.B01.2СоотвПризнака0(ДОПАНА05[trx],УслПД_106_0);fi;
				  if not ll and z_any_ref_list>3:if ДОПАНА06[trx]<>'':ll=Раб.НФА.B01.2СоотвПризнака0(ДОПАНА06[trx],УслПД_106_0);fi;
				     if not ll and z_any_ref_list>4:if ДОПАНА07[trx]<>'':ll=Раб.НФА.B01.2СоотвПризнака0(ДОПАНА07[trx],УслПД_106_0);fi;
					if not ll and z_any_ref_list>5:if ДОПАНА08[trx]<>'':ll=Раб.НФА.B01.2СоотвПризнака0(ДОПАНА08[trx],УслПД_106_0);fi;
					   if not ll and z_any_ref_list>6:if ДОПАНА09[trx]<>'':ll=Раб.НФА.B01.2СоотвПризнака0(ДОПАНА09[trx],УслПД_106_0);fi;
					      if not ll and z_any_ref_list>7:if ДОПАНА10[trx]<>'':ll=Раб.НФА.B01.2СоотвПризнака0(ДОПАНА10[trx],УслПД_106_0);fi;
					      fi;
					   fi;
					fi;
				     fi;
				  fi;
			       fi;
			    fi;
			 fi;
		      fi;
		   fi;
		   if ll:АМСЧНФАДЕБ[trx]=SubStr(АМСЧНФА[trx],1,23)+'109.60.271';fi;
		fi;
	     fi;
	  fi;
	  if q=1: -- от 3000 до 40000 доначислить аморт до 100%
	       СУММА1[trx]=СУМНФА[trx]+АМСУМНФА[trx];
	       if СУММА1[trx]<>0:
		  СчДеб1[trx]=АМСЧНФАДЕБ[trx];
		  СчКре1[trx]=АМСЧНФА	[trx];
		  КМНТ1 [trx]='стоимость от 3000 до 40000=> доначислить аморт до 100%';
	       fi;
	   | q=2:-- новое ОС принято к учету в 2009г - снимаем всю амортизацию
	       СУММА1[trx]=АМСУМНФА  [trx];
	       if СУММА1[trx]<>0:
		  СчДеб1[trx]=АМСЧНФАДЕБ[trx];
		  СчКре1[trx]=АМСЧНФА	[trx];
		  КМНТ1 [trx]='стоимость от 3000 до 40000 новое ОС принято к учету в 2011г=> снимаем всю амортизацию';
	       fi;
	   | q=3:--новое ОС принято к учету до 2009г - коррекция амортизации по срокам
		  nn=СУМНФА[trx]*АмортНаДатуЛинейно(НФА_КОД[trx],УЧН_КОД[trx],ДУЧЕТ[trx],ДЭКСПЛ[trx],ДАТАОПЕР,НЕТАМОРТ[trx],ro,ver_tb_net);-- % начисленной амортизации на дату
		  СУММА1[trx]=АМСУМНФА	[trx]+nn;
	       if СУММА1[trx]<>0:
		  СчДеб1[trx]=АМСЧНФАДЕБ[trx];
		  СчКре1[trx]=АМСЧНФА	[trx];
		  КМНТ1 [trx]='коррекция амортизации по срокам';
	       fi;

	   | q=4:--свыше 40000 коррекция амортизации по срокам
		  nn=СУМНФА[trx]*АмортНаДатуЛинейно(НФА_КОД[trx],УЧН_КОД[trx],ДУЧЕТ[trx],ДЭКСПЛ[trx],ДАТАОПЕР,НЕТАМОРТ[trx],ro,ver_tb_net);-- % начисленной амортизации на дату
		  СУММА1[trx]=АМСУМНФА	[trx]+nn;
	       if СУММА1[trx]<>0:
		  СчДеб1[trx]=АМСЧНФАДЕБ[trx];
		  СчКре1[trx]=АМСЧНФА	[trx];
		  КМНТ1 [trx]='коррекция амортизации по срокам';
	       fi;

--	     | q=5:-- Списанное ОС с зависшей амортизацией - снимаем всю амортизацию
--		 СУММА1[trx]=АМСУМНФА  [trx];
--		 if СУММА1[trx]<>0:
--		    СчДеб1[trx]=АМСЧНФАДЕБ[trx];
--		    СчКре1[trx]=АМСЧНФА   [trx];
--		    КМНТ1 [trx]='Списанное ОС с зависшей амортизацией - снимаем всю амортизацию';
--		 fi;
	  fi;
	  if  round(СУММА1[trx],2)=0 and round(СУММА2[trx],2)=0 and round(СУММА3[trx],2)=0:
	      DeleteFrame(Позиции_tr,trx);q=0;
	      Позиции_tr_x=Позиции_tr_x-1;
--		Позиции_tr=Позиции_tr+1;
  --		ClearVartr_iter(Позиции_tr);q=0;
	   | true:if t<=xx:Позиции_tr=Позиции_tr+1;fi;
	  fi;
	| true:--ClearVartr_iter(Позиции_tr);
	      DeleteFrame(Позиции_tr,trx);q=0;
	      Позиции_tr_x=Позиции_tr_x-1;
	      trx=trx-1;
       fi;
     od;
     Позиции_tr_x=Позиции_tr_x+1;
     Позиции_tr=Позиции_tr_x;
     if t<=xx:
	НФА_КОД[Позиции_tr_x]=Раб.НФА.Свертка.sig[int(выделитьслово(1,Раб.НФА.Свертка.salddata[t],'|'))];
	УЧН_КОД[Позиции_tr_x]=Раб.НФА.Свертка.sig[int(выделитьслово(2,Раб.НФА.Свертка.salddata[t],'|'))];
	ss0=ss;
      | true:
	  if  СУММА1[Позиции_tr]=0 and СУММА2[Позиции_tr]=0 and СУММА3[Позиции_tr]=0:
	      DeleteFrame(Позиции_tr,Позиции_tr);q=0;
	  fi;
     fi;
  fi;
  ---------- сохраняем текущую информацию --------------
  sacc=Раб.НФА.Свертка.acc[int(выделитьслово(3,Раб.НФА.Свертка.salddata[t],'|'))];
  if length(sacc)=33: -- баланс
     sacc0=ВыделитьСлово(6,sacc,'.');
--     sacc0=ВыделитьСлова(6,2,sacc,'.')
   | true:sacc0=sacc;
  fi;
  if sacc0='101':
--     if СЧНФА[Позиции_tr_x]<>'' or ДОПАНА01[Позиции_tr_x]<>'' or ДОПАНА01[Позиции_tr_x]<>'' or: Позиции_tr_x=Позиции_tr_x+1;fi;-- явно нелады с количеством на учетном номере или со счетами
     if СЧНФА[Позиции_tr_x]+ДОПАНА01[Позиции_tr_x]+ДОПАНА02[Позиции_tr_x]+ДОПАНА03[Позиции_tr_x]+ДОПАНА04[Позиции_tr_x]+ДОПАНА05[Позиции_tr_x]+ДОПАНА06[Позиции_tr_x]+ДОПАНА07[Позиции_tr_x]+ДОПАНА08[Позиции_tr_x]+ДОПАНА09[Позиции_tr_x]+ДОПАНА10[Позиции_tr_x]<>'':
	Позиции_tr_x=Позиции_tr_x+1;-- явно нелады с количеством на учетном номере или со счетами
	НФА_КОД[Позиции_tr_x]=НФА_КОД[Позиции_tr];
	УЧН_КОД[Позиции_tr_x]=УЧН_КОД[Позиции_tr];
     fi;
     СЧНФА     [Позиции_tr_x]=SubStr(sacc,1,30)+'310';
     СЧНФАКРЕ  [Позиции_tr_x]=SubStr(sacc,1,30)+'410';
     КОЛНФА    [Позиции_tr_x]=Раб.НФА.Свертка.Koldata[t];
     СУМНФА    [Позиции_tr_x]=Раб.НФА.Свертка.Sumdata[t];
     СЧНФАЗАБ  [Позиции_tr_x]='ЗАБ.21.101.'+ВыделитьСлово(3,НФА_КОД[Позиции_tr_x],'.'); --ВыделитьСлово(7,sacc,'.');
     ДОПАНА01  [Позиции_tr_x]=Раб.НФА.Свертка.sig[int(выделитьслово(4,Раб.НФА.Свертка.salddata[t],'|'))];
     ДОПАНА02  [Позиции_tr_x]=Раб.НФА.Свертка.sig[int(выделитьслово(5,Раб.НФА.Свертка.salddata[t],'|'))];
     if z_any_ref_list>0:ДОПАНА03[Позиции_tr_x]=Раб.НФА.Свертка.sig[int(выделитьслово(6,Раб.НФА.Свертка.salddata[t],'|'))];
	if z_any_ref_list>1:ДОПАНА04[Позиции_tr_x]=Раб.НФА.Свертка.sig[int(выделитьслово(7,Раб.НФА.Свертка.salddata[t],'|'))];
	   if z_any_ref_list>2:ДОПАНА05[Позиции_tr_x]=Раб.НФА.Свертка.sig[int(выделитьслово(8,Раб.НФА.Свертка.salddata[t],'|'))];
	      if z_any_ref_list>3:ДОПАНА06[Позиции_tr_x]=Раб.НФА.Свертка.sig[int(выделитьслово(9,Раб.НФА.Свертка.salddata[t],'|'))];
		 if z_any_ref_list>4:ДОПАНА07[Позиции_tr_x]=Раб.НФА.Свертка.sig[int(выделитьслово(10,Раб.НФА.Свертка.salddata[t],'|'))];
		    if z_any_ref_list>5:ДОПАНА08[Позиции_tr_x]=Раб.НФА.Свертка.sig[int(выделитьслово(11,Раб.НФА.Свертка.salddata[t],'|'))];
		       if z_any_ref_list>6:ДОПАНА09[Позиции_tr_x]=Раб.НФА.Свертка.sig[int(выделитьслово(12,Раб.НФА.Свертка.salddata[t],'|'))];
			  if z_any_ref_list>7:ДОПАНА10[Позиции_tr_x]=Раб.НФА.Свертка.sig[int(выделитьслово(13,Раб.НФА.Свертка.salddata[t],'|'))];fi;
		       fi;
		    fi;
		 fi;
	      fi;
	   fi;
	fi;
     fi;
     ----- выборка аналитики ------
--     МОЛ|М + any_ref_list
     ------------------------------
   | sacc0='104':
     АМСЧНФА   [Позиции_tr_x]=SubStr(sacc,1,30)+'410';
     --АМСЧНФАДЕБ[Позиции_tr_x]=SubStr(sacc,1,23)+'401.01.271';
     АМСУМНФА  [Позиции_tr_x]=Раб.НФА.Свертка.Sumdata[t];
   | sacc0='ЗАБ.НФА.ДЭКСПЛ':
     ДЭКСПЛ    [Позиции_tr_x]=1.1.100+int(Раб.НФА.Свертка.Sumdata[t]);
   | sacc0='ЗАБ.НФА.ДУЧЕТ':
     ДУЧЕТ     [Позиции_tr_x]=1.1.100+int(Раб.НФА.Свертка.Sumdata[t]);
   | sacc0='ЗАБ.НФА.НЕТМЕСАМОРТ':
     НЕТАМОРТ  [Позиции_tr_x]=int(Раб.НФА.Свертка.Sumdata[t]);
  fi;
 od;
 if xx>0:
    CloseWorkArea(ro);
 fi;
ДАТАОПЕР=ДАТАОПЕР;
CloseProgress;
end;
 Proc SaveDataAs2;
 var t,xx,z,zz,poz,q,z_any_ref_list,Позиции_tr_x,trx,RO,rec:i;
 var ss,ss0,sacc,sacc0:s;
 var ll,ver_tb_net:l;
 var ОС_100,ОС_РАСХ,цена,nn:n;
 z_any_ref_list=количествослов(Раб.НФА.Свертка.any_ref_list,'|');

 ОС_100 =Общ_Пер('ОС_100' ,ДАТАОПЕР);
 ОС_РАСХ=Общ_Пер('ОС_РАСХ',ДАТАОПЕР);
 Позиции_tr=1;
 Позиции_tr_x=1;
 xx=lengthofarray(Раб.НФА.Свертка.salddata);
 ShowProgress(xx,'Расчет справки...');
 if xx>0:
    ver_tb_net=ИмяПользователя(ИмяБазы('РПО_ДНФА'))<>'';
    if not ver_tb_net:RO=OpenWorkArea("РПО_НФА", "ПРИЗНАК");
     | true	     :RO=OpenWorkArea("РПО_НФА", "", "1=0");
    fi;

    ss0=выделитьслова(1,2,Раб.НФА.Свертка.salddata[1],'|');
     НФА_КОД[Позиции_tr_x]=Раб.НФА.Свертка.sig[int(выделитьслово(1,Раб.НФА.Свертка.salddata[1],'|'))];
     УЧН_КОД[Позиции_tr_x]=Раб.НФА.Свертка.sig[int(выделитьслово(2,Раб.НФА.Свертка.salddata[1],'|'))];
    --ss0=Раб.НФА.Свертка.sig[int(выделитьслово(1,Раб.НФА.Свертка.salddata[1],'|'))]+'|'+Раб.НФА.Свертка.sig[int(выделитьслово(2,Раб.НФА.Свертка.salddata[1],'|'))];
 fi;
 for t=1..xx+1 do
  ProgressPos(t);
--  zz=количествослов(salddata[t],'|');
  ss=выделитьслова(1,2,Раб.НФА.Свертка.salddata[t],'|');
--  ss=Раб.НФА.Свертка.sig[int(выделитьслово(1,Раб.НФА.Свертка.salddata[t],'|'))]+'|'+Раб.НФА.Свертка.sig[int(выделитьслово(2,Раб.НФА.Свертка.salddata[t],'|'))];
  if ss<>ss0 or t>xx:q=0;-- переход на следующее ОС+обработка текущего, т.к. вся информация по нему собрана
     for trx=Позиции_tr..Позиции_tr_x do
       if КОЛНФА[trx]=0 and СУМНФА[trx]=0:-- есть только амортизация
	  if АМСУМНФА[trx]<>0:
	     q=5;--Снимаем всю амортизацию
	  fi;
       fi;
       if q>0  :
	  if АМСЧНФА[trx]='':
	     sacc0=ВыделитьСлова(КоличествоСлов(СЧНФА[trx],'.')-2,2,СЧНФА[trx],'.');--sacc0=ВыделитьСлова(2,2,СЧНФА[trx],'.');
	     if pos(sacc0,'101.11 101.12 101.13 101.31 101.32 101.33 101.34 101.15 101.35 101.36 101.37 101.18 101.38')>0:АМСЧНФА[trx]=SubStr(СЧНФА[trx],1,23)+'104.'+ВыделитьСлово(2,sacc0,'.')+'.410';

	      | sacc0='102.30':АМСЧНФА[trx]=SubStr(СЧНФА[trx],1,23)+'104.09.420';
	     fi;
	  fi;
	  if АМСЧНФАДЕБ[trx]='':
	     sacc0=ВыделитьСлово(5,СЧНФА[trx],'.');
	     АМСЧНФАДЕБ[trx]=SubStr(АМСЧНФА[trx],1,23)+'401.20.271';
	     if sacc0='2' or sacc0='4':-- 2 - внебюджет - проверка на 2.106.04
		if УслПД_106_0<>'':ll=false;
		   if not ll:if НФА_КОД[trx]<>'':ll=Раб.НФА.B01.2СоотвПризнака0(НФА_КОД[trx],УслПД_106_0);fi;fi;
		   if not ll:if УЧН_КОД[trx]<>'':ll=Раб.НФА.B01.2СоотвПризнака0(УЧН_КОД[trx],УслПД_106_0);fi;fi;
		   if not ll:if ДОПАНА01[trx]<>'':ll=Раб.НФА.B01.2СоотвПризнака0(ДОПАНА01[trx],УслПД_106_0);fi;
		      if not ll:if ДОПАНА02[trx]<>'':ll=Раб.НФА.B01.2СоотвПризнака0(ДОПАНА02[trx],УслПД_106_0);fi;
			 if not ll and z_any_ref_list>0:if ДОПАНА03[trx]<>'':ll=Раб.НФА.B01.2СоотвПризнака0(ДОПАНА03[trx],УслПД_106_0);fi;
			    if not ll and z_any_ref_list>1:if ДОПАНА04[trx]<>'':ll=Раб.НФА.B01.2СоотвПризнака0(ДОПАНА04[trx],УслПД_106_0);fi;
			       if not ll and z_any_ref_list>2:if ДОПАНА05[trx]<>'':ll=Раб.НФА.B01.2СоотвПризнака0(ДОПАНА05[trx],УслПД_106_0);fi;
				  if not ll and z_any_ref_list>3:if ДОПАНА06[trx]<>'':ll=Раб.НФА.B01.2СоотвПризнака0(ДОПАНА06[trx],УслПД_106_0);fi;
				     if not ll and z_any_ref_list>4:if ДОПАНА07[trx]<>'':ll=Раб.НФА.B01.2СоотвПризнака0(ДОПАНА07[trx],УслПД_106_0);fi;
					if not ll and z_any_ref_list>5:if ДОПАНА08[trx]<>'':ll=Раб.НФА.B01.2СоотвПризнака0(ДОПАНА08[trx],УслПД_106_0);fi;
					   if not ll and z_any_ref_list>6:if ДОПАНА09[trx]<>'':ll=Раб.НФА.B01.2СоотвПризнака0(ДОПАНА09[trx],УслПД_106_0);fi;
					      if not ll and z_any_ref_list>7:if ДОПАНА10[trx]<>'':ll=Раб.НФА.B01.2СоотвПризнака0(ДОПАНА10[trx],УслПД_106_0);fi;
					      fi;
					   fi;
					fi;
				     fi;
				  fi;
			       fi;
			    fi;
			 fi;
		      fi;
		   fi;
		   if ll:АМСЧНФАДЕБ[trx]=SubStr(АМСЧНФА[trx],1,23)+'109.60.271';fi;
		fi;
	     fi;
	  fi;
	  if 
	     q=5:-- Списанное ОС с зависшей амортизацией - снимаем всю амортизацию
	       СУММА1[trx]=АМСУМНФА  [trx];
	       if СУММА1[trx]<>0:
		  СчДеб1[trx]=АМСЧНФАДЕБ[trx];
		  СчКре1[trx]=АМСЧНФА	[trx];
		  КМНТ1 [trx]='Списанное ОС с зависшей амортизацией - снимаем всю амортизацию';
	       fi;
	  fi;
	  if  round(СУММА1[trx],2)=0 and round(СУММА2[trx],2)=0 and round(СУММА3[trx],2)=0:
	      DeleteFrame(Позиции_tr,trx);q=0;
	      Позиции_tr_x=Позиции_tr_x-1;
--		Позиции_tr=Позиции_tr+1;
  --		ClearVartr_iter(Позиции_tr);q=0;
	   | true:if t<=xx:Позиции_tr=Позиции_tr+1;fi;
	  fi;
	| true:--ClearVartr_iter(Позиции_tr);
	      DeleteFrame(Позиции_tr,trx);q=0;
	      Позиции_tr_x=Позиции_tr_x-1;
	      trx=trx-1;
       fi;
     od;
     Позиции_tr_x=Позиции_tr_x+1;
     Позиции_tr=Позиции_tr_x;
     if t<=xx:
	НФА_КОД[Позиции_tr_x]=Раб.НФА.Свертка.sig[int(выделитьслово(1,Раб.НФА.Свертка.salddata[t],'|'))];
	УЧН_КОД[Позиции_tr_x]=Раб.НФА.Свертка.sig[int(выделитьслово(2,Раб.НФА.Свертка.salddata[t],'|'))];
	ss0=ss;
      | true:
	  if  СУММА1[Позиции_tr]=0 and СУММА2[Позиции_tr]=0 and СУММА3[Позиции_tr]=0:
	      DeleteFrame(Позиции_tr,Позиции_tr);q=0;
	  fi;
     fi;
  fi;
  ---------- сохраняем текущую информацию --------------
  sacc=Раб.НФА.Свертка.acc[int(выделитьслово(3,Раб.НФА.Свертка.salddata[t],'|'))];
  if length(sacc)=33: -- баланс
--     sacc0=ВыделитьСлово(6,sacc,'.');
     sacc0=ВыделитьСлова(6,2,sacc,'.');
   | true:sacc0=sacc;
  fi;
  if pos('101.',sacc0)>0 or pos('102.',sacc0)>0:-- if pos('102.',sacc0)>0 :sacc0='101' or sacc0='102':
--     if СЧНФА[Позиции_tr_x]<>'' or ДОПАНА01[Позиции_tr_x]<>'' or ДОПАНА01[Позиции_tr_x]<>'' or: Позиции_tr_x=Позиции_tr_x+1;fi;-- явно нелады с количеством на учетном номере или со счетами
     if СЧНФА[Позиции_tr_x]+ДОПАНА01[Позиции_tr_x]+ДОПАНА02[Позиции_tr_x]+ДОПАНА03[Позиции_tr_x]+ДОПАНА04[Позиции_tr_x]+ДОПАНА05[Позиции_tr_x]+ДОПАНА06[Позиции_tr_x]+ДОПАНА07[Позиции_tr_x]+ДОПАНА08[Позиции_tr_x]+ДОПАНА09[Позиции_tr_x]+ДОПАНА10[Позиции_tr_x]<>'':
	Позиции_tr_x=Позиции_tr_x+1;-- явно нелады с количеством на учетном номере или со счетами
	НФА_КОД[Позиции_tr_x]=НФА_КОД[Позиции_tr];
	УЧН_КОД[Позиции_tr_x]=УЧН_КОД[Позиции_tr];
     fi;
     СЧНФА     [Позиции_tr_x]=SubStr(sacc,1,30)+if(pos('102.',sacc0)>0,'320','310');
     СЧНФАКРЕ  [Позиции_tr_x]=SubStr(sacc,1,30)+if(pos('102.',sacc0)>0,'420','410');
     КОЛНФА    [Позиции_tr_x]=Раб.НФА.Свертка.Koldata[t];
     СУМНФА    [Позиции_tr_x]=Раб.НФА.Свертка.Sumdata[t];
     СЧНФАЗАБ  [Позиции_tr_x]='ЗАБ.21.101.'+ВыделитьСлово(3,НФА_КОД[Позиции_tr_x],'.'); --ВыделитьСлово(7,sacc,'.');
     ДОПАНА01  [Позиции_tr_x]=Раб.НФА.Свертка.sig[int(выделитьслово(4,Раб.НФА.Свертка.salddata[t],'|'))];
     ДОПАНА02  [Позиции_tr_x]=Раб.НФА.Свертка.sig[int(выделитьслово(5,Раб.НФА.Свертка.salddata[t],'|'))];
     if z_any_ref_list>0:ДОПАНА03[Позиции_tr_x]=Раб.НФА.Свертка.sig[int(выделитьслово(6,Раб.НФА.Свертка.salddata[t],'|'))];
	if z_any_ref_list>1:ДОПАНА04[Позиции_tr_x]=Раб.НФА.Свертка.sig[int(выделитьслово(7,Раб.НФА.Свертка.salddata[t],'|'))];
	   if z_any_ref_list>2:ДОПАНА05[Позиции_tr_x]=Раб.НФА.Свертка.sig[int(выделитьслово(8,Раб.НФА.Свертка.salddata[t],'|'))];
	      if z_any_ref_list>3:ДОПАНА06[Позиции_tr_x]=Раб.НФА.Свертка.sig[int(выделитьслово(9,Раб.НФА.Свертка.salddata[t],'|'))];
		 if z_any_ref_list>4:ДОПАНА07[Позиции_tr_x]=Раб.НФА.Свертка.sig[int(выделитьслово(10,Раб.НФА.Свертка.salddata[t],'|'))];
		    if z_any_ref_list>5:ДОПАНА08[Позиции_tr_x]=Раб.НФА.Свертка.sig[int(выделитьслово(11,Раб.НФА.Свертка.salddata[t],'|'))];
		       if z_any_ref_list>6:ДОПАНА09[Позиции_tr_x]=Раб.НФА.Свертка.sig[int(выделитьслово(12,Раб.НФА.Свертка.salddata[t],'|'))];
			  if z_any_ref_list>7:ДОПАНА10[Позиции_tr_x]=Раб.НФА.Свертка.sig[int(выделитьслово(13,Раб.НФА.Свертка.salddata[t],'|'))];fi;
		       fi;
		    fi;
		 fi;
	      fi;
	   fi;
	fi;
     fi;
     ----- выборка аналитики ------
--     МОЛ|М + any_ref_list
     ------------------------------
   | pos('104.',sacc0)>0:
     АМСЧНФА   [Позиции_tr_x]=SubStr(sacc,1,30)+if(pos('104.09',sacc0)>0,'420','410');
     АМСЧНФАДЕБ[Позиции_tr_x]=SubStr(sacc,1,23)+'401.20.271';
     АМСУМНФА  [Позиции_tr_x]=Раб.НФА.Свертка.Sumdata[t];
     ДОПАНА01  [Позиции_tr_x]=Раб.НФА.Свертка.sig[int(выделитьслово(4,Раб.НФА.Свертка.salddata[t],'|'))];
     ДОПАНА02  [Позиции_tr_x]=Раб.НФА.Свертка.sig[int(выделитьслово(5,Раб.НФА.Свертка.salddata[t],'|'))];
     if z_any_ref_list>0:ДОПАНА03[Позиции_tr_x]=Раб.НФА.Свертка.sig[int(выделитьслово(6,Раб.НФА.Свертка.salddata[t],'|'))];
	if z_any_ref_list>1:ДОПАНА04[Позиции_tr_x]=Раб.НФА.Свертка.sig[int(выделитьслово(7,Раб.НФА.Свертка.salddata[t],'|'))];
	   if z_any_ref_list>2:ДОПАНА05[Позиции_tr_x]=Раб.НФА.Свертка.sig[int(выделитьслово(8,Раб.НФА.Свертка.salddata[t],'|'))];
	      if z_any_ref_list>3:ДОПАНА06[Позиции_tr_x]=Раб.НФА.Свертка.sig[int(выделитьслово(9,Раб.НФА.Свертка.salddata[t],'|'))];
		 if z_any_ref_list>4:ДОПАНА07[Позиции_tr_x]=Раб.НФА.Свертка.sig[int(выделитьслово(10,Раб.НФА.Свертка.salddata[t],'|'))];
		    if z_any_ref_list>5:ДОПАНА08[Позиции_tr_x]=Раб.НФА.Свертка.sig[int(выделитьслово(11,Раб.НФА.Свертка.salddata[t],'|'))];
		       if z_any_ref_list>6:ДОПАНА09[Позиции_tr_x]=Раб.НФА.Свертка.sig[int(выделитьслово(12,Раб.НФА.Свертка.salddata[t],'|'))];
			  if z_any_ref_list>7:ДОПАНА10[Позиции_tr_x]=Раб.НФА.Свертка.sig[int(выделитьслово(13,Раб.НФА.Свертка.salddata[t],'|'))];fi;
		       fi;
		    fi;
		 fi;
	      fi;
	   fi;
	fi;
     fi;
--   | sacc0='ЗАБ.НФА.ДЭКСПЛ':
--     ДЭКСПЛ	 [Позиции_tr_x]=1.1.100+int(Раб.НФА.Свертка.Sumdata[t]);
--   | sacc0='ЗАБ.НФА.ДУЧЕТ':
--     ДУЧЕТ	 [Позиции_tr_x]=1.1.100+int(Раб.НФА.Свертка.Sumdata[t]);
--   | sacc0='ЗАБ.НФА.НЕТМЕСАМОРТ':
--     НЕТАМОРТ  [Позиции_tr_x]=int(Раб.НФА.Свертка.Sumdata[t]);
  fi;
 od;
 if xx>0:
    CloseWorkArea(ro);
 fi;
ДАТАОПЕР=ДАТАОПЕР;
CloseProgress;
end;

 Proc SaveDataAs3;
 var t,xx,z,zz,poz,q,z_any_ref_list,Позиции_tr_x,trx,RO,rec,ii:i;
 var ss,ss0,sacc,sacc0:s;
 var ll,ver_tb_net:l;
 var ОС_100,ОС_РАСХ,цена,nn:n;
 z_any_ref_list=количествослов(Раб.НФА.Свертка.any_ref_list,'|');

 ОС_100 =Общ_Пер('ОС_100' ,ДАТАОПЕР);
 ОС_РАСХ=Общ_Пер('ОС_РАСХ',ДАТАОПЕР);
 Позиции_tr=1;
 Позиции_tr_x=1;
 xx=lengthofarray(Раб.НФА.Свертка.salddata);
 ShowProgress(xx,'Расчет справки...');
 if xx>0:
    ver_tb_net=ИмяПользователя(ИмяБазы('РПО_ДНФА'))<>'';
    if not ver_tb_net:RO=OpenWorkArea("РПО_НФА", "ПРИЗНАК");
     | true	     :RO=OpenWorkArea("РПО_НФА", "", "1=0");
    fi;

    ss0=выделитьслова(1,2,Раб.НФА.Свертка.salddata[1],'|');
     НФА_КОД[Позиции_tr_x]=Раб.НФА.Свертка.sig[int(выделитьслово(1,Раб.НФА.Свертка.salddata[1],'|'))];
     УЧН_КОД[Позиции_tr_x]=Раб.НФА.Свертка.sig[int(выделитьслово(2,Раб.НФА.Свертка.salddata[1],'|'))];
    --ss0=Раб.НФА.Свертка.sig[int(выделитьслово(1,Раб.НФА.Свертка.salddata[1],'|'))]+'|'+Раб.НФА.Свертка.sig[int(выделитьслово(2,Раб.НФА.Свертка.salddata[1],'|'))];
 fi;
 for t=1..xx+1 do
  ProgressPos(t);
--  zz=количествослов(salddata[t],'|');
  ss=выделитьслова(1,2,Раб.НФА.Свертка.salddata[t],'|');-- Взяли НФА+УЧН
--  ss=Раб.НФА.Свертка.sig[int(выделитьслово(1,Раб.НФА.Свертка.salddata[t],'|'))]+'|'+Раб.НФА.Свертка.sig[int(выделитьслово(2,Раб.НФА.Свертка.salddata[t],'|'))];
  if ss<>ss0 or t>xx:
     q=0;-- переход на следующее ОС+обработка текущего, т.к. вся информация по нему собрана
     for trx=Позиции_tr..Позиции_tr_x do
       if КОЛНФА[trx]<>0:цена=СУМНФА[trx]/КОЛНФА[trx];
	| true:цена=СУМНФА[trx];
       fi;
       if length(СЧНФА[trx])=33:
	  sacc0=ВыделитьСлово(6,СЧНФА[trx],'.');
	| true:sacc0=СЧНФА[trx];
       fi;
       if sacc0='101':
--	    if цена<3001:q=1;
	  if цена<1001:q=1;
	   | true:     q=2;
	  fi;
	| sacc0='105':q=3;
	| соотв(sacc0,'ЗАБ.??.???.??'):q=4;
       fi;
       if q>0  :
	  if q=2  :
	  if АМСЧНФА[trx]='':
	     sacc0=ВыделитьСлова(КоличествоСлов(СЧНФА[trx],'.')-2,2,СЧНФА[trx],'.');--sacc0=ВыделитьСлова(2,2,СЧНФА[trx],'.');
	     if pos(sacc0,'101.11 101.12 101.13 101.31 101.32 101.33 101.34 101.15 101.35 101.36 101.37 101.18 101.38')>0:АМСЧНФА[trx]=SubStr(СЧНФА[trx],1,23)+'104.'+ВыделитьСлово(2,sacc0,'.')+'.410';
	      | sacc0='102.30':АМСЧНФА[trx]=SubStr(СЧНФА[trx],1,23)+'104.09.420';
	     fi;
	  fi;

	     if АМСЧНФАДЕБ[trx]='':
		sacc0=ВыделитьСлово(5,СЧНФА[trx],'.');
		АМСЧНФАДЕБ[trx]=SubStr(АМСЧНФА[trx],1,23)+'401.20.271';
		if sacc0='2' or sacc0='4':-- 2 - внебюджет - проверка на 2.106.04
		   if УслПД_106_0<>'':ll=false;
		      if not ll:if НФА_КОД[trx]<>'':ll=Раб.НФА.B01.2СоотвПризнака0(НФА_КОД[trx],УслПД_106_0);fi;fi;
		      if not ll:if УЧН_КОД[trx]<>'':ll=Раб.НФА.B01.2СоотвПризнака0(УЧН_КОД[trx],УслПД_106_0);fi;fi;
		      if not ll:if ДОПАНА01[trx]<>'':ll=Раб.НФА.B01.2СоотвПризнака0(ДОПАНА01[trx],УслПД_106_0);fi;
			 if not ll:if ДОПАНА02[trx]<>'':ll=Раб.НФА.B01.2СоотвПризнака0(ДОПАНА02[trx],УслПД_106_0);fi;
			    if not ll and z_any_ref_list>0:if ДОПАНА03[trx]<>'':ll=Раб.НФА.B01.2СоотвПризнака0(ДОПАНА03[trx],УслПД_106_0);fi;
			       if not ll and z_any_ref_list>1:if ДОПАНА04[trx]<>'':ll=Раб.НФА.B01.2СоотвПризнака0(ДОПАНА04[trx],УслПД_106_0);fi;
				  if not ll and z_any_ref_list>2:if ДОПАНА05[trx]<>'':ll=Раб.НФА.B01.2СоотвПризнака0(ДОПАНА05[trx],УслПД_106_0);fi;
				     if not ll and z_any_ref_list>3:if ДОПАНА06[trx]<>'':ll=Раб.НФА.B01.2СоотвПризнака0(ДОПАНА06[trx],УслПД_106_0);fi;
					if not ll and z_any_ref_list>4:if ДОПАНА07[trx]<>'':ll=Раб.НФА.B01.2СоотвПризнака0(ДОПАНА07[trx],УслПД_106_0);fi;
					   if not ll and z_any_ref_list>5:if ДОПАНА08[trx]<>'':ll=Раб.НФА.B01.2СоотвПризнака0(ДОПАНА08[trx],УслПД_106_0);fi;
					      if not ll and z_any_ref_list>6:if ДОПАНА09[trx]<>'':ll=Раб.НФА.B01.2СоотвПризнака0(ДОПАНА09[trx],УслПД_106_0);fi;
						 if not ll and z_any_ref_list>7:if ДОПАНА10[trx]<>'':ll=Раб.НФА.B01.2СоотвПризнака0(ДОПАНА10[trx],УслПД_106_0);fi;
						 fi;
					      fi;
					   fi;
					fi;
				     fi;
				  fi;
			       fi;
			    fi;
			 fi;
		      fi;
		      if ll:АМСЧНФАДЕБ[trx]=SubStr(АМСЧНФА[trx],1,23)+'109.60.271';fi;
		   fi;
		fi;
	     fi;
	  fi;
	  if q>0:КОЛ1[trx]=КОЛНФА[trx];
	  fi;
	  if УЧН_КОД[trx]='УЧН.НЕТ':УЧН_КОД[trx]='';
	  fi;
	  if q=1: --ОС до 3000
	       СУММА1[trx]=СУМНФА[trx];
	       if СУММА1[trx]<>0:
		  if ВыделитьСлово(5,СЧНФАКРЕ[trx],'.')='2':СчДеб1[trx]=ВыделитьСлова(1,5,СЧНФАКРЕ[trx],'.')+'.401.20.251';
		   | true:СчДеб1[trx]=ВыделитьСлова(1,5,СЧНФАКРЕ[trx],'.')+'.304.04.310';
		  fi;
		  СчКре1[trx]=СЧНФАКРЕ	[trx];
		  КМНТ1 [trx]='101 передача балансовой стоимости';
		  УЧН_КОД[trx]='';
	       fi;
	   | q=2:-- ОС >3000
	       СУММА1[trx]=СУМНФА[trx];
	       if СУММА1[trx]<>0:
		  if ВыделитьСлово(5,СЧНФАКРЕ[trx],'.')='2':СчДеб1[trx]=ВыделитьСлова(1,5,СЧНФАКРЕ[trx],'.')+'.401.20.251';
		   | true:СчДеб1[trx]=ВыделитьСлова(1,5,СЧНФАКРЕ[trx],'.')+'.304.04.310';
		  fi;
		  СчКре1[trx]=СЧНФАКРЕ	[trx];
		  КМНТ1 [trx]='101 передача балансовой стоимости';
	       fi;

--   | sacc0='104':
--     АМСЧНФА	 [Позиции_tr_x]=SubStr(sacc,1,30)+'410';
--     --АМСЧНФАДЕБ[Позиции_tr_x]=SubStr(sacc,1,23)+'401.01.271';
--     АМСУМНФА  [Позиции_tr_x]=Раб.НФА.Свертка.Sumdata[t];
--   | sacc0='ЗАБ.НФА.ДЭКСПЛ':
--     ДЭКСПЛ	 [Позиции_tr_x]=1.1.100+int(Раб.НФА.Свертка.Sumdata[t]);
--   | sacc0='ЗАБ.НФА.ДУЧЕТ':
--     ДУЧЕТ	 [Позиции_tr_x]=1.1.100+int(Раб.НФА.Свертка.Sumdata[t]);
--   | sacc0='ЗАБ.НФА.НЕТМЕСАМОРТ':
--     НЕТАМОРТ  [Позиции_tr_x]=int(Раб.НФА.Свертка.Sumdata[t]);

       ДЭКСПЛ [trx]=Раб.НФА.B01.ВзятьДЭКСПЛ(НФА_КОД[trx],УЧН_КОД[trx]);
       ДУЧЕТ  [trx]=Раб.НФА.B01.ВзятьДУЧЕТ (НФА_КОД[trx],УЧН_КОД[trx]);
       if УЧН_КОД[trx]<>'':НЕТАМОРТ[trx] =int(ОСТАТОК('ЗАБ.НФА.НЕТМЕСАМОРТ{'+НФА_КОД[trx]+'&'+УЧН_КОД[trx]+'}',ДАТАОПЕР+1));fi;
       if АМСЧНФА[trx]='':
	  sacc0=ВыделитьСлова(КоличествоСлов(СЧНФА[trx],'.')-2,2,СЧНФА[trx],'.');--sacc0=ВыделитьСлова(2,2,СЧНФА[trx],'.');
	  if pos(sacc0,'101.11 101.12 101.13 101.31 101.32 101.33 101.34 101.15 101.35 101.36 101.37 101.18 101.38')>0:АМСЧНФА[trx]=SubStr(СЧНФА[trx],1,23)+'104.'+ВыделитьСлово(2,sacc0,'.')+'.410';
	   | sacc0='102.30':АМСЧНФА[trx]=SubStr(СЧНФА[trx],1,23)+'104.09.420';
	  fi;
       fi;
	       АМСУМНФА  [trx]=round(ОСТАТОК(АМСЧНФА[trx]+'{'+НФА_КОД[trx]+'&'+УЧН_КОД[trx]+'}',ДАТАОПЕР+1),2);
	       СУММА2[trx]=-АМСУМНФА  [trx];
	       if СУММА2[trx]<>0:
		  if ВыделитьСлово(5,СЧНФАКРЕ[trx],'.')='2':СчКре2[trx]=ВыделитьСлова(1,5,СЧНФАКРЕ[trx],'.')+'.401.20.251';
		   | true:СчКре2[trx]=ВыделитьСлова(1,5,СЧНФАКРЕ[trx],'.')+'.304.04.310';
		  fi;
		  СчДеб2[trx]=АМСЧНФА	[trx];
		  КМНТ2 [trx]='101 передача амортизации';
	       fi;
	   | q=3:--материалы
	       СУММА1[trx]=СУМНФА[trx];
	       if СУММА1[trx]<>0:
		  if ВыделитьСлово(5,СЧНФАКРЕ[trx],'.')='2':СчДеб1[trx]=ВыделитьСлова(1,5,СЧНФАКРЕ[trx],'.')+'.401.20.251';
		   | true:СчДеб1[trx]=ВыделитьСлова(1,5,СЧНФАКРЕ[trx],'.')+'.304.04.340';
		  fi;
		  СчКре1[trx]=СЧНФАКРЕ	[trx];
		  КМНТ1 [trx]='105 передача балансовой стоимости';
	       fi;
	   | q=4:--Забаланс
	       СУММА1[trx]=СУМНФА[trx];
	       if СУММА1[trx]<>0:
		  СчДеб1[trx]='ЗАБАЛАНС';
		  СчКре1[trx]=СЧНФАКРЕ	[trx];
		  КМНТ1 [trx]='Забаланс, передача по учетной стоимости';
	       fi;

	  fi;
	  ii=точность(НФА_КОД[trx]);
	  if  round(СУММА1[trx],2)=0 and round(СУММА2[trx],2)=0 and round(СУММА3[trx],2)=0 and round(КОЛ1[trx],ii)<>0 and round(КОЛ2[trx],ii)<>0 and round(КОЛ3[trx],ii)<>0:
	      DeleteFrame(Позиции_tr,trx);q=0;
	      Позиции_tr_x=Позиции_tr_x-1;
	   | true:if t<=xx:Позиции_tr=Позиции_tr+1;fi;
	  fi;
	| true:--ClearVartr_iter(Позиции_tr);
	      DeleteFrame(Позиции_tr,trx);q=0;
	      Позиции_tr_x=Позиции_tr_x-1;
	      trx=trx-1;
       fi;
     od;
     Позиции_tr_x=Позиции_tr_x+1;
     Позиции_tr=Позиции_tr_x;
     if t<=xx:
	НФА_КОД[Позиции_tr_x]=Раб.НФА.Свертка.sig[int(выделитьслово(1,Раб.НФА.Свертка.salddata[t],'|'))];
	УЧН_КОД[Позиции_tr_x]=Раб.НФА.Свертка.sig[int(выделитьслово(2,Раб.НФА.Свертка.salddata[t],'|'))];
	ss0=ss;
      | true:
	  if  СУММА1[Позиции_tr]=0 and СУММА2[Позиции_tr]=0 and СУММА3[Позиции_tr]=0:
	      DeleteFrame(Позиции_tr,Позиции_tr);q=0;
	  fi;
     fi;
  fi;
  ---------- сохраняем текущую информацию --------------
  sacc=Раб.НФА.Свертка.acc[int(выделитьслово(3,Раб.НФА.Свертка.salddata[t],'|'))];
  if length(sacc)=33: -- баланс
     sacc0=ВыделитьСлово(6,sacc,'.');
--     sacc0=ВыделитьСлова(6,2,sacc,'.')
   | true:sacc0=sacc;
  fi;
  if sacc0='101':
--     if СЧНФА[Позиции_tr_x]<>'' or ДОПАНА01[Позиции_tr_x]<>'' or ДОПАНА01[Позиции_tr_x]<>'' or: Позиции_tr_x=Позиции_tr_x+1;fi;-- явно нелады с количеством на учетном номере или со счетами
     if СЧНФА[Позиции_tr_x]+ДОПАНА01[Позиции_tr_x]+ДОПАНА02[Позиции_tr_x]+ДОПАНА03[Позиции_tr_x]+ДОПАНА04[Позиции_tr_x]+ДОПАНА05[Позиции_tr_x]+ДОПАНА06[Позиции_tr_x]+ДОПАНА07[Позиции_tr_x]+ДОПАНА08[Позиции_tr_x]+ДОПАНА09[Позиции_tr_x]+ДОПАНА10[Позиции_tr_x]<>'':
	Позиции_tr_x=Позиции_tr_x+1;-- уже было ОС с комбинацией НФА+УЧН на балансовом 101 =>явно нелады с количеством на учетном номере или со счетами
	--прерываем текущую обработку, формируем новую строчку
	НФА_КОД[Позиции_tr_x]=НФА_КОД[Позиции_tr];
	УЧН_КОД[Позиции_tr_x]=УЧН_КОД[Позиции_tr];
     fi;
     СЧНФА     [Позиции_tr_x]=SubStr(sacc,1,30)+'310';
     СЧНФАКРЕ  [Позиции_tr_x]=SubStr(sacc,1,30)+'410';
     КОЛНФА    [Позиции_tr_x]=Раб.НФА.Свертка.Koldata[t];
     СУМНФА    [Позиции_tr_x]=Раб.НФА.Свертка.Sumdata[t];
     СЧНФАЗАБ  [Позиции_tr_x]='ЗАБ.21.101.'+ВыделитьСлово(3,НФА_КОД[Позиции_tr_x],'.'); --ВыделитьСлово(7,sacc,'.');
     ДОПАНА01  [Позиции_tr_x]=Раб.НФА.Свертка.sig[int(выделитьслово(4,Раб.НФА.Свертка.salddata[t],'|'))];
     ДОПАНА02  [Позиции_tr_x]=Раб.НФА.Свертка.sig[int(выделитьслово(5,Раб.НФА.Свертка.salddata[t],'|'))];
     if z_any_ref_list>0:ДОПАНА03[Позиции_tr_x]=Раб.НФА.Свертка.sig[int(выделитьслово(6,Раб.НФА.Свертка.salddata[t],'|'))];
	if z_any_ref_list>1:ДОПАНА04[Позиции_tr_x]=Раб.НФА.Свертка.sig[int(выделитьслово(7,Раб.НФА.Свертка.salddata[t],'|'))];
	   if z_any_ref_list>2:ДОПАНА05[Позиции_tr_x]=Раб.НФА.Свертка.sig[int(выделитьслово(8,Раб.НФА.Свертка.salddata[t],'|'))];
	      if z_any_ref_list>3:ДОПАНА06[Позиции_tr_x]=Раб.НФА.Свертка.sig[int(выделитьслово(9,Раб.НФА.Свертка.salddata[t],'|'))];
		 if z_any_ref_list>4:ДОПАНА07[Позиции_tr_x]=Раб.НФА.Свертка.sig[int(выделитьслово(10,Раб.НФА.Свертка.salddata[t],'|'))];
		    if z_any_ref_list>5:ДОПАНА08[Позиции_tr_x]=Раб.НФА.Свертка.sig[int(выделитьслово(11,Раб.НФА.Свертка.salddata[t],'|'))];
		       if z_any_ref_list>6:ДОПАНА09[Позиции_tr_x]=Раб.НФА.Свертка.sig[int(выделитьслово(12,Раб.НФА.Свертка.salddata[t],'|'))];
			  if z_any_ref_list>7:ДОПАНА10[Позиции_tr_x]=Раб.НФА.Свертка.sig[int(выделитьслово(13,Раб.НФА.Свертка.salddata[t],'|'))];fi;
		       fi;
		    fi;
		 fi;
	      fi;
	   fi;
	fi;
     fi;
     ----- выборка аналитики ------
--     МОЛ|М + any_ref_list
     ------------------------------
--   | sacc0='104':
--     АМСЧНФА	 [Позиции_tr_x]=SubStr(sacc,1,30)+'410';
--     --АМСЧНФАДЕБ[Позиции_tr_x]=SubStr(sacc,1,23)+'401.01.271';
--     АМСУМНФА  [Позиции_tr_x]=Раб.НФА.Свертка.Sumdata[t];
--   | sacc0='ЗАБ.НФА.ДЭКСПЛ':
--     ДЭКСПЛ	 [Позиции_tr_x]=1.1.100+int(Раб.НФА.Свертка.Sumdata[t]);
--   | sacc0='ЗАБ.НФА.ДУЧЕТ':
--     ДУЧЕТ	 [Позиции_tr_x]=1.1.100+int(Раб.НФА.Свертка.Sumdata[t]);
--   | sacc0='ЗАБ.НФА.НЕТМЕСАМОРТ':
--     НЕТАМОРТ  [Позиции_tr_x]=int(Раб.НФА.Свертка.Sumdata[t]);
   | sacc0='105':
     if СЧНФА[Позиции_tr_x]+ДОПАНА01[Позиции_tr_x]+ДОПАНА02[Позиции_tr_x]+ДОПАНА03[Позиции_tr_x]+ДОПАНА04[Позиции_tr_x]+ДОПАНА05[Позиции_tr_x]+ДОПАНА06[Позиции_tr_x]+ДОПАНА07[Позиции_tr_x]+ДОПАНА08[Позиции_tr_x]+ДОПАНА09[Позиции_tr_x]+ДОПАНА10[Позиции_tr_x]<>'':
	Позиции_tr_x=Позиции_tr_x+1;-- уже был материал с комбинацией НФА+УЧН на балансовом 105 =>прерываем текущую обработку, формируем новую строчку
	НФА_КОД[Позиции_tr_x]=НФА_КОД[Позиции_tr];
	УЧН_КОД[Позиции_tr_x]=УЧН_КОД[Позиции_tr];
     fi;
     СЧНФА     [Позиции_tr_x]=SubStr(sacc,1,30)+'340';
     СЧНФАКРЕ  [Позиции_tr_x]=SubStr(sacc,1,30)+'440';
     КОЛНФА    [Позиции_tr_x]=Раб.НФА.Свертка.Koldata[t];
     СУМНФА    [Позиции_tr_x]=Раб.НФА.Свертка.Sumdata[t];
     СЧНФАЗАБ  [Позиции_tr_x]='ЗАБ.21.105.'+ВыделитьСлово(3,НФА_КОД[Позиции_tr_x],'.'); --ВыделитьСлово(7,sacc,'.');
     ДОПАНА01  [Позиции_tr_x]=Раб.НФА.Свертка.sig[int(выделитьслово(4,Раб.НФА.Свертка.salddata[t],'|'))];
     ДОПАНА02  [Позиции_tr_x]=Раб.НФА.Свертка.sig[int(выделитьслово(5,Раб.НФА.Свертка.salddata[t],'|'))];
     if z_any_ref_list>0:ДОПАНА03[Позиции_tr_x]=Раб.НФА.Свертка.sig[int(выделитьслово(6,Раб.НФА.Свертка.salddata[t],'|'))];
	if z_any_ref_list>1:ДОПАНА04[Позиции_tr_x]=Раб.НФА.Свертка.sig[int(выделитьслово(7,Раб.НФА.Свертка.salddata[t],'|'))];
	   if z_any_ref_list>2:ДОПАНА05[Позиции_tr_x]=Раб.НФА.Свертка.sig[int(выделитьслово(8,Раб.НФА.Свертка.salddata[t],'|'))];
	      if z_any_ref_list>3:ДОПАНА06[Позиции_tr_x]=Раб.НФА.Свертка.sig[int(выделитьслово(9,Раб.НФА.Свертка.salddata[t],'|'))];
		 if z_any_ref_list>4:ДОПАНА07[Позиции_tr_x]=Раб.НФА.Свертка.sig[int(выделитьслово(10,Раб.НФА.Свертка.salddata[t],'|'))];
		    if z_any_ref_list>5:ДОПАНА08[Позиции_tr_x]=Раб.НФА.Свертка.sig[int(выделитьслово(11,Раб.НФА.Свертка.salddata[t],'|'))];
		       if z_any_ref_list>6:ДОПАНА09[Позиции_tr_x]=Раб.НФА.Свертка.sig[int(выделитьслово(12,Раб.НФА.Свертка.salddata[t],'|'))];
			  if z_any_ref_list>7:ДОПАНА10[Позиции_tr_x]=Раб.НФА.Свертка.sig[int(выделитьслово(13,Раб.НФА.Свертка.salddata[t],'|'))];fi;
		       fi;
		    fi;
		 fi;
	      fi;
	   fi;
	fi;
     fi;
   | соотв(sacc0,'ЗАБ.??.???.??'):
     if СЧНФА[Позиции_tr_x]+ДОПАНА01[Позиции_tr_x]+ДОПАНА02[Позиции_tr_x]+ДОПАНА03[Позиции_tr_x]+ДОПАНА04[Позиции_tr_x]+ДОПАНА05[Позиции_tr_x]+ДОПАНА06[Позиции_tr_x]+ДОПАНА07[Позиции_tr_x]+ДОПАНА08[Позиции_tr_x]+ДОПАНА09[Позиции_tr_x]+ДОПАНА10[Позиции_tr_x]<>'':
	Позиции_tr_x=Позиции_tr_x+1;-- уже был НФА с комбинацией НФА+УЧН на забалансе =>прерываем текущую обработку, формируем новую строчку
	НФА_КОД[Позиции_tr_x]=НФА_КОД[Позиции_tr];
	УЧН_КОД[Позиции_tr_x]=УЧН_КОД[Позиции_tr];
     fi;
     СЧНФА     [Позиции_tr_x]=sacc;
     СЧНФАКРЕ  [Позиции_tr_x]=sacc;
     КОЛНФА    [Позиции_tr_x]=Раб.НФА.Свертка.Koldata[t];
     СУМНФА    [Позиции_tr_x]=Раб.НФА.Свертка.Sumdata[t];
     СЧНФАЗАБ  [Позиции_tr_x]=sacc;
     ДОПАНА01  [Позиции_tr_x]=Раб.НФА.Свертка.sig[int(выделитьслово(4,Раб.НФА.Свертка.salddata[t],'|'))];
     ДОПАНА02  [Позиции_tr_x]=Раб.НФА.Свертка.sig[int(выделитьслово(5,Раб.НФА.Свертка.salddata[t],'|'))];
     if z_any_ref_list>0:ДОПАНА03[Позиции_tr_x]=Раб.НФА.Свертка.sig[int(выделитьслово(6,Раб.НФА.Свертка.salddata[t],'|'))];
	if z_any_ref_list>1:ДОПАНА04[Позиции_tr_x]=Раб.НФА.Свертка.sig[int(выделитьслово(7,Раб.НФА.Свертка.salddata[t],'|'))];
	   if z_any_ref_list>2:ДОПАНА05[Позиции_tr_x]=Раб.НФА.Свертка.sig[int(выделитьслово(8,Раб.НФА.Свертка.salddata[t],'|'))];
	      if z_any_ref_list>3:ДОПАНА06[Позиции_tr_x]=Раб.НФА.Свертка.sig[int(выделитьслово(9,Раб.НФА.Свертка.salddata[t],'|'))];
		 if z_any_ref_list>4:ДОПАНА07[Позиции_tr_x]=Раб.НФА.Свертка.sig[int(выделитьслово(10,Раб.НФА.Свертка.salddata[t],'|'))];
		    if z_any_ref_list>5:ДОПАНА08[Позиции_tr_x]=Раб.НФА.Свертка.sig[int(выделитьслово(11,Раб.НФА.Свертка.salddata[t],'|'))];
		       if z_any_ref_list>6:ДОПАНА09[Позиции_tr_x]=Раб.НФА.Свертка.sig[int(выделитьслово(12,Раб.НФА.Свертка.salddata[t],'|'))];
			  if z_any_ref_list>7:ДОПАНА10[Позиции_tr_x]=Раб.НФА.Свертка.sig[int(выделитьслово(13,Раб.НФА.Свертка.salddata[t],'|'))];fi;
		       fi;
		    fi;
		 fi;
	      fi;
	   fi;
	fi;
     fi;

  fi;
 od;
 if xx>0:
    CloseWorkArea(ro);
 fi;
ДАТАОПЕР=ДАТАОПЕР;
CloseProgress;
end;
 Proc SaveDataAs4;
 var t,xx,z,zz,poz,q,z_any_ref_list,Позиции_tr_x,trx,RO,rec,ii:i;
 var ss,ss0,sacc,sacc0:s;
 var ll,ver_tb_net:l;
 var ОС_100,ОС_РАСХ,цена,nn:n;
 z_any_ref_list=количествослов(Раб.НФА.Свертка.any_ref_list,'|');

 ОС_100 =Общ_Пер('ОС_100' ,ДАТАОПЕР);
 ОС_РАСХ=Общ_Пер('ОС_РАСХ',ДАТАОПЕР);
 Позиции_tr=1;
 Позиции_tr_x=1;
 xx=lengthofarray(Раб.НФА.Свертка.salddata);
 ShowProgress(xx,'Расчет справки...');
 if xx>0:
    ver_tb_net=ИмяПользователя(ИмяБазы('РПО_ДНФА'))<>'';
    if not ver_tb_net:RO=OpenWorkArea("РПО_НФА", "ПРИЗНАК");
     | true	     :RO=OpenWorkArea("РПО_НФА", "", "1=0");
    fi;

--    ss0=выделитьслова(1,2,Раб.НФА.Свертка.salddata[1],'|');
    ss0=Раб.НФА.Свертка.salddata[1];--
     НФА_КОД[Позиции_tr_x]=Раб.НФА.Свертка.sig[int(выделитьслово(1,Раб.НФА.Свертка.salddata[1],'|'))];
     УЧН_КОД[Позиции_tr_x]=Раб.НФА.Свертка.sig[int(выделитьслово(2,Раб.НФА.Свертка.salddata[1],'|'))];
    --ss0=Раб.НФА.Свертка.sig[int(выделитьслово(1,Раб.НФА.Свертка.salddata[1],'|'))]+'|'+Раб.НФА.Свертка.sig[int(выделитьслово(2,Раб.НФА.Свертка.salddata[1],'|'))];
 fi;
 for t=1..xx+1 do
  ProgressPos(t);
--  zz=количествослов(salddata[t],'|');
  ss=Раб.НФА.Свертка.salddata[t];--
--  ss=выделитьслова(1,2,Раб.НФА.Свертка.salddata[t],'|');-- Взяли НФА+УЧН

--  ss=Раб.НФА.Свертка.sig[int(выделитьслово(1,Раб.НФА.Свертка.salddata[t],'|'))]+'|'+Раб.НФА.Свертка.sig[int(выделитьслово(2,Раб.НФА.Свертка.salddata[t],'|'))];
  if ss<>ss0 or t>xx:
     q=0;-- переход на следующее ОС+обработка текущего, т.к. вся информация по нему собрана
     for trx=Позиции_tr..Позиции_tr_x do
       if КОЛНФА[trx]<>0:цена=СУМНФА[trx]/КОЛНФА[trx];
	| true:цена=СУМНФА[trx];
       fi;
       if length(СЧНФА[trx])=33:
	  sacc0=ВыделитьСлово(6,СЧНФА[trx],'.');
	| true:sacc0=СЧНФА[trx];
       fi;
--	 if sacc0='101' and pos(' М.Э.',' '+ДОПАНА02[trx])>0:q=1;
       if sacc0='101' :
	     rec=RecordToInteger(ПризнакВзапись(НФА_КОД[trx],false));
	     if rec>0:if КартотекаПризнака(НФА_КОД[trx],false)<>'РПО_НФА':rec=0;fi;
		if rec>0:rec=SearchInArray(НФА_НЕСПИСЫВАТЬДО1000,rec,true);fi;
	     fi;
	     if rec<1 and pos(' М.Э.',' '+ДОПАНА02[trx])>0:
		q=1;
	     fi;

       fi;
       if q>0  :
	  if q>0:КОЛ1[trx]=КОЛНФА[trx];
	  fi;
	  if УЧН_КОД[trx]='УЧН.НЕТ':УЧН_КОД[trx]='';
	  fi;
	  if q=1 or q=2: --ОС до 3000
	  if АМСЧНФА[trx]='':
	     sacc0=ВыделитьСлова(КоличествоСлов(СЧНФА[trx],'.')-2,2,СЧНФА[trx],'.');--sacc0=ВыделитьСлова(2,2,СЧНФА[trx],'.');
	     if pos(sacc0,'101.11 101.12 101.13 101.31 101.32 101.33 101.34 101.15 101.35 101.36 101.37 101.18 101.38')>0:АМСЧНФА[trx]=SubStr(СЧНФА[trx],1,23)+'104.'+ВыделитьСлово(2,sacc0,'.')+'.410';
	      | sacc0='102.30':АМСЧНФА[trx]=SubStr(СЧНФА[trx],1,23)+'104.09.420';
	     fi;
	  fi;

	  if АМСЧНФАДЕБ[trx]='':
	     sacc0=ВыделитьСлово(5,СЧНФА[trx],'.');
	     АМСЧНФАДЕБ[trx]=SubStr(АМСЧНФА[trx],1,23)+'401.20.271';
	     if sacc0='2' or sacc0='4':-- 2 - внебюджет - проверка на 2.106.04
		if УслПД_106_0<>'':ll=false;
		   if not ll:if НФА_КОД[trx]<>'':ll=Раб.НФА.B01.2СоотвПризнака0(НФА_КОД[trx],УслПД_106_0);fi;fi;
		   if not ll:if УЧН_КОД[trx]<>'':ll=Раб.НФА.B01.2СоотвПризнака0(УЧН_КОД[trx],УслПД_106_0);fi;fi;
		   if not ll:if ДОПАНА01[trx]<>'':ll=Раб.НФА.B01.2СоотвПризнака0(ДОПАНА01[trx],УслПД_106_0);fi;
		      if not ll:if ДОПАНА02[trx]<>'':ll=Раб.НФА.B01.2СоотвПризнака0(ДОПАНА02[trx],УслПД_106_0);fi;
			 if not ll and z_any_ref_list>0:if ДОПАНА03[trx]<>'':ll=Раб.НФА.B01.2СоотвПризнака0(ДОПАНА03[trx],УслПД_106_0);fi;
			    if not ll and z_any_ref_list>1:if ДОПАНА04[trx]<>'':ll=Раб.НФА.B01.2СоотвПризнака0(ДОПАНА04[trx],УслПД_106_0);fi;
			       if not ll and z_any_ref_list>2:if ДОПАНА05[trx]<>'':ll=Раб.НФА.B01.2СоотвПризнака0(ДОПАНА05[trx],УслПД_106_0);fi;
				  if not ll and z_any_ref_list>3:if ДОПАНА06[trx]<>'':ll=Раб.НФА.B01.2СоотвПризнака0(ДОПАНА06[trx],УслПД_106_0);fi;
				     if not ll and z_any_ref_list>4:if ДОПАНА07[trx]<>'':ll=Раб.НФА.B01.2СоотвПризнака0(ДОПАНА07[trx],УслПД_106_0);fi;
					if not ll and z_any_ref_list>5:if ДОПАНА08[trx]<>'':ll=Раб.НФА.B01.2СоотвПризнака0(ДОПАНА08[trx],УслПД_106_0);fi;
					   if not ll and z_any_ref_list>6:if ДОПАНА09[trx]<>'':ll=Раб.НФА.B01.2СоотвПризнака0(ДОПАНА09[trx],УслПД_106_0);fi;
					      if not ll and z_any_ref_list>7:if ДОПАНА10[trx]<>'':ll=Раб.НФА.B01.2СоотвПризнака0(ДОПАНА10[trx],УслПД_106_0);fi;
					      fi;
					   fi;
					fi;
				     fi;
				  fi;
			       fi;
			    fi;
			 fi;
		      fi;
		   fi;
		   if ll:АМСЧНФАДЕБ[trx]=SubStr(АМСЧНФА[trx],1,23)+'109.60.271';fi;
		fi;
	     fi;
	  fi;

	       СУММА1[trx]=СУМНФА    [trx];
	       КОЛ1  [trx]=КОЛНФА    [trx];
	       if СУММА1[trx]<>0 or КОЛ1[trx]<>0:
		  СчДеб1[trx]=АМСЧНФАДЕБ[trx];
		  СчКре1[trx]=СЧНФАКРЕ	[trx];
		  КМНТ1 [trx]='стоимость до 3000 => списание';
	       fi;

	       СУММА2[trx]=СУМНФА    [trx];
	       КОЛ2  [trx]=КОЛНФА    [trx];
	       if СУММА2[trx]<>0 or КОЛ2[trx]<>0:
		  СчДеб2[trx]=СЧНФАЗАБ	[trx];
		  СчКре2[trx]='ЗАБАЛАНС';
		  КМНТ2 [trx]='стоимость до 3000 => к учету по забалансу';
	       fi;

--		 СУММА1[trx]=СУМНФА[trx];
--		 if СУММА1[trx]<>0:
--		    if ВыделитьСлово(5,СЧНФАКРЕ[trx],'.')='2':СчДеб1[trx]=ВыделитьСлова(1,5,СЧНФАКРЕ[trx],'.')+'.401.01.251';
--		     | true:СчДеб1[trx]=ВыделитьСлова(1,5,СЧНФАКРЕ[trx],'.')+'.304.04.310';
--		    fi;
--		    СчКре1[trx]=СЧНФАКРЕ  [trx];
--		    КМНТ1 [trx]='101 передача балансовой стоимости';
--		    УЧН_КОД[trx]='';
--		 fi;
	  fi;
	  ii=точность(НФА_КОД[trx]);
	  if  round(СУММА1[trx],2)=0 and round(СУММА2[trx],2)=0 and round(СУММА3[trx],2)=0 and round(КОЛ1[trx],ii)<>0 and round(КОЛ2[trx],ii)<>0 and round(КОЛ3[trx],ii)<>0:
	      DeleteFrame(Позиции_tr,trx);q=0;
	      Позиции_tr_x=Позиции_tr_x-1;
	   | true:if t<=xx:Позиции_tr=Позиции_tr+1;fi;
	  fi;
	| true:--ClearVartr_iter(Позиции_tr);
	      DeleteFrame(Позиции_tr,trx);q=0;
	      Позиции_tr_x=Позиции_tr_x-1;
	      trx=trx-1;
       fi;
     od;
     Позиции_tr_x=Позиции_tr_x+1;
     Позиции_tr=Позиции_tr_x;
     if t<=xx:
	НФА_КОД[Позиции_tr_x]=Раб.НФА.Свертка.sig[int(выделитьслово(1,Раб.НФА.Свертка.salddata[t],'|'))];
	УЧН_КОД[Позиции_tr_x]=Раб.НФА.Свертка.sig[int(выделитьслово(2,Раб.НФА.Свертка.salddata[t],'|'))];
	ss0=ss;
      | true:
	  if  СУММА1[Позиции_tr]=0 and СУММА2[Позиции_tr]=0 and СУММА3[Позиции_tr]=0:
	      DeleteFrame(Позиции_tr,Позиции_tr);q=0;
	  fi;
     fi;
  fi;
  ---------- сохраняем текущую информацию --------------
  sacc=Раб.НФА.Свертка.acc[int(выделитьслово(3,Раб.НФА.Свертка.salddata[t],'|'))];
  if length(sacc)=33: -- баланс
     sacc0=ВыделитьСлово(6,sacc,'.');
--     sacc0=ВыделитьСлова(6,2,sacc,'.')
   | true:sacc0=sacc;
  fi;
  if sacc0='101':
--     if СЧНФА[Позиции_tr_x]<>'' or ДОПАНА01[Позиции_tr_x]<>'' or ДОПАНА01[Позиции_tr_x]<>'' or: Позиции_tr_x=Позиции_tr_x+1;fi;-- явно нелады с количеством на учетном номере или со счетами
     if СЧНФА[Позиции_tr_x]+ДОПАНА01[Позиции_tr_x]+ДОПАНА02[Позиции_tr_x]+ДОПАНА03[Позиции_tr_x]+ДОПАНА04[Позиции_tr_x]+ДОПАНА05[Позиции_tr_x]+ДОПАНА06[Позиции_tr_x]+ДОПАНА07[Позиции_tr_x]+ДОПАНА08[Позиции_tr_x]+ДОПАНА09[Позиции_tr_x]+ДОПАНА10[Позиции_tr_x]<>'':
	Позиции_tr_x=Позиции_tr_x+1;-- уже было ОС с комбинацией НФА+УЧН на балансовом 101 =>явно нелады с количеством на учетном номере или со счетами
	--прерываем текущую обработку, формируем новую строчку
	НФА_КОД[Позиции_tr_x]=НФА_КОД[Позиции_tr];
	УЧН_КОД[Позиции_tr_x]=УЧН_КОД[Позиции_tr];
     fi;
     СЧНФА     [Позиции_tr_x]=SubStr(sacc,1,30)+'310';
     СЧНФАКРЕ  [Позиции_tr_x]=SubStr(sacc,1,30)+'410';
     КОЛНФА    [Позиции_tr_x]=Раб.НФА.Свертка.Koldata[t];
     СУМНФА    [Позиции_tr_x]=Раб.НФА.Свертка.Sumdata[t];
     СЧНФАЗАБ  [Позиции_tr_x]='ЗАБ.21.101.'+ВыделитьСлово(3,НФА_КОД[Позиции_tr_x],'.'); --ВыделитьСлово(7,sacc,'.');
     ДОПАНА01  [Позиции_tr_x]=Раб.НФА.Свертка.sig[int(выделитьслово(4,Раб.НФА.Свертка.salddata[t],'|'))];
     ДОПАНА02  [Позиции_tr_x]=Раб.НФА.Свертка.sig[int(выделитьслово(5,Раб.НФА.Свертка.salddata[t],'|'))];
     if z_any_ref_list>0:ДОПАНА03[Позиции_tr_x]=Раб.НФА.Свертка.sig[int(выделитьслово(6,Раб.НФА.Свертка.salddata[t],'|'))];
	if z_any_ref_list>1:ДОПАНА04[Позиции_tr_x]=Раб.НФА.Свертка.sig[int(выделитьслово(7,Раб.НФА.Свертка.salddata[t],'|'))];
	   if z_any_ref_list>2:ДОПАНА05[Позиции_tr_x]=Раб.НФА.Свертка.sig[int(выделитьслово(8,Раб.НФА.Свертка.salddata[t],'|'))];
	      if z_any_ref_list>3:ДОПАНА06[Позиции_tr_x]=Раб.НФА.Свертка.sig[int(выделитьслово(9,Раб.НФА.Свертка.salddata[t],'|'))];
		 if z_any_ref_list>4:ДОПАНА07[Позиции_tr_x]=Раб.НФА.Свертка.sig[int(выделитьслово(10,Раб.НФА.Свертка.salddata[t],'|'))];
		    if z_any_ref_list>5:ДОПАНА08[Позиции_tr_x]=Раб.НФА.Свертка.sig[int(выделитьслово(11,Раб.НФА.Свертка.salddata[t],'|'))];
		       if z_any_ref_list>6:ДОПАНА09[Позиции_tr_x]=Раб.НФА.Свертка.sig[int(выделитьслово(12,Раб.НФА.Свертка.salddata[t],'|'))];
			  if z_any_ref_list>7:ДОПАНА10[Позиции_tr_x]=Раб.НФА.Свертка.sig[int(выделитьслово(13,Раб.НФА.Свертка.salddata[t],'|'))];fi;
		       fi;
		    fi;
		 fi;
	      fi;
	   fi;
	fi;
     fi;
     ----- выборка аналитики ------
--     МОЛ|М + any_ref_list
     ------------------------------
--   | sacc0='104':
--     АМСЧНФА	 [Позиции_tr_x]=SubStr(sacc,1,30)+'410';
--     --АМСЧНФАДЕБ[Позиции_tr_x]=SubStr(sacc,1,23)+'401.01.271';
--     АМСУМНФА  [Позиции_tr_x]=Раб.НФА.Свертка.Sumdata[t];
--   | sacc0='ЗАБ.НФА.ДЭКСПЛ':
--     ДЭКСПЛ	 [Позиции_tr_x]=1.1.100+int(Раб.НФА.Свертка.Sumdata[t]);
--   | sacc0='ЗАБ.НФА.ДУЧЕТ':
--     ДУЧЕТ	 [Позиции_tr_x]=1.1.100+int(Раб.НФА.Свертка.Sumdata[t]);
--   | sacc0='ЗАБ.НФА.НЕТМЕСАМОРТ':
--     НЕТАМОРТ  [Позиции_tr_x]=int(Раб.НФА.Свертка.Sumdata[t]);

  fi;
 od;
 if xx>0:
    CloseWorkArea(ro);
 fi;
ДАТАОПЕР=ДАТАОПЕР;
CloseProgress;
end;

 Proc SaveDataAs5;
 var t,xx,z,zz,poz,q,z_any_ref_list,Позиции_tr_x,trx,RO,rec,ii:i;
 var ss,ss0,sacc,sacc0:s;
 var ll,ver_tb_net:l;
 var ОС_100,ОС_РАСХ,цена,nn:n;
 var ФКР_НОВЫЙ,ВД_НОВЫЙ,ФКР_ВД_НОВЫЙ,СЧЕТ_КД_НОВЫЙ:s;
 z_any_ref_list=количествослов(Раб.НФА.Свертка.any_ref_list,'|');
 ФКР_НОВЫЙ='';
 ВД_НОВЫЙ='.1.';
 СЧЕТ_КД_НОВЫЙ='';
 if not match(ФКР_НОВЫЙ,'ФКР.???.????.???????.???'):
    ФКР_НОВЫЙ=ВыборПризнака('ФКР.???.????.???????.???');
    if not match(ФКР_НОВЫЙ,'ФКР.???.????.???????.???'):exit;fi;
 fi;
 if not match(СЧЕТ_КД_НОВЫЙ,'???.?.??.?????.??.????.1.401.10.180'):
    СЧЕТ_КД_НОВЫЙ=ВыборСчета('???.?.??.?????.??.????.1.401.10.180');
    if not match(СЧЕТ_КД_НОВЫЙ,'???.?.??.?????.??.????.1.401.10.180'):exit;fi;
 fi;
 ФКР_ВД_НОВЫЙ=SubStr(ФКР_НОВЫЙ,5,255)+ВД_НОВЫЙ;
 ОС_100 =Общ_Пер('ОС_100' ,ДАТАОПЕР);
 ОС_РАСХ=Общ_Пер('ОС_РАСХ',ДАТАОПЕР);
 Позиции_tr=1;
 Позиции_tr_x=1;
 xx=lengthofarray(Раб.НФА.Свертка.salddata);
 ShowProgress(xx,'Расчет справки...');
 if xx>0:
    ver_tb_net=ИмяПользователя(ИмяБазы('РПО_ДНФА'))<>'';
    if not ver_tb_net:RO=OpenWorkArea("РПО_НФА", "ПРИЗНАК");
     | true	     :RO=OpenWorkArea("РПО_НФА", "", "1=0");
    fi;

    ss0=выделитьслова(1,2,Раб.НФА.Свертка.salddata[1],'|');
     НФА_КОД[Позиции_tr_x]=Раб.НФА.Свертка.sig[int(выделитьслово(1,Раб.НФА.Свертка.salddata[1],'|'))];
     УЧН_КОД[Позиции_tr_x]=Раб.НФА.Свертка.sig[int(выделитьслово(2,Раб.НФА.Свертка.salddata[1],'|'))];
    --ss0=Раб.НФА.Свертка.sig[int(выделитьслово(1,Раб.НФА.Свертка.salddata[1],'|'))]+'|'+Раб.НФА.Свертка.sig[int(выделитьслово(2,Раб.НФА.Свертка.salddata[1],'|'))];
 fi;
 for t=1..xx+1 do
  ProgressPos(t);
--  zz=количествослов(salddata[t],'|');
  ss=выделитьслова(1,2,Раб.НФА.Свертка.salddata[t],'|');-- Взяли НФА+УЧН
--  ss=Раб.НФА.Свертка.sig[int(выделитьслово(1,Раб.НФА.Свертка.salddata[t],'|'))]+'|'+Раб.НФА.Свертка.sig[int(выделитьслово(2,Раб.НФА.Свертка.salddata[t],'|'))];
  if ss<>ss0 or t>xx:
     q=0;-- переход на следующее ОС+обработка текущего, т.к. вся информация по нему собрана
     for trx=Позиции_tr..Позиции_tr_x do
       if КОЛНФА[trx]<>0:цена=СУМНФА[trx]/КОЛНФА[trx];
	| true:цена=СУМНФА[trx];
       fi;
       if length(СЧНФА[trx])=33:
	  sacc0=ВыделитьСлово(6,СЧНФА[trx],'.');
	| true:sacc0=СЧНФА[trx];
       fi;
       if sacc0='101':
--	    if цена<3001:q=1;
	  if цена<1001:q=1;
	   | true:     q=2;
	  fi;
	| sacc0='105':q=3;
	| соотв(sacc0,'ЗАБ.??.???.??'):q=4;
       fi;
       if q>0  :
	  if q=2  :
	  if АМСЧНФА[trx]='':
	     sacc0=ВыделитьСлова(КоличествоСлов(СЧНФА[trx],'.')-2,2,СЧНФА[trx],'.');--sacc0=ВыделитьСлова(2,2,СЧНФА[trx],'.');
	     if pos(sacc0,'101.11 101.12 101.13 101.31 101.32 101.33 101.34 101.15 101.35 101.36 101.37 101.18 101.38')>0:АМСЧНФА[trx]=SubStr(СЧНФА[trx],1,23)+'104.'+ВыделитьСлово(2,sacc0,'.')+'.410';
	      | sacc0='102.30':АМСЧНФА[trx]=SubStr(СЧНФА[trx],1,23)+'104.09.420';
	     fi;
	  fi;

	     if АМСЧНФАДЕБ[trx]='':
		sacc0=ВыделитьСлово(5,СЧНФА[trx],'.');
		АМСЧНФАДЕБ[trx]=SubStr(АМСЧНФА[trx],1,23)+'401.20.271';
		if sacc0='2' or sacc0='4':-- 2 - внебюджет - проверка на 2.106.04
		   if УслПД_106_0<>'':ll=false;
		      if not ll:if НФА_КОД[trx]<>'':ll=Раб.НФА.B01.2СоотвПризнака0(НФА_КОД[trx],УслПД_106_0);fi;fi;
		      if not ll:if УЧН_КОД[trx]<>'':ll=Раб.НФА.B01.2СоотвПризнака0(УЧН_КОД[trx],УслПД_106_0);fi;fi;
		      if not ll:if ДОПАНА01[trx]<>'':ll=Раб.НФА.B01.2СоотвПризнака0(ДОПАНА01[trx],УслПД_106_0);fi;
			 if not ll:if ДОПАНА02[trx]<>'':ll=Раб.НФА.B01.2СоотвПризнака0(ДОПАНА02[trx],УслПД_106_0);fi;
			    if not ll and z_any_ref_list>0:if ДОПАНА03[trx]<>'':ll=Раб.НФА.B01.2СоотвПризнака0(ДОПАНА03[trx],УслПД_106_0);fi;
			       if not ll and z_any_ref_list>1:if ДОПАНА04[trx]<>'':ll=Раб.НФА.B01.2СоотвПризнака0(ДОПАНА04[trx],УслПД_106_0);fi;
				  if not ll and z_any_ref_list>2:if ДОПАНА05[trx]<>'':ll=Раб.НФА.B01.2СоотвПризнака0(ДОПАНА05[trx],УслПД_106_0);fi;
				     if not ll and z_any_ref_list>3:if ДОПАНА06[trx]<>'':ll=Раб.НФА.B01.2СоотвПризнака0(ДОПАНА06[trx],УслПД_106_0);fi;
					if not ll and z_any_ref_list>4:if ДОПАНА07[trx]<>'':ll=Раб.НФА.B01.2СоотвПризнака0(ДОПАНА07[trx],УслПД_106_0);fi;
					   if not ll and z_any_ref_list>5:if ДОПАНА08[trx]<>'':ll=Раб.НФА.B01.2СоотвПризнака0(ДОПАНА08[trx],УслПД_106_0);fi;
					      if not ll and z_any_ref_list>6:if ДОПАНА09[trx]<>'':ll=Раб.НФА.B01.2СоотвПризнака0(ДОПАНА09[trx],УслПД_106_0);fi;
						 if not ll and z_any_ref_list>7:if ДОПАНА10[trx]<>'':ll=Раб.НФА.B01.2СоотвПризнака0(ДОПАНА10[trx],УслПД_106_0);fi;
						 fi;
					      fi;
					   fi;
					fi;
				     fi;
				  fi;
			       fi;
			    fi;
			 fi;
		      fi;
		      if ll:АМСЧНФАДЕБ[trx]=SubStr(АМСЧНФА[trx],1,23)+'109.60.271';fi;
		   fi;
		fi;
	     fi;
	  fi;
	  if q>0:КОЛ1[trx]=КОЛНФА[trx];
	  fi;
	  if УЧН_КОД[trx]='УЧН.НЕТ':УЧН_КОД[trx]='';
	  fi;
	  if q=1: --ОС до 3000
	       СУММА1[trx]=СУМНФА[trx];
	       if СУММА1[trx]<>0:
		  if ВыделитьСлово(5,СЧНФАКРЕ[trx],'.')='2':СчДеб1[trx]=ВыделитьСлова(1,5,СЧНФАКРЕ[trx],'.')+'.401.20.241';
		   | true:СчДеб1[trx]=ВыделитьСлова(1,5,СЧНФАКРЕ[trx],'.')+'.304.04.310';
		  fi;
		  СчКре1[trx]=СЧНФАКРЕ	[trx];
		  КМНТ1 [trx]='101 передача балансовой стоимости';
		  УЧН_КОД[trx]='';
	       fi;
	   | q=2:-- ОС >3000
	       СУММА1[trx]=СУМНФА[trx];
	       if СУММА1[trx]<>0:
		  if ВыделитьСлово(5,СЧНФАКРЕ[trx],'.')='2':СчДеб1[trx]=ВыделитьСлова(1,5,СЧНФАКРЕ[trx],'.')+'.401.20.241';
		   | true:СчДеб1[trx]=ВыделитьСлова(1,5,СЧНФАКРЕ[trx],'.')+'.304.04.310';
		  fi;
		  СчКре1[trx]=СЧНФАКРЕ	[trx];
		  КМНТ1 [trx]='101 передача балансовой стоимости';
	       fi;

--   | sacc0='104':
--     АМСЧНФА	 [Позиции_tr_x]=SubStr(sacc,1,30)+'410';
--     --АМСЧНФАДЕБ[Позиции_tr_x]=SubStr(sacc,1,23)+'401.01.271';
--     АМСУМНФА  [Позиции_tr_x]=Раб.НФА.Свертка.Sumdata[t];
--   | sacc0='ЗАБ.НФА.ДЭКСПЛ':
--     ДЭКСПЛ	 [Позиции_tr_x]=1.1.100+int(Раб.НФА.Свертка.Sumdata[t]);
--   | sacc0='ЗАБ.НФА.ДУЧЕТ':
--     ДУЧЕТ	 [Позиции_tr_x]=1.1.100+int(Раб.НФА.Свертка.Sumdata[t]);
--   | sacc0='ЗАБ.НФА.НЕТМЕСАМОРТ':
--     НЕТАМОРТ  [Позиции_tr_x]=int(Раб.НФА.Свертка.Sumdata[t]);

       ДЭКСПЛ [trx]=Раб.НФА.B01.ВзятьДЭКСПЛ(НФА_КОД[trx],УЧН_КОД[trx]);
       ДУЧЕТ  [trx]=Раб.НФА.B01.ВзятьДУЧЕТ (НФА_КОД[trx],УЧН_КОД[trx]);
       if УЧН_КОД[trx]<>'':НЕТАМОРТ[trx] =int(ОСТАТОК('ЗАБ.НФА.НЕТМЕСАМОРТ{'+НФА_КОД[trx]+'&'+УЧН_КОД[trx]+'}',ДАТАОПЕР+1));fi;
       if АМСЧНФА[trx]='':
	  sacc0=ВыделитьСлова(КоличествоСлов(СЧНФА[trx],'.')-2,2,СЧНФА[trx],'.');--sacc0=ВыделитьСлова(2,2,СЧНФА[trx],'.');
	  if pos(sacc0,'101.11 101.12 101.13 101.31 101.32 101.33 101.34 101.15 101.35 101.36 101.37 101.18 101.38')>0:АМСЧНФА[trx]=SubStr(СЧНФА[trx],1,23)+'104.'+ВыделитьСлово(2,sacc0,'.')+'.410';
	   | sacc0='102.30':АМСЧНФА[trx]=SubStr(СЧНФА[trx],1,23)+'104.09.420';
	  fi;
       fi;
	    if УЧН_КОД[trx]<>'':
	       АМСУМНФА  [trx]=round(ОСТАТОК(АМСЧНФА[trx]+'{'+НФА_КОД[trx]+'&'+УЧН_КОД[trx]+'}',ДАТАОПЕР+1),2);
	       СУММА2[trx]=-АМСУМНФА  [trx];
	       if СУММА2[trx]<>0:
		  if ВыделитьСлово(5,СЧНФАКРЕ[trx],'.')='2':СчКре2[trx]=ВыделитьСлова(1,5,СЧНФАКРЕ[trx],'.')+'.401.20.241';
		   | true:СчКре2[trx]=ВыделитьСлова(1,5,СЧНФАКРЕ[trx],'.')+'.304.04.310';
		  fi;
		  СчДеб2[trx]=АМСЧНФА	[trx];
		  КМНТ2 [trx]='101 передача амортизации';
	       fi;
	     | true:trace('НЕТ УЧН!='+НФА_КОД[trx]+'/'+СчКре1[trx]);
	    fi;
	   | q=3:--материалы
	       СУММА1[trx]=СУМНФА[trx];
	       if СУММА1[trx]<>0:
		  if ВыделитьСлово(5,СЧНФАКРЕ[trx],'.')='2':СчДеб1[trx]=ВыделитьСлова(1,5,СЧНФАКРЕ[trx],'.')+'.401.20.241';
		   | true:СчДеб1[trx]=ВыделитьСлова(1,5,СЧНФАКРЕ[trx],'.')+'.304.04.340';
		  fi;
		  СчКре1[trx]=СЧНФАКРЕ	[trx];
		  КМНТ1 [trx]='105 передача балансовой стоимости';
	       fi;
	   | q=4:--Забаланс
	       СУММА1[trx]=СУМНФА[trx];
	       if СУММА1[trx]<>0:
		  СчДеб1[trx]='ЗАБАЛАНС';
		  СчКре1[trx]=СЧНФАКРЕ	[trx];
		  КМНТ1 [trx]='Забаланс, передача по учетной стоимости';
	       fi;

	  fi;
	  ii=точность(НФА_КОД[trx]);
	  if  round(СУММА1[trx],2)=0 and round(СУММА2[trx],2)=0 and round(СУММА3[trx],2)=0 and round(КОЛ1[trx],ii)<>0 and round(КОЛ2[trx],ii)<>0 and round(КОЛ3[trx],ii)<>0:
	      DeleteFrame(Позиции_tr,trx);q=0;
	      Позиции_tr_x=Позиции_tr_x-1;
	   | true:
	     if t<=xx:Позиции_tr=Позиции_tr+1;fi;
	  fi;
	| true:--ClearVartr_iter(Позиции_tr);
	      DeleteFrame(Позиции_tr,trx);q=0;
	      Позиции_tr_x=Позиции_tr_x-1;
	      trx=trx-1;
       fi;
     od;
---------------- Формируем приход по бюджету ---------------------------
     if 1=2:
     Позиции_tr_x=Позиции_tr_x+1;
     Позиции_tr=Позиции_tr_x;
--		Позиции_tr=Позиции_tr+1;
--		trx=trx+1;
	      СУММА1[Позиции_tr]=СУММА1[Позиции_tr-1];
	      СУММА2[Позиции_tr]=СУММА2[Позиции_tr-1];
	      СУММА3[Позиции_tr]=СУММА3[Позиции_tr-1];
	      КОЛ1[Позиции_tr]=КОЛ1[Позиции_tr-1];
	      КОЛ2[Позиции_tr]=КОЛ2[Позиции_tr-1];
	      КОЛ3[Позиции_tr]=КОЛ3[Позиции_tr-1];
	      КМНТ1[Позиции_tr]=КМНТ1[Позиции_tr-1];
	      КМНТ2[Позиции_tr]=КМНТ2[Позиции_tr-1];
	      КМНТ3[Позиции_tr]=КМНТ3[Позиции_tr-1];
	      НФА_КОД[Позиции_tr]=НФА_КОД[Позиции_tr-1];
	      УЧН_КОД[Позиции_tr]=УЧН_КОД[Позиции_tr-1];
	      СЧНФА	[Позиции_tr]=СЧНФА     [Позиции_tr-1];
	      СЧНФАКРЕ	[Позиции_tr]=СЧНФАКРЕ  [Позиции_tr-1];
	      КОЛНФА	[Позиции_tr]=КОЛНФА    [Позиции_tr-1];
	      СУМНФА	[Позиции_tr]=СУМНФА    [Позиции_tr-1];
	      СЧНФАЗАБ	[Позиции_tr]=СЧНФАЗАБ  [Позиции_tr-1];
	      ДОПАНА01	[Позиции_tr]=ДОПАНА01  [Позиции_tr-1];if match(ДОПАНА01[Позиции_tr],'ФКР.*'):if ДОПАНА01[Позиции_tr]<>ФКР_НОВЫЙ:ДОПАНА01[Позиции_tr]=ФКР_НОВЫЙ;fi;fi;
	      ДОПАНА02	[Позиции_tr]=ДОПАНА02  [Позиции_tr-1];if match(ДОПАНА02[Позиции_tr],'ФКР.*'):if ДОПАНА02[Позиции_tr]<>ФКР_НОВЫЙ:ДОПАНА02[Позиции_tr]=ФКР_НОВЫЙ;fi;fi;
	      ДОПАНА03	[Позиции_tr]=ДОПАНА03  [Позиции_tr-1];if match(ДОПАНА03[Позиции_tr],'ФКР.*'):if ДОПАНА03[Позиции_tr]<>ФКР_НОВЫЙ:ДОПАНА03[Позиции_tr]=ФКР_НОВЫЙ;fi;fi;
	      ДОПАНА04	[Позиции_tr]=ДОПАНА04  [Позиции_tr-1];if match(ДОПАНА04[Позиции_tr],'ФКР.*'):if ДОПАНА04[Позиции_tr]<>ФКР_НОВЫЙ:ДОПАНА04[Позиции_tr]=ФКР_НОВЫЙ;fi;fi;
	      ДОПАНА05	[Позиции_tr]=ДОПАНА05  [Позиции_tr-1];if match(ДОПАНА05[Позиции_tr],'ФКР.*'):if ДОПАНА05[Позиции_tr]<>ФКР_НОВЫЙ:ДОПАНА05[Позиции_tr]=ФКР_НОВЫЙ;fi;fi;
	      ДОПАНА06	[Позиции_tr]=ДОПАНА06  [Позиции_tr-1];if match(ДОПАНА06[Позиции_tr],'ФКР.*'):if ДОПАНА06[Позиции_tr]<>ФКР_НОВЫЙ:ДОПАНА06[Позиции_tr]=ФКР_НОВЫЙ;fi;fi;
	      ДОПАНА07	[Позиции_tr]=ДОПАНА07  [Позиции_tr-1];if match(ДОПАНА07[Позиции_tr],'ФКР.*'):if ДОПАНА07[Позиции_tr]<>ФКР_НОВЫЙ:ДОПАНА07[Позиции_tr]=ФКР_НОВЫЙ;fi;fi;
	      ДОПАНА08	[Позиции_tr]=ДОПАНА08  [Позиции_tr-1];if match(ДОПАНА08[Позиции_tr],'ФКР.*'):if ДОПАНА08[Позиции_tr]<>ФКР_НОВЫЙ:ДОПАНА08[Позиции_tr]=ФКР_НОВЫЙ;fi;fi;
	      ДОПАНА09	[Позиции_tr]=ДОПАНА09  [Позиции_tr-1];if match(ДОПАНА09[Позиции_tr],'ФКР.*'):if ДОПАНА09[Позиции_tr]<>ФКР_НОВЫЙ:ДОПАНА09[Позиции_tr]=ФКР_НОВЫЙ;fi;fi;
	      ДОПАНА10	[Позиции_tr]=ДОПАНА10  [Позиции_tr-1];if match(ДОПАНА10[Позиции_tr],'ФКР.*'):if ДОПАНА10[Позиции_tr]<>ФКР_НОВЫЙ:ДОПАНА10[Позиции_tr]=ФКР_НОВЫЙ;fi;fi;
	      СчДеб1	[Позиции_tr]=СчКре1    [Позиции_tr-1];
	      if match(СчДеб1[Позиции_tr],'*.401.20.241'):СчДеб1[Позиции_tr]=СЧЕТ_КД_НОВЫЙ;
	       | match(СчДеб1[Позиции_tr],'???.????.???????.???.2.???.??.???'):СчДеб1[Позиции_tr]=ФКР_ВД_НОВЫЙ+SubStr(СчДеб1[Позиции_tr],24,10);
		 if match(СчДеб1[Позиции_tr],'???.????.???????.???.?.???.??.4??'):СчДеб1[Позиции_tr]=SubStr(СчДеб1[Позиции_tr],1,30)+'3'+SubStr(СчДеб1[Позиции_tr],32,2);fi;
	      fi;
	      СчДеб2	[Позиции_tr]=СчКре2    [Позиции_tr-1];
	      if match(СчДеб2[Позиции_tr],'*.401.20.241'):СчДеб2[Позиции_tr]=СЧЕТ_КД_НОВЫЙ;
	       | match(СчДеб2[Позиции_tr],'???.????.???????.???.2.???.??.???'):СчДеб2[Позиции_tr]=ФКР_ВД_НОВЫЙ+SubStr(СчДеб2[Позиции_tr],24,10);
		 if match(СчДеб2[Позиции_tr],'???.????.???????.???.?.???.??.4??'):СчДеб2[Позиции_tr]=SubStr(СчДеб2[Позиции_tr],1,30)+'3'+SubStr(СчДеб2[Позиции_tr],32,2);fi;
	      fi;
	      СчДеб3	[Позиции_tr]=СчКре3    [Позиции_tr-1];
	      if match(СчДеб3[Позиции_tr],'*.401.20.241'):СчДеб3[Позиции_tr]=СЧЕТ_КД_НОВЫЙ;
	       | match(СчДеб3[Позиции_tr],'???.????.???????.???.2.???.??.???'):СчДеб3[Позиции_tr]=ФКР_ВД_НОВЫЙ+SubStr(СчДеб3[Позиции_tr],24,10);
		 if match(СчДеб3[Позиции_tr],'???.????.???????.???.?.???.??.4??'):СчДеб3[Позиции_tr]=SubStr(СчДеб3[Позиции_tr],1,30)+'3'+SubStr(СчДеб3[Позиции_tr],32,2);fi;
	      fi;

	      СчКре1	[Позиции_tr]=СчДеб1    [Позиции_tr-1];
	      if match(СчКре1[Позиции_tr],'*.401.20.241'):СчКре1[Позиции_tr]=СЧЕТ_КД_НОВЫЙ;
	       | match(СчКре1[Позиции_tr],'???.????.???????.???.2.???.??.???'):СчКре1[Позиции_tr]=ФКР_ВД_НОВЫЙ+SubStr(СчКре1[Позиции_tr],24,10);
	      fi;
	      СчКре2	[Позиции_tr]=СчДеб2    [Позиции_tr-1];
	      if match(СчКре2[Позиции_tr],'*.401.20.241'):СчКре2[Позиции_tr]=СЧЕТ_КД_НОВЫЙ;
	       | match(СчКре2[Позиции_tr],'???.????.???????.???.2.???.??.???'):СчКре2[Позиции_tr]=ФКР_ВД_НОВЫЙ+SubStr(СчКре2[Позиции_tr],24,10);
	      fi;
	      СчКре3	[Позиции_tr]=СчДеб3    [Позиции_tr-1];
	      if match(СчКре3[Позиции_tr],'*.401.20.241'):СчКре3[Позиции_tr]=СЧЕТ_КД_НОВЫЙ;
	       | match(СчКре3[Позиции_tr],'???.????.???????.???.2.???.??.???'):СчКре3[Позиции_tr]=ФКР_ВД_НОВЫЙ+SubStr(СчКре3[Позиции_tr],24,10);
	      fi;
     fi;
------------------------------------------------------------------------
     Позиции_tr_x=Позиции_tr_x+1;
     Позиции_tr=Позиции_tr_x;
     if t<=xx:
	НФА_КОД[Позиции_tr_x]=Раб.НФА.Свертка.sig[int(выделитьслово(1,Раб.НФА.Свертка.salddata[t],'|'))];
	УЧН_КОД[Позиции_tr_x]=Раб.НФА.Свертка.sig[int(выделитьслово(2,Раб.НФА.Свертка.salddata[t],'|'))];
	ss0=ss;
      | true:
	  if  СУММА1[Позиции_tr]=0 and СУММА2[Позиции_tr]=0 and СУММА3[Позиции_tr]=0:
	      DeleteFrame(Позиции_tr,Позиции_tr);q=0;
	  fi;
     fi;
  fi;
  ---------- сохраняем текущую информацию --------------
  sacc=Раб.НФА.Свертка.acc[int(выделитьслово(3,Раб.НФА.Свертка.salddata[t],'|'))];
  if length(sacc)=33: -- баланс
     sacc0=ВыделитьСлово(6,sacc,'.');
--     sacc0=ВыделитьСлова(6,2,sacc,'.')
   | true:sacc0=sacc;
  fi;
  if sacc0='101':
--     if СЧНФА[Позиции_tr_x]<>'' or ДОПАНА01[Позиции_tr_x]<>'' or ДОПАНА01[Позиции_tr_x]<>'' or: Позиции_tr_x=Позиции_tr_x+1;fi;-- явно нелады с количеством на учетном номере или со счетами
     if СЧНФА[Позиции_tr_x]+ДОПАНА01[Позиции_tr_x]+ДОПАНА02[Позиции_tr_x]+ДОПАНА03[Позиции_tr_x]+ДОПАНА04[Позиции_tr_x]+ДОПАНА05[Позиции_tr_x]+ДОПАНА06[Позиции_tr_x]+ДОПАНА07[Позиции_tr_x]+ДОПАНА08[Позиции_tr_x]+ДОПАНА09[Позиции_tr_x]+ДОПАНА10[Позиции_tr_x]<>'':
	Позиции_tr_x=Позиции_tr_x+1;-- уже было ОС с комбинацией НФА+УЧН на балансовом 101 =>явно нелады с количеством на учетном номере или со счетами
	--прерываем текущую обработку, формируем новую строчку
	НФА_КОД[Позиции_tr_x]=НФА_КОД[Позиции_tr];
	УЧН_КОД[Позиции_tr_x]=УЧН_КОД[Позиции_tr];
     fi;
     СЧНФА     [Позиции_tr_x]=SubStr(sacc,1,30)+'310';
     СЧНФАКРЕ  [Позиции_tr_x]=SubStr(sacc,1,30)+'410';
     КОЛНФА    [Позиции_tr_x]=Раб.НФА.Свертка.Koldata[t];
     СУМНФА    [Позиции_tr_x]=Раб.НФА.Свертка.Sumdata[t];
     СЧНФАЗАБ  [Позиции_tr_x]='ЗАБ.21.101.'+ВыделитьСлово(3,НФА_КОД[Позиции_tr_x],'.'); --ВыделитьСлово(7,sacc,'.');
     ДОПАНА01  [Позиции_tr_x]=Раб.НФА.Свертка.sig[int(выделитьслово(4,Раб.НФА.Свертка.salddata[t],'|'))];
     ДОПАНА02  [Позиции_tr_x]=Раб.НФА.Свертка.sig[int(выделитьслово(5,Раб.НФА.Свертка.salddata[t],'|'))];
     if z_any_ref_list>0:ДОПАНА03[Позиции_tr_x]=Раб.НФА.Свертка.sig[int(выделитьслово(6,Раб.НФА.Свертка.salddata[t],'|'))];
	if z_any_ref_list>1:ДОПАНА04[Позиции_tr_x]=Раб.НФА.Свертка.sig[int(выделитьслово(7,Раб.НФА.Свертка.salddata[t],'|'))];
	   if z_any_ref_list>2:ДОПАНА05[Позиции_tr_x]=Раб.НФА.Свертка.sig[int(выделитьслово(8,Раб.НФА.Свертка.salddata[t],'|'))];
	      if z_any_ref_list>3:ДОПАНА06[Позиции_tr_x]=Раб.НФА.Свертка.sig[int(выделитьслово(9,Раб.НФА.Свертка.salddata[t],'|'))];
		 if z_any_ref_list>4:ДОПАНА07[Позиции_tr_x]=Раб.НФА.Свертка.sig[int(выделитьслово(10,Раб.НФА.Свертка.salddata[t],'|'))];
		    if z_any_ref_list>5:ДОПАНА08[Позиции_tr_x]=Раб.НФА.Свертка.sig[int(выделитьслово(11,Раб.НФА.Свертка.salddata[t],'|'))];
		       if z_any_ref_list>6:ДОПАНА09[Позиции_tr_x]=Раб.НФА.Свертка.sig[int(выделитьслово(12,Раб.НФА.Свертка.salddata[t],'|'))];
			  if z_any_ref_list>7:ДОПАНА10[Позиции_tr_x]=Раб.НФА.Свертка.sig[int(выделитьслово(13,Раб.НФА.Свертка.salddata[t],'|'))];fi;
		       fi;
		    fi;
		 fi;
	      fi;
	   fi;
	fi;
     fi;
     ----- выборка аналитики ------
--     МОЛ|М + any_ref_list
     ------------------------------
--   | sacc0='104':
--     АМСЧНФА	 [Позиции_tr_x]=SubStr(sacc,1,30)+'410';
--     --АМСЧНФАДЕБ[Позиции_tr_x]=SubStr(sacc,1,23)+'401.01.271';
--     АМСУМНФА  [Позиции_tr_x]=Раб.НФА.Свертка.Sumdata[t];
--   | sacc0='ЗАБ.НФА.ДЭКСПЛ':
--     ДЭКСПЛ	 [Позиции_tr_x]=1.1.100+int(Раб.НФА.Свертка.Sumdata[t]);
--   | sacc0='ЗАБ.НФА.ДУЧЕТ':
--     ДУЧЕТ	 [Позиции_tr_x]=1.1.100+int(Раб.НФА.Свертка.Sumdata[t]);
--   | sacc0='ЗАБ.НФА.НЕТМЕСАМОРТ':
--     НЕТАМОРТ  [Позиции_tr_x]=int(Раб.НФА.Свертка.Sumdata[t]);
   | sacc0='105':
     if СЧНФА[Позиции_tr_x]+ДОПАНА01[Позиции_tr_x]+ДОПАНА02[Позиции_tr_x]+ДОПАНА03[Позиции_tr_x]+ДОПАНА04[Позиции_tr_x]+ДОПАНА05[Позиции_tr_x]+ДОПАНА06[Позиции_tr_x]+ДОПАНА07[Позиции_tr_x]+ДОПАНА08[Позиции_tr_x]+ДОПАНА09[Позиции_tr_x]+ДОПАНА10[Позиции_tr_x]<>'':
	Позиции_tr_x=Позиции_tr_x+1;-- уже был материал с комбинацией НФА+УЧН на балансовом 105 =>прерываем текущую обработку, формируем новую строчку
	НФА_КОД[Позиции_tr_x]=НФА_КОД[Позиции_tr];
	УЧН_КОД[Позиции_tr_x]=УЧН_КОД[Позиции_tr];
     fi;
     СЧНФА     [Позиции_tr_x]=SubStr(sacc,1,30)+'340';
     СЧНФАКРЕ  [Позиции_tr_x]=SubStr(sacc,1,30)+'440';
     КОЛНФА    [Позиции_tr_x]=Раб.НФА.Свертка.Koldata[t];
     СУМНФА    [Позиции_tr_x]=Раб.НФА.Свертка.Sumdata[t];
     СЧНФАЗАБ  [Позиции_tr_x]='ЗАБ.21.105.'+ВыделитьСлово(3,НФА_КОД[Позиции_tr_x],'.'); --ВыделитьСлово(7,sacc,'.');
     ДОПАНА01  [Позиции_tr_x]=Раб.НФА.Свертка.sig[int(выделитьслово(4,Раб.НФА.Свертка.salddata[t],'|'))];
     ДОПАНА02  [Позиции_tr_x]=Раб.НФА.Свертка.sig[int(выделитьслово(5,Раб.НФА.Свертка.salddata[t],'|'))];
     if z_any_ref_list>0:ДОПАНА03[Позиции_tr_x]=Раб.НФА.Свертка.sig[int(выделитьслово(6,Раб.НФА.Свертка.salddata[t],'|'))];
	if z_any_ref_list>1:ДОПАНА04[Позиции_tr_x]=Раб.НФА.Свертка.sig[int(выделитьслово(7,Раб.НФА.Свертка.salddata[t],'|'))];
	   if z_any_ref_list>2:ДОПАНА05[Позиции_tr_x]=Раб.НФА.Свертка.sig[int(выделитьслово(8,Раб.НФА.Свертка.salddata[t],'|'))];
	      if z_any_ref_list>3:ДОПАНА06[Позиции_tr_x]=Раб.НФА.Свертка.sig[int(выделитьслово(9,Раб.НФА.Свертка.salddata[t],'|'))];
		 if z_any_ref_list>4:ДОПАНА07[Позиции_tr_x]=Раб.НФА.Свертка.sig[int(выделитьслово(10,Раб.НФА.Свертка.salddata[t],'|'))];
		    if z_any_ref_list>5:ДОПАНА08[Позиции_tr_x]=Раб.НФА.Свертка.sig[int(выделитьслово(11,Раб.НФА.Свертка.salddata[t],'|'))];
		       if z_any_ref_list>6:ДОПАНА09[Позиции_tr_x]=Раб.НФА.Свертка.sig[int(выделитьслово(12,Раб.НФА.Свертка.salddata[t],'|'))];
			  if z_any_ref_list>7:ДОПАНА10[Позиции_tr_x]=Раб.НФА.Свертка.sig[int(выделитьслово(13,Раб.НФА.Свертка.salddata[t],'|'))];fi;
		       fi;
		    fi;
		 fi;
	      fi;
	   fi;
	fi;
     fi;
   | соотв(sacc0,'ЗАБ.??.???.??'):
     if СЧНФА[Позиции_tr_x]+ДОПАНА01[Позиции_tr_x]+ДОПАНА02[Позиции_tr_x]+ДОПАНА03[Позиции_tr_x]+ДОПАНА04[Позиции_tr_x]+ДОПАНА05[Позиции_tr_x]+ДОПАНА06[Позиции_tr_x]+ДОПАНА07[Позиции_tr_x]+ДОПАНА08[Позиции_tr_x]+ДОПАНА09[Позиции_tr_x]+ДОПАНА10[Позиции_tr_x]<>'':
	Позиции_tr_x=Позиции_tr_x+1;-- уже был НФА с комбинацией НФА+УЧН на забалансе =>прерываем текущую обработку, формируем новую строчку
	НФА_КОД[Позиции_tr_x]=НФА_КОД[Позиции_tr];
	УЧН_КОД[Позиции_tr_x]=УЧН_КОД[Позиции_tr];
     fi;
     СЧНФА     [Позиции_tr_x]=sacc;
     СЧНФАКРЕ  [Позиции_tr_x]=sacc;
     КОЛНФА    [Позиции_tr_x]=Раб.НФА.Свертка.Koldata[t];
     СУМНФА    [Позиции_tr_x]=Раб.НФА.Свертка.Sumdata[t];
     СЧНФАЗАБ  [Позиции_tr_x]=sacc;
     ДОПАНА01  [Позиции_tr_x]=Раб.НФА.Свертка.sig[int(выделитьслово(4,Раб.НФА.Свертка.salddata[t],'|'))];
     ДОПАНА02  [Позиции_tr_x]=Раб.НФА.Свертка.sig[int(выделитьслово(5,Раб.НФА.Свертка.salddata[t],'|'))];
     if z_any_ref_list>0:ДОПАНА03[Позиции_tr_x]=Раб.НФА.Свертка.sig[int(выделитьслово(6,Раб.НФА.Свертка.salddata[t],'|'))];
	if z_any_ref_list>1:ДОПАНА04[Позиции_tr_x]=Раб.НФА.Свертка.sig[int(выделитьслово(7,Раб.НФА.Свертка.salddata[t],'|'))];
	   if z_any_ref_list>2:ДОПАНА05[Позиции_tr_x]=Раб.НФА.Свертка.sig[int(выделитьслово(8,Раб.НФА.Свертка.salddata[t],'|'))];
	      if z_any_ref_list>3:ДОПАНА06[Позиции_tr_x]=Раб.НФА.Свертка.sig[int(выделитьслово(9,Раб.НФА.Свертка.salddata[t],'|'))];
		 if z_any_ref_list>4:ДОПАНА07[Позиции_tr_x]=Раб.НФА.Свертка.sig[int(выделитьслово(10,Раб.НФА.Свертка.salddata[t],'|'))];
		    if z_any_ref_list>5:ДОПАНА08[Позиции_tr_x]=Раб.НФА.Свертка.sig[int(выделитьслово(11,Раб.НФА.Свертка.salddata[t],'|'))];
		       if z_any_ref_list>6:ДОПАНА09[Позиции_tr_x]=Раб.НФА.Свертка.sig[int(выделитьслово(12,Раб.НФА.Свертка.salddata[t],'|'))];
			  if z_any_ref_list>7:ДОПАНА10[Позиции_tr_x]=Раб.НФА.Свертка.sig[int(выделитьслово(13,Раб.НФА.Свертка.salddata[t],'|'))];fi;
		       fi;
		    fi;
		 fi;
	      fi;
	   fi;
	fi;
     fi;

  fi;
 od;
 if xx>0:
    CloseWorkArea(ro);
 fi;
ДАТАОПЕР=ДАТАОПЕР;
ShowProgress(Позиции_tr,'добавление прихода по бюджету ...');
xx=Позиции_tr;
for t=1..xx do -- добавление прихода по бюджету
  ProgressPos(t);
---------------- Формируем приход по бюджету ---------------------------
     InsertFrame(Позиции_tr,t*2);
     if 1=1:
--     Позиции_tr_x=Позиции_tr_x+1;
--     Позиции_tr=Позиции_tr_x;
	      СУММА1	[t*2]=СУММА1	[t*2-1];
	      СУММА2	[t*2]=СУММА2	[t*2-1];
	      СУММА3	[t*2]=СУММА3	[t*2-1];
	      КОЛ1	[t*2]=КОЛ1	[t*2-1];
	      КОЛ2	[t*2]=КОЛ2	[t*2-1];
	      КОЛ3	[t*2]=КОЛ3	[t*2-1];
	      КМНТ1	[t*2]=КМНТ1	[t*2-1];
	      КМНТ2	[t*2]=КМНТ2	[t*2-1];
	      КМНТ3	[t*2]=КМНТ3	[t*2-1];
	      НФА_КОД	[t*2]=НФА_КОД	[t*2-1];
	      УЧН_КОД	[t*2]=УЧН_КОД	[t*2-1];
	      СЧНФА	[t*2]=СЧНФА	[t*2-1];
	      СЧНФАКРЕ	[t*2]=СЧНФАКРЕ	[t*2-1];
	      КОЛНФА	[t*2]=КОЛНФА	[t*2-1];
	      СУМНФА	[t*2]=СУМНФА	[t*2-1];
	      СЧНФАЗАБ	[t*2]=СЧНФАЗАБ	[t*2-1];
	      ДОПАНА01	[t*2]=ДОПАНА01	[t*2-1];if match(ДОПАНА01[t*2],'ФКР.*'):if ДОПАНА01[t*2]<>ФКР_НОВЫЙ:ДОПАНА01[t*2]=ФКР_НОВЫЙ;fi;fi;
	      ДОПАНА02	[t*2]=ДОПАНА02	[t*2-1];if match(ДОПАНА02[t*2],'ФКР.*'):if ДОПАНА02[t*2]<>ФКР_НОВЫЙ:ДОПАНА02[t*2]=ФКР_НОВЫЙ;fi;fi;
	      ДОПАНА03	[t*2]=ДОПАНА03	[t*2-1];if match(ДОПАНА03[t*2],'ФКР.*'):if ДОПАНА03[t*2]<>ФКР_НОВЫЙ:ДОПАНА03[t*2]=ФКР_НОВЫЙ;fi;fi;
	      ДОПАНА04	[t*2]=ДОПАНА04	[t*2-1];if match(ДОПАНА04[t*2],'ФКР.*'):if ДОПАНА04[t*2]<>ФКР_НОВЫЙ:ДОПАНА04[t*2]=ФКР_НОВЫЙ;fi;fi;
	      ДОПАНА05	[t*2]=ДОПАНА05	[t*2-1];if match(ДОПАНА05[t*2],'ФКР.*'):if ДОПАНА05[t*2]<>ФКР_НОВЫЙ:ДОПАНА05[t*2]=ФКР_НОВЫЙ;fi;fi;
	      ДОПАНА06	[t*2]=ДОПАНА06	[t*2-1];if match(ДОПАНА06[t*2],'ФКР.*'):if ДОПАНА06[t*2]<>ФКР_НОВЫЙ:ДОПАНА06[t*2]=ФКР_НОВЫЙ;fi;fi;
	      ДОПАНА07	[t*2]=ДОПАНА07	[t*2-1];if match(ДОПАНА07[t*2],'ФКР.*'):if ДОПАНА07[t*2]<>ФКР_НОВЫЙ:ДОПАНА07[t*2]=ФКР_НОВЫЙ;fi;fi;
	      ДОПАНА08	[t*2]=ДОПАНА08	[t*2-1];if match(ДОПАНА08[t*2],'ФКР.*'):if ДОПАНА08[t*2]<>ФКР_НОВЫЙ:ДОПАНА08[t*2]=ФКР_НОВЫЙ;fi;fi;
	      ДОПАНА09	[t*2]=ДОПАНА09	[t*2-1];if match(ДОПАНА09[t*2],'ФКР.*'):if ДОПАНА09[t*2]<>ФКР_НОВЫЙ:ДОПАНА09[t*2]=ФКР_НОВЫЙ;fi;fi;
	      ДОПАНА10	[t*2]=ДОПАНА10	[t*2-1];if match(ДОПАНА10[t*2],'ФКР.*'):if ДОПАНА10[t*2]<>ФКР_НОВЫЙ:ДОПАНА10[t*2]=ФКР_НОВЫЙ;fi;fi;
	      СчДеб1	[t*2]=СчКре1	[t*2-1];
	      if match(СчДеб1[t*2],'*.401.20.241'):СчДеб1[t*2]=СЧЕТ_КД_НОВЫЙ;
	       | match(СчДеб1[t*2],'???.????.???????.???.2.???.??.???'):СчДеб1[t*2]=ФКР_ВД_НОВЫЙ+SubStr(СчДеб1[t*2],24,10);
		 if match(СчДеб1[t*2],'???.????.???????.???.?.???.??.4??'):СчДеб1[t*2]=SubStr(СчДеб1[t*2],1,30)+'3'+SubStr(СчДеб1[t*2],32,2);fi;
	      fi;
	      СчДеб2	[t*2]=СчКре2	[t*2-1];
	      if match(СчДеб2[t*2],'*.401.20.241'):СчДеб2[t*2]=СЧЕТ_КД_НОВЫЙ;
	       | match(СчДеб2[t*2],'???.????.???????.???.2.???.??.???'):СчДеб2[t*2]=ФКР_ВД_НОВЫЙ+SubStr(СчДеб2[t*2],24,10);
		 if match(СчДеб2[t*2],'???.????.???????.???.?.???.??.4??'):СчДеб2[t*2]=SubStr(СчДеб2[t*2],1,30)+'3'+SubStr(СчДеб2[t*2],32,2);fi;
	      fi;
	      СчДеб3	[t*2]=СчКре3	[t*2-1];
	      if match(СчДеб3[t*2],'*.401.20.241'):СчДеб3[t*2]=СЧЕТ_КД_НОВЫЙ;
	       | match(СчДеб3[t*2],'???.????.???????.???.2.???.??.???'):СчДеб3[t*2]=ФКР_ВД_НОВЫЙ+SubStr(СчДеб3[t*2],24,10);
		 if match(СчДеб3[t*2],'???.????.???????.???.?.???.??.4??'):СчДеб3[t*2]=SubStr(СчДеб3[t*2],1,30)+'3'+SubStr(СчДеб3[t*2],32,2);fi;
	      fi;

	      СчКре1	[t*2]=СчДеб1	[t*2-1];
	      if match(СчКре1[t*2],'*.401.20.241'):СчКре1[t*2]=СЧЕТ_КД_НОВЫЙ;
	       | match(СчКре1[t*2],'???.????.???????.???.2.???.??.???'):СчКре1[t*2]=ФКР_ВД_НОВЫЙ+SubStr(СчКре1[t*2],24,10);
	      fi;
	      СчКре2	[t*2]=СчДеб2	[t*2-1];
	      if match(СчКре2[t*2],'*.401.20.241'):СчКре2[t*2]=СЧЕТ_КД_НОВЫЙ;
	       | match(СчКре2[t*2],'???.????.???????.???.2.???.??.???'):СчКре2[t*2]=ФКР_ВД_НОВЫЙ+SubStr(СчКре2[t*2],24,10);
	      fi;
	      СчКре3	[t*2]=СчДеб3	[t*2-1];
	      if match(СчКре3[t*2],'*.401.20.241'):СчКре3[t*2]=СЧЕТ_КД_НОВЫЙ;
	       | match(СчКре3[t*2],'???.????.???????.???.2.???.??.???'):СчКре3[t*2]=ФКР_ВД_НОВЫЙ+SubStr(СчКре3[t*2],24,10);
	      fi;
     fi;
------------------------------------------------------------------------

od;

CloseProgress;
end;


Proc copy_iter(from_it:i;to_it:i);
	      СУММА1	[to_it]=СУММА1	  [from_it];
	      СУММА2	[to_it]=СУММА2	  [from_it];
	      СУММА3	[to_it]=СУММА3	  [from_it];
	      КОЛ1	[to_it]=КОЛ1	  [from_it];
	      КОЛ2	[to_it]=КОЛ2	  [from_it];
	      КОЛ3	[to_it]=КОЛ3	  [from_it];
	      КМНТ1	[to_it]=КМНТ1	  [from_it];
	      КМНТ2	[to_it]=КМНТ2	  [from_it];
	      КМНТ3	[to_it]=КМНТ3	  [from_it];
	      ОБЩАН1	[to_it]=ОБЩАН1	  [from_it];
	      ОБЩАН2	[to_it]=ОБЩАН2	  [from_it];
	      ОБЩАН3	[to_it]=ОБЩАН3	  [from_it];
	      НФА_КОД	[to_it]=НФА_КОД   [from_it];
	      УЧН_КОД	[to_it]=УЧН_КОД   [from_it];
	      СЧНФА	[to_it]=СЧНФА	  [from_it];
	      СЧНФАКРЕ	[to_it]=СЧНФАКРЕ  [from_it];
	      КОЛНФА	[to_it]=КОЛНФА	  [from_it];
	      СУМНФА	[to_it]=СУМНФА	  [from_it];
	      СЧНФАЗАБ	[to_it]=СЧНФАЗАБ  [from_it];
	      ДОПАНА01	[to_it]=ДОПАНА01  [from_it];
	      ДОПАНА02	[to_it]=ДОПАНА02  [from_it];
	      ДОПАНА03	[to_it]=ДОПАНА03  [from_it];
	      ДОПАНА04	[to_it]=ДОПАНА04  [from_it];
	      ДОПАНА05	[to_it]=ДОПАНА05  [from_it];
	      ДОПАНА06	[to_it]=ДОПАНА06  [from_it];
	      ДОПАНА07	[to_it]=ДОПАНА07  [from_it];
	      ДОПАНА08	[to_it]=ДОПАНА08  [from_it];
	      ДОПАНА09	[to_it]=ДОПАНА09  [from_it];
	      ДОПАНА10	[to_it]=ДОПАНА10  [from_it];
	      СчДеб1	[to_it]=СчДеб1	  [from_it];
	      СчДеб2	[to_it]=СчДеб2	  [from_it];
	      СчДеб3	[to_it]=СчДеб3	  [from_it];
	      СчКре1	[to_it]=СчКре1	  [from_it];
	      СчКре2	[to_it]=СчКре2	  [from_it];
	      СчКре3	[to_it]=СчКре3	  [from_it];
end;

 Proc SaveDataAs6;
 var t,xx,z,zz,poz,q,z_any_ref_list,Позиции_tr_x,trx,RO,rec,ii,q1,curit:i;
 var ss,ss0,sacc,sacc0:s;
 var ll,ver_tb_net:l;
 var ОС_100,ОС_РАСХ,цена,цена0,nn:n;
 var ФКР_НОВЫЙ,ВД_НОВЫЙ,ФКР_ВД_НОВЫЙ,СЧЕТ_КД_НОВЫЙ:s;
 z_any_ref_list=количествослов(Раб.НФА.Свертка.any_ref_list,'|');
 ФКР_НОВЫЙ=ДОП_ПАРАМ_ЗНАЧЕНИЕ[1];
 ВД_НОВЫЙ='.1.';
 СЧЕТ_КД_НОВЫЙ=ДОП_ПАРАМ_ЗНАЧЕНИЕ[2];
 if not match(ФКР_НОВЫЙ,'ФКР.???.????.???????.???'):
    ФКР_НОВЫЙ=ВыборПризнака('ФКР.???.????.???????.???');
    if not match(ФКР_НОВЫЙ,'ФКР.???.????.???????.???'):exit;fi;
 fi;
 if not match(СЧЕТ_КД_НОВЫЙ,'???.?.??.?????.??.????.1.401.10.180'):
    СЧЕТ_КД_НОВЫЙ=ВыборСчета('???.?.??.?????.??.????.1.401.10.180');
    if not match(СЧЕТ_КД_НОВЫЙ,'???.?.??.?????.??.????.1.401.10.180'):exit;fi;
 fi;
 ФКР_ВД_НОВЫЙ=SubStr(ФКР_НОВЫЙ,5,255)+ВД_НОВЫЙ;
 ОС_100 =Общ_Пер('ОС_100' ,ДАТАОПЕР);
 ОС_РАСХ=Общ_Пер('ОС_РАСХ',ДАТАОПЕР);
 Позиции_tr=1;
 Позиции_tr_x=1;
 xx=lengthofarray(Раб.НФА.Свертка.salddata);
 ShowProgress(xx,'Расчет справки...');
 if xx>0:
--    ver_tb_net=ИмяПользователя(ИмяБазы('РПО_ДНФА'))<>'';
--    if not ver_tb_net:RO=OpenWorkArea("РПО_НФА", "ПРИЗНАК");
--     | true	       :RO=OpenWorkArea("РПО_НФА", "", "1=0");
--    fi;

    ss0=выделитьслова(1,2,Раб.НФА.Свертка.salddata[1],'|');
     НФА_КОД[Позиции_tr_x]=Раб.НФА.Свертка.sig[int(выделитьслово(1,Раб.НФА.Свертка.salddata[1],'|'))];
     УЧН_КОД[Позиции_tr_x]=Раб.НФА.Свертка.sig[int(выделитьслово(2,Раб.НФА.Свертка.salddata[1],'|'))];
    --ss0=Раб.НФА.Свертка.sig[int(выделитьслово(1,Раб.НФА.Свертка.salddata[1],'|'))]+'|'+Раб.НФА.Свертка.sig[int(выделитьслово(2,Раб.НФА.Свертка.salddata[1],'|'))];
 fi;
 for t=1..xx+1 do
  ProgressPos(t);
--  zz=количествослов(salddata[t],'|');
  ss=выделитьслова(1,2,Раб.НФА.Свертка.salddata[t],'|');-- Взяли НФА+УЧН
--  ss=Раб.НФА.Свертка.sig[int(выделитьслово(1,Раб.НФА.Свертка.salddata[t],'|'))]+'|'+Раб.НФА.Свертка.sig[int(выделитьслово(2,Раб.НФА.Свертка.salddata[t],'|'))];
  if ss<>ss0 or t>xx:
     q=0;-- переход на следующее ОС+обработка текущего, т.к. вся информация по нему собрана
     for trx=Позиции_tr..Позиции_tr_x do
       if КОЛНФА[trx]<>0:цена=СУМНФА[trx]/КОЛНФА[trx];
	| true:цена=СУМНФА[trx];
       fi;
       if length(СЧНФА[trx])=33:
	  sacc0=ВыделитьСлово(6,СЧНФА[trx],'.');
	| true:sacc0=СЧНФА[trx];
       fi;
       if соотв(sacc0,'ЗАБ.21.101.?8'):
	  rec=RecordToInteger(ПризнакВзапись(НФА_КОД[trx],false));
	  if rec>0:if КартотекаПризнака(НФА_КОД[trx],false)<>'РПО_НФА':rec=0;fi;
	     if rec>0:
	       rec=SearchInArray(НФА_НЕСПИСЫВАТЬДО1000,rec,true);
	     fi;
	  fi;
	  if rec>0:
	     q=1;
	   | true:q=0;
	  fi;
       fi;
       if q>0  :
	  if q>0:КОЛ1[trx]=КОЛНФА[trx];
	  fi;
	  if УЧН_КОД[trx]='УЧН.НЕТ':УЧН_КОД[trx]='';
	  fi;
	  if q=1: --ОС до 3000
	       СУММА1[trx]=СУМНФА[trx];
	       if СУММА1[trx]<>0:
		  СчДеб1[trx]='ЗАБАЛАНС';
		  СчКре1[trx]=СЧНФАКРЕ[trx];
--		    if ВыделитьСлово(5,СЧНФАКРЕ[trx],'.')='2':СчДеб1[trx]=ВыделитьСлова(1,5,СЧНФАКРЕ[trx],'.')+'.401.20.241';
--		     | true:СчДеб1[trx]=ВыделитьСлова(1,5,СЧНФАКРЕ[trx],'.')+'.304.04.310';
--		    fi;
--		    СчКре1[trx]=СЧНФАКРЕ  [trx];
		  КМНТ1 [trx]='Списание вооружения по ЗАБ.21';
	       fi;

	      ДЭКСПЛ [trx]=Раб.НФА.B01.ВзятьДЭКСПЛ(НФА_КОД[trx],УЧН_КОД[trx]);
	      ДУЧЕТ  [trx]=Раб.НФА.B01.ВзятьДУЧЕТ (НФА_КОД[trx],УЧН_КОД[trx]);
	  fi;

--	 if УЧН_КОД[trx]<>'':НЕТАМОРТ[trx] =int(ОСТАТОК('ЗАБ.НФА.НЕТМЕСАМОРТ{'+НФА_КОД[trx]+'&'+УЧН_КОД[trx]+'}',ДАТАОПЕР+1));fi;
--	 if АМСЧНФА[trx]='':
--	    sacc0=ВыделитьСлова(КоличествоСлов(СЧНФА[trx],'.')-2,2,СЧНФА[trx],'.');--sacc0=ВыделитьСлова(2,2,СЧНФА[trx],'.');
--	    if pos(sacc0,'101.11 101.12 101.13 101.31 101.32 101.33 101.34 101.15 101.35 101.36 101.37 101.18 101.38')>0:АМСЧНФА[trx]=SubStr(СЧНФА[trx],1,23)+'104.'+ВыделитьСлово(2,sacc0,'.')+'.410';
--	     | sacc0='102.30':АМСЧНФА[trx]=SubStr(СЧНФА[trx],1,23)+'104.09.420';
--	    fi;
--	 fi;
--	      if УЧН_КОД[trx]<>'':
--		 АМСУМНФА  [trx]=round(ОСТАТОК(АМСЧНФА[trx]+'{'+НФА_КОД[trx]+'&'+УЧН_КОД[trx]+'}',ДАТАОПЕР+1),2);
--		 СУММА2[trx]=-АМСУМНФА	[trx];
--		 if СУММА2[trx]<>0:
--		    if ВыделитьСлово(5,СЧНФАКРЕ[trx],'.')='2':СчКре2[trx]=ВыделитьСлова(1,5,СЧНФАКРЕ[trx],'.')+'.401.20.241';
--		     | true:СчКре2[trx]=ВыделитьСлова(1,5,СЧНФАКРЕ[trx],'.')+'.304.04.310';
--		    fi;
--		    СчДеб2[trx]=АМСЧНФА   [trx];
--		    КМНТ2 [trx]='101 передача амортизации';
--		 fi;
--	       | true:trace('НЕТ УЧН!='+НФА_КОД[trx]+'/'+СчКре1[trx]);
--	      fi;
--	     | q=3:--материалы
--		 СУММА1[trx]=СУМНФА[trx];
--		 if СУММА1[trx]<>0:
--		    if ВыделитьСлово(5,СЧНФАКРЕ[trx],'.')='2':СчДеб1[trx]=ВыделитьСлова(1,5,СЧНФАКРЕ[trx],'.')+'.401.20.241';
--		     | true:СчДеб1[trx]=ВыделитьСлова(1,5,СЧНФАКРЕ[trx],'.')+'.304.04.340';
--		    fi;
--		    СчКре1[trx]=СЧНФАКРЕ  [trx];
--		    КМНТ1 [trx]='105 передача балансовой стоимости';
--		 fi;
--	     | q=4:--Забаланс
--		 СУММА1[trx]=СУМНФА[trx];
--		 if СУММА1[trx]<>0:
--		    СчДеб1[trx]='ЗАБАЛАНС';
--		    СчКре1[trx]=СЧНФАКРЕ  [trx];
--		    КМНТ1 [trx]='Забаланс, передача по учетной стоимости';
--		 fi;

--	    fi;
	  ii=точность(НФА_КОД[trx]);
	  if  round(СУММА1[trx],2)=0 and round(СУММА2[trx],2)=0 and round(СУММА3[trx],2)=0 and round(КОЛ1[trx],ii)<>0 and round(КОЛ2[trx],ii)<>0 and round(КОЛ3[trx],ii)<>0:
	      DeleteFrame(Позиции_tr,trx);q=0;
	      Позиции_tr_x=Позиции_tr_x-1;
	   | true:
	     if t<=xx:Позиции_tr=Позиции_tr+1;fi;
	  fi;
	| true:--ClearVartr_iter(Позиции_tr);
	      DeleteFrame(Позиции_tr,trx);q=0;
	      Позиции_tr_x=Позиции_tr_x-1;
	      trx=trx-1;
       fi;
     od;
     Позиции_tr_x=Позиции_tr_x+1;
     Позиции_tr=Позиции_tr_x;
     if t<=xx:
	НФА_КОД[Позиции_tr_x]=Раб.НФА.Свертка.sig[int(выделитьслово(1,Раб.НФА.Свертка.salddata[t],'|'))];
	УЧН_КОД[Позиции_tr_x]=Раб.НФА.Свертка.sig[int(выделитьслово(2,Раб.НФА.Свертка.salddata[t],'|'))];
	ss0=ss;
      | true:
	  if  СУММА1[Позиции_tr]=0 and СУММА2[Позиции_tr]=0 and СУММА3[Позиции_tr]=0:
	      DeleteFrame(Позиции_tr,Позиции_tr);q=0;
	  fi;
     fi;
  fi;
  ---------- сохраняем текущую информацию --------------
  sacc=Раб.НФА.Свертка.acc[int(выделитьслово(3,Раб.НФА.Свертка.salddata[t],'|'))];
  if length(sacc)=33: -- баланс
     sacc0=ВыделитьСлово(6,sacc,'.');
--     sacc0=ВыделитьСлова(6,2,sacc,'.')
   | true:sacc0=sacc;
  fi;
  if sacc0='101':
--     if СЧНФА[Позиции_tr_x]<>'' or ДОПАНА01[Позиции_tr_x]<>'' or ДОПАНА01[Позиции_tr_x]<>'' or: Позиции_tr_x=Позиции_tr_x+1;fi;-- явно нелады с количеством на учетном номере или со счетами
     if СЧНФА[Позиции_tr_x]+ДОПАНА01[Позиции_tr_x]+ДОПАНА02[Позиции_tr_x]+ДОПАНА03[Позиции_tr_x]+ДОПАНА04[Позиции_tr_x]+ДОПАНА05[Позиции_tr_x]+ДОПАНА06[Позиции_tr_x]+ДОПАНА07[Позиции_tr_x]+ДОПАНА08[Позиции_tr_x]+ДОПАНА09[Позиции_tr_x]+ДОПАНА10[Позиции_tr_x]<>'':
	Позиции_tr_x=Позиции_tr_x+1;-- уже было ОС с комбинацией НФА+УЧН на балансовом 101 =>явно нелады с количеством на учетном номере или со счетами
	--прерываем текущую обработку, формируем новую строчку
	НФА_КОД[Позиции_tr_x]=НФА_КОД[Позиции_tr];
	УЧН_КОД[Позиции_tr_x]=УЧН_КОД[Позиции_tr];
     fi;
     СЧНФА     [Позиции_tr_x]=SubStr(sacc,1,30)+'310';
     СЧНФАКРЕ  [Позиции_tr_x]=SubStr(sacc,1,30)+'410';
     КОЛНФА    [Позиции_tr_x]=Раб.НФА.Свертка.Koldata[t];
     СУМНФА    [Позиции_tr_x]=Раб.НФА.Свертка.Sumdata[t];
     СЧНФАЗАБ  [Позиции_tr_x]='ЗАБ.21.101.'+ВыделитьСлово(3,НФА_КОД[Позиции_tr_x],'.'); --ВыделитьСлово(7,sacc,'.');
     ДОПАНА01  [Позиции_tr_x]=Раб.НФА.Свертка.sig[int(выделитьслово(4,Раб.НФА.Свертка.salddata[t],'|'))];
     ДОПАНА02  [Позиции_tr_x]=Раб.НФА.Свертка.sig[int(выделитьслово(5,Раб.НФА.Свертка.salddata[t],'|'))];
     if z_any_ref_list>0:ДОПАНА03[Позиции_tr_x]=Раб.НФА.Свертка.sig[int(выделитьслово(6,Раб.НФА.Свертка.salddata[t],'|'))];
	if z_any_ref_list>1:ДОПАНА04[Позиции_tr_x]=Раб.НФА.Свертка.sig[int(выделитьслово(7,Раб.НФА.Свертка.salddata[t],'|'))];
	   if z_any_ref_list>2:ДОПАНА05[Позиции_tr_x]=Раб.НФА.Свертка.sig[int(выделитьслово(8,Раб.НФА.Свертка.salddata[t],'|'))];
	      if z_any_ref_list>3:ДОПАНА06[Позиции_tr_x]=Раб.НФА.Свертка.sig[int(выделитьслово(9,Раб.НФА.Свертка.salddata[t],'|'))];
		 if z_any_ref_list>4:ДОПАНА07[Позиции_tr_x]=Раб.НФА.Свертка.sig[int(выделитьслово(10,Раб.НФА.Свертка.salddata[t],'|'))];
		    if z_any_ref_list>5:ДОПАНА08[Позиции_tr_x]=Раб.НФА.Свертка.sig[int(выделитьслово(11,Раб.НФА.Свертка.salddata[t],'|'))];
		       if z_any_ref_list>6:ДОПАНА09[Позиции_tr_x]=Раб.НФА.Свертка.sig[int(выделитьслово(12,Раб.НФА.Свертка.salddata[t],'|'))];
			  if z_any_ref_list>7:ДОПАНА10[Позиции_tr_x]=Раб.НФА.Свертка.sig[int(выделитьслово(13,Раб.НФА.Свертка.salddata[t],'|'))];fi;
		       fi;
		    fi;
		 fi;
	      fi;
	   fi;
	fi;
     fi;
     ----- выборка аналитики ------
--     МОЛ|М + any_ref_list
     ------------------------------
--   | sacc0='104':
--     АМСЧНФА	 [Позиции_tr_x]=SubStr(sacc,1,30)+'410';
--     --АМСЧНФАДЕБ[Позиции_tr_x]=SubStr(sacc,1,23)+'401.01.271';
--     АМСУМНФА  [Позиции_tr_x]=Раб.НФА.Свертка.Sumdata[t];
--   | sacc0='ЗАБ.НФА.ДЭКСПЛ':
--     ДЭКСПЛ	 [Позиции_tr_x]=1.1.100+int(Раб.НФА.Свертка.Sumdata[t]);
--   | sacc0='ЗАБ.НФА.ДУЧЕТ':
--     ДУЧЕТ	 [Позиции_tr_x]=1.1.100+int(Раб.НФА.Свертка.Sumdata[t]);
--   | sacc0='ЗАБ.НФА.НЕТМЕСАМОРТ':
--     НЕТАМОРТ  [Позиции_tr_x]=int(Раб.НФА.Свертка.Sumdata[t]);
   | sacc0='105':
     if СЧНФА[Позиции_tr_x]+ДОПАНА01[Позиции_tr_x]+ДОПАНА02[Позиции_tr_x]+ДОПАНА03[Позиции_tr_x]+ДОПАНА04[Позиции_tr_x]+ДОПАНА05[Позиции_tr_x]+ДОПАНА06[Позиции_tr_x]+ДОПАНА07[Позиции_tr_x]+ДОПАНА08[Позиции_tr_x]+ДОПАНА09[Позиции_tr_x]+ДОПАНА10[Позиции_tr_x]<>'':
	Позиции_tr_x=Позиции_tr_x+1;-- уже был материал с комбинацией НФА+УЧН на балансовом 105 =>прерываем текущую обработку, формируем новую строчку
	НФА_КОД[Позиции_tr_x]=НФА_КОД[Позиции_tr];
	УЧН_КОД[Позиции_tr_x]=УЧН_КОД[Позиции_tr];
     fi;
     СЧНФА     [Позиции_tr_x]=SubStr(sacc,1,30)+'340';
     СЧНФАКРЕ  [Позиции_tr_x]=SubStr(sacc,1,30)+'440';
     КОЛНФА    [Позиции_tr_x]=Раб.НФА.Свертка.Koldata[t];
     СУМНФА    [Позиции_tr_x]=Раб.НФА.Свертка.Sumdata[t];
     СЧНФАЗАБ  [Позиции_tr_x]='ЗАБ.21.105.'+ВыделитьСлово(3,НФА_КОД[Позиции_tr_x],'.'); --ВыделитьСлово(7,sacc,'.');
     ДОПАНА01  [Позиции_tr_x]=Раб.НФА.Свертка.sig[int(выделитьслово(4,Раб.НФА.Свертка.salddata[t],'|'))];
     ДОПАНА02  [Позиции_tr_x]=Раб.НФА.Свертка.sig[int(выделитьслово(5,Раб.НФА.Свертка.salddata[t],'|'))];
     if z_any_ref_list>0:ДОПАНА03[Позиции_tr_x]=Раб.НФА.Свертка.sig[int(выделитьслово(6,Раб.НФА.Свертка.salddata[t],'|'))];
	if z_any_ref_list>1:ДОПАНА04[Позиции_tr_x]=Раб.НФА.Свертка.sig[int(выделитьслово(7,Раб.НФА.Свертка.salddata[t],'|'))];
	   if z_any_ref_list>2:ДОПАНА05[Позиции_tr_x]=Раб.НФА.Свертка.sig[int(выделитьслово(8,Раб.НФА.Свертка.salddata[t],'|'))];
	      if z_any_ref_list>3:ДОПАНА06[Позиции_tr_x]=Раб.НФА.Свертка.sig[int(выделитьслово(9,Раб.НФА.Свертка.salddata[t],'|'))];
		 if z_any_ref_list>4:ДОПАНА07[Позиции_tr_x]=Раб.НФА.Свертка.sig[int(выделитьслово(10,Раб.НФА.Свертка.salddata[t],'|'))];
		    if z_any_ref_list>5:ДОПАНА08[Позиции_tr_x]=Раб.НФА.Свертка.sig[int(выделитьслово(11,Раб.НФА.Свертка.salddata[t],'|'))];
		       if z_any_ref_list>6:ДОПАНА09[Позиции_tr_x]=Раб.НФА.Свертка.sig[int(выделитьслово(12,Раб.НФА.Свертка.salddata[t],'|'))];
			  if z_any_ref_list>7:ДОПАНА10[Позиции_tr_x]=Раб.НФА.Свертка.sig[int(выделитьслово(13,Раб.НФА.Свертка.salddata[t],'|'))];fi;
		       fi;
		    fi;
		 fi;
	      fi;
	   fi;
	fi;
     fi;
   | соотв(sacc0,'ЗАБ.??.???.??'):
     if СЧНФА[Позиции_tr_x]+ДОПАНА01[Позиции_tr_x]+ДОПАНА02[Позиции_tr_x]+ДОПАНА03[Позиции_tr_x]+ДОПАНА04[Позиции_tr_x]+ДОПАНА05[Позиции_tr_x]+ДОПАНА06[Позиции_tr_x]+ДОПАНА07[Позиции_tr_x]+ДОПАНА08[Позиции_tr_x]+ДОПАНА09[Позиции_tr_x]+ДОПАНА10[Позиции_tr_x]<>'':
	Позиции_tr_x=Позиции_tr_x+1;-- уже был НФА с комбинацией НФА+УЧН на забалансе =>прерываем текущую обработку, формируем новую строчку
	НФА_КОД[Позиции_tr_x]=НФА_КОД[Позиции_tr];
	УЧН_КОД[Позиции_tr_x]=УЧН_КОД[Позиции_tr];
     fi;
     СЧНФА     [Позиции_tr_x]=sacc;
     СЧНФАКРЕ  [Позиции_tr_x]=sacc;
     КОЛНФА    [Позиции_tr_x]=Раб.НФА.Свертка.Koldata[t];
     СУМНФА    [Позиции_tr_x]=Раб.НФА.Свертка.Sumdata[t];
     СЧНФАЗАБ  [Позиции_tr_x]=sacc;
     ДОПАНА01  [Позиции_tr_x]=Раб.НФА.Свертка.sig[int(выделитьслово(4,Раб.НФА.Свертка.salddata[t],'|'))];
     ДОПАНА02  [Позиции_tr_x]=Раб.НФА.Свертка.sig[int(выделитьслово(5,Раб.НФА.Свертка.salddata[t],'|'))];
     if z_any_ref_list>0:ДОПАНА03[Позиции_tr_x]=Раб.НФА.Свертка.sig[int(выделитьслово(6,Раб.НФА.Свертка.salddata[t],'|'))];
	if z_any_ref_list>1:ДОПАНА04[Позиции_tr_x]=Раб.НФА.Свертка.sig[int(выделитьслово(7,Раб.НФА.Свертка.salddata[t],'|'))];
	   if z_any_ref_list>2:ДОПАНА05[Позиции_tr_x]=Раб.НФА.Свертка.sig[int(выделитьслово(8,Раб.НФА.Свертка.salddata[t],'|'))];
	      if z_any_ref_list>3:ДОПАНА06[Позиции_tr_x]=Раб.НФА.Свертка.sig[int(выделитьслово(9,Раб.НФА.Свертка.salddata[t],'|'))];
		 if z_any_ref_list>4:ДОПАНА07[Позиции_tr_x]=Раб.НФА.Свертка.sig[int(выделитьслово(10,Раб.НФА.Свертка.salddata[t],'|'))];
		    if z_any_ref_list>5:ДОПАНА08[Позиции_tr_x]=Раб.НФА.Свертка.sig[int(выделитьслово(11,Раб.НФА.Свертка.salddata[t],'|'))];
		       if z_any_ref_list>6:ДОПАНА09[Позиции_tr_x]=Раб.НФА.Свертка.sig[int(выделитьслово(12,Раб.НФА.Свертка.salddata[t],'|'))];
			  if z_any_ref_list>7:ДОПАНА10[Позиции_tr_x]=Раб.НФА.Свертка.sig[int(выделитьслово(13,Раб.НФА.Свертка.salddata[t],'|'))];fi;
		       fi;
		    fi;
		 fi;
	      fi;
	   fi;
	fi;
     fi;

  fi;
 od;
-- if xx>0:
--    CloseWorkArea(ro);
-- fi;
ДАТАОПЕР=ДАТАОПЕР;

if 1=1:
xx=Позиции_tr;
zz=int(trunc(ИтогКол));
z=1;
curit=0;
ShowProgress(zz,'Разбиение НФА по количеству ...');
for t=1..xx do -- проход по строчкам
  curit=curit+1;
  ProgressPos(z);
---------------- Формируем приход по бюджету ---------------------------
  q1=int(trunc(Кол1[curit]));
  if trunc(Кол1[curit])=Кол1[curit]:-- целое количество НФА - разбиваем по 1 шт
     цена=СУММА1[curit]/Кол1[curit];
     цена0=trunc(цена,2);
     nn=цена0*Кол1[curit];
     if nn=СУММА1[curit]:-- цена ровно до копеек
      | nn>СУММА1[curit]:цена0=цена0-0.01; -- промазали на копейку
     fi;
     nn=цена0*Кол1[curit];
     nn=СУММА1[curit]-nn;-- недостача копеек
     nn=nn*100;-- количество строк с ценой больше на 1 копейку
     цена=цена0+0.01;
     if nn>=1:	СУММА1[curit]=цена;nn=nn-1;
      | true :	СУММА1[curit]=цена0;
     fi;
     Кол1[curit]=1;
     СУММА2[curit]=СУММА1[curit];
     Кол2  [curit]=Кол1  [curit];
     СчКре2[curit]=СЧЕТ_КД_НОВЫЙ;
     СчДеб2[curit]=SubStr(ФКР_НОВЫЙ,5,255)+'.1'+SubStr(НФА_КОД[curit],4,5)+'3'+SubStr(НФА_КОД[curit],10,2)+'310';
     СУММА3[curit]=СУММА1[curit];
     СчКре3[curit]=SubStr(ФКР_НОВЫЙ,5,255)+'.1.104.3'+SubStr(НФА_КОД[curit],10,2)+'410';
     СчДеб3[curit]=СЧЕТ_КД_НОВЫЙ;

     for q=2..q1 do
       InsertFrame(Позиции_tr,curit+1);
       copy_iter(curit,curit+1);
       if nn>=1:  СУММА1[curit+1]=цена;nn=nn-1;
	| true :  СУММА1[curit+1]=цена0;
       fi;
       СУММА2[curit+1]=СУММА1[curit+1];
       Кол2  [curit+1]=Кол1  [curit+1];
       СУММА3[curit+1]=СУММА1[curit+1];
     od;
     curit=curit+q1-1;
  fi;

     if 1=0:
     InsertFrame(Позиции_tr,t*2);
--     Позиции_tr_x=Позиции_tr_x+1;
--     Позиции_tr=Позиции_tr_x;
	      СУММА1	[t*2]=СУММА1	[t*2-1];
	      СУММА2	[t*2]=СУММА2	[t*2-1];
	      СУММА3	[t*2]=СУММА3	[t*2-1];
	      КОЛ1	[t*2]=КОЛ1	[t*2-1];
	      КОЛ2	[t*2]=КОЛ2	[t*2-1];
	      КОЛ3	[t*2]=КОЛ3	[t*2-1];
	      КМНТ1	[t*2]=КМНТ1	[t*2-1];
	      КМНТ2	[t*2]=КМНТ2	[t*2-1];
	      КМНТ3	[t*2]=КМНТ3	[t*2-1];
	      НФА_КОД	[t*2]=НФА_КОД	[t*2-1];
	      УЧН_КОД	[t*2]=УЧН_КОД	[t*2-1];
	      СЧНФА	[t*2]=СЧНФА	[t*2-1];
	      СЧНФАКРЕ	[t*2]=СЧНФАКРЕ	[t*2-1];
	      КОЛНФА	[t*2]=КОЛНФА	[t*2-1];
	      СУМНФА	[t*2]=СУМНФА	[t*2-1];
	      СЧНФАЗАБ	[t*2]=СЧНФАЗАБ	[t*2-1];
	      ДОПАНА01	[t*2]=ДОПАНА01	[t*2-1];if match(ДОПАНА01[t*2],'ФКР.*'):if ДОПАНА01[t*2]<>ФКР_НОВЫЙ:ДОПАНА01[t*2]=ФКР_НОВЫЙ;fi;fi;
	      ДОПАНА02	[t*2]=ДОПАНА02	[t*2-1];if match(ДОПАНА02[t*2],'ФКР.*'):if ДОПАНА02[t*2]<>ФКР_НОВЫЙ:ДОПАНА02[t*2]=ФКР_НОВЫЙ;fi;fi;
	      ДОПАНА03	[t*2]=ДОПАНА03	[t*2-1];if match(ДОПАНА03[t*2],'ФКР.*'):if ДОПАНА03[t*2]<>ФКР_НОВЫЙ:ДОПАНА03[t*2]=ФКР_НОВЫЙ;fi;fi;
	      ДОПАНА04	[t*2]=ДОПАНА04	[t*2-1];if match(ДОПАНА04[t*2],'ФКР.*'):if ДОПАНА04[t*2]<>ФКР_НОВЫЙ:ДОПАНА04[t*2]=ФКР_НОВЫЙ;fi;fi;
	      ДОПАНА05	[t*2]=ДОПАНА05	[t*2-1];if match(ДОПАНА05[t*2],'ФКР.*'):if ДОПАНА05[t*2]<>ФКР_НОВЫЙ:ДОПАНА05[t*2]=ФКР_НОВЫЙ;fi;fi;
	      ДОПАНА06	[t*2]=ДОПАНА06	[t*2-1];if match(ДОПАНА06[t*2],'ФКР.*'):if ДОПАНА06[t*2]<>ФКР_НОВЫЙ:ДОПАНА06[t*2]=ФКР_НОВЫЙ;fi;fi;
	      ДОПАНА07	[t*2]=ДОПАНА07	[t*2-1];if match(ДОПАНА07[t*2],'ФКР.*'):if ДОПАНА07[t*2]<>ФКР_НОВЫЙ:ДОПАНА07[t*2]=ФКР_НОВЫЙ;fi;fi;
	      ДОПАНА08	[t*2]=ДОПАНА08	[t*2-1];if match(ДОПАНА08[t*2],'ФКР.*'):if ДОПАНА08[t*2]<>ФКР_НОВЫЙ:ДОПАНА08[t*2]=ФКР_НОВЫЙ;fi;fi;
	      ДОПАНА09	[t*2]=ДОПАНА09	[t*2-1];if match(ДОПАНА09[t*2],'ФКР.*'):if ДОПАНА09[t*2]<>ФКР_НОВЫЙ:ДОПАНА09[t*2]=ФКР_НОВЫЙ;fi;fi;
	      ДОПАНА10	[t*2]=ДОПАНА10	[t*2-1];if match(ДОПАНА10[t*2],'ФКР.*'):if ДОПАНА10[t*2]<>ФКР_НОВЫЙ:ДОПАНА10[t*2]=ФКР_НОВЫЙ;fi;fi;
	      СчДеб1	[t*2]=СчКре1	[t*2-1];
	      if match(СчДеб1[t*2],'*.401.20.241'):СчДеб1[t*2]=СЧЕТ_КД_НОВЫЙ;
	       | match(СчДеб1[t*2],'???.????.???????.???.2.???.??.???'):СчДеб1[t*2]=ФКР_ВД_НОВЫЙ+SubStr(СчДеб1[t*2],24,10);
		 if match(СчДеб1[t*2],'???.????.???????.???.?.???.??.4??'):СчДеб1[t*2]=SubStr(СчДеб1[t*2],1,30)+'3'+SubStr(СчДеб1[t*2],32,2);fi;
	      fi;
	      СчДеб2	[t*2]=СчКре2	[t*2-1];
	      if match(СчДеб2[t*2],'*.401.20.241'):СчДеб2[t*2]=СЧЕТ_КД_НОВЫЙ;
	       | match(СчДеб2[t*2],'???.????.???????.???.2.???.??.???'):СчДеб2[t*2]=ФКР_ВД_НОВЫЙ+SubStr(СчДеб2[t*2],24,10);
		 if match(СчДеб2[t*2],'???.????.???????.???.?.???.??.4??'):СчДеб2[t*2]=SubStr(СчДеб2[t*2],1,30)+'3'+SubStr(СчДеб2[t*2],32,2);fi;
	      fi;
	      СчДеб3	[t*2]=СчКре3	[t*2-1];
	      if match(СчДеб3[t*2],'*.401.20.241'):СчДеб3[t*2]=СЧЕТ_КД_НОВЫЙ;
	       | match(СчДеб3[t*2],'???.????.???????.???.2.???.??.???'):СчДеб3[t*2]=ФКР_ВД_НОВЫЙ+SubStr(СчДеб3[t*2],24,10);
		 if match(СчДеб3[t*2],'???.????.???????.???.?.???.??.4??'):СчДеб3[t*2]=SubStr(СчДеб3[t*2],1,30)+'3'+SubStr(СчДеб3[t*2],32,2);fi;
	      fi;

	      СчКре1	[t*2]=СчДеб1	[t*2-1];
	      if match(СчКре1[t*2],'*.401.20.241'):СчКре1[t*2]=СЧЕТ_КД_НОВЫЙ;
	       | match(СчКре1[t*2],'???.????.???????.???.2.???.??.???'):СчКре1[t*2]=ФКР_ВД_НОВЫЙ+SubStr(СчКре1[t*2],24,10);
	      fi;
	      СчКре2	[t*2]=СчДеб2	[t*2-1];
	      if match(СчКре2[t*2],'*.401.20.241'):СчКре2[t*2]=СЧЕТ_КД_НОВЫЙ;
	       | match(СчКре2[t*2],'???.????.???????.???.2.???.??.???'):СчКре2[t*2]=ФКР_ВД_НОВЫЙ+SubStr(СчКре2[t*2],24,10);
	      fi;
	      СчКре3	[t*2]=СчДеб3	[t*2-1];
	      if match(СчКре3[t*2],'*.401.20.241'):СчКре3[t*2]=СЧЕТ_КД_НОВЫЙ;
	       | match(СчКре3[t*2],'???.????.???????.???.2.???.??.???'):СчКре3[t*2]=ФКР_ВД_НОВЫЙ+SubStr(СчКре3[t*2],24,10);
	      fi;
     fi;
------------------------------------------------------------------------

od;
fi;



if 1=0:
ShowProgress(Позиции_tr,'добавление прихода по бюджету ...');
xx=Позиции_tr;
for t=1..xx do -- добавление прихода по бюджету
  ProgressPos(t);
---------------- Формируем приход по бюджету ---------------------------
     InsertFrame(Позиции_tr,t*2);
     if 1=1:
--     Позиции_tr_x=Позиции_tr_x+1;
--     Позиции_tr=Позиции_tr_x;
	      СУММА1	[t*2]=СУММА1	[t*2-1];
	      СУММА2	[t*2]=СУММА2	[t*2-1];
	      СУММА3	[t*2]=СУММА3	[t*2-1];
	      КОЛ1	[t*2]=КОЛ1	[t*2-1];
	      КОЛ2	[t*2]=КОЛ2	[t*2-1];
	      КОЛ3	[t*2]=КОЛ3	[t*2-1];
	      КМНТ1	[t*2]=КМНТ1	[t*2-1];
	      КМНТ2	[t*2]=КМНТ2	[t*2-1];
	      КМНТ3	[t*2]=КМНТ3	[t*2-1];
	      НФА_КОД	[t*2]=НФА_КОД	[t*2-1];
	      УЧН_КОД	[t*2]=УЧН_КОД	[t*2-1];
	      СЧНФА	[t*2]=СЧНФА	[t*2-1];
	      СЧНФАКРЕ	[t*2]=СЧНФАКРЕ	[t*2-1];
	      КОЛНФА	[t*2]=КОЛНФА	[t*2-1];
	      СУМНФА	[t*2]=СУМНФА	[t*2-1];
	      СЧНФАЗАБ	[t*2]=СЧНФАЗАБ	[t*2-1];
	      ДОПАНА01	[t*2]=ДОПАНА01	[t*2-1];if match(ДОПАНА01[t*2],'ФКР.*'):if ДОПАНА01[t*2]<>ФКР_НОВЫЙ:ДОПАНА01[t*2]=ФКР_НОВЫЙ;fi;fi;
	      ДОПАНА02	[t*2]=ДОПАНА02	[t*2-1];if match(ДОПАНА02[t*2],'ФКР.*'):if ДОПАНА02[t*2]<>ФКР_НОВЫЙ:ДОПАНА02[t*2]=ФКР_НОВЫЙ;fi;fi;
	      ДОПАНА03	[t*2]=ДОПАНА03	[t*2-1];if match(ДОПАНА03[t*2],'ФКР.*'):if ДОПАНА03[t*2]<>ФКР_НОВЫЙ:ДОПАНА03[t*2]=ФКР_НОВЫЙ;fi;fi;
	      ДОПАНА04	[t*2]=ДОПАНА04	[t*2-1];if match(ДОПАНА04[t*2],'ФКР.*'):if ДОПАНА04[t*2]<>ФКР_НОВЫЙ:ДОПАНА04[t*2]=ФКР_НОВЫЙ;fi;fi;
	      ДОПАНА05	[t*2]=ДОПАНА05	[t*2-1];if match(ДОПАНА05[t*2],'ФКР.*'):if ДОПАНА05[t*2]<>ФКР_НОВЫЙ:ДОПАНА05[t*2]=ФКР_НОВЫЙ;fi;fi;
	      ДОПАНА06	[t*2]=ДОПАНА06	[t*2-1];if match(ДОПАНА06[t*2],'ФКР.*'):if ДОПАНА06[t*2]<>ФКР_НОВЫЙ:ДОПАНА06[t*2]=ФКР_НОВЫЙ;fi;fi;
	      ДОПАНА07	[t*2]=ДОПАНА07	[t*2-1];if match(ДОПАНА07[t*2],'ФКР.*'):if ДОПАНА07[t*2]<>ФКР_НОВЫЙ:ДОПАНА07[t*2]=ФКР_НОВЫЙ;fi;fi;
	      ДОПАНА08	[t*2]=ДОПАНА08	[t*2-1];if match(ДОПАНА08[t*2],'ФКР.*'):if ДОПАНА08[t*2]<>ФКР_НОВЫЙ:ДОПАНА08[t*2]=ФКР_НОВЫЙ;fi;fi;
	      ДОПАНА09	[t*2]=ДОПАНА09	[t*2-1];if match(ДОПАНА09[t*2],'ФКР.*'):if ДОПАНА09[t*2]<>ФКР_НОВЫЙ:ДОПАНА09[t*2]=ФКР_НОВЫЙ;fi;fi;
	      ДОПАНА10	[t*2]=ДОПАНА10	[t*2-1];if match(ДОПАНА10[t*2],'ФКР.*'):if ДОПАНА10[t*2]<>ФКР_НОВЫЙ:ДОПАНА10[t*2]=ФКР_НОВЫЙ;fi;fi;
	      СчДеб1	[t*2]=СчКре1	[t*2-1];
	      if match(СчДеб1[t*2],'*.401.20.241'):СчДеб1[t*2]=СЧЕТ_КД_НОВЫЙ;
	       | match(СчДеб1[t*2],'???.????.???????.???.2.???.??.???'):СчДеб1[t*2]=ФКР_ВД_НОВЫЙ+SubStr(СчДеб1[t*2],24,10);
		 if match(СчДеб1[t*2],'???.????.???????.???.?.???.??.4??'):СчДеб1[t*2]=SubStr(СчДеб1[t*2],1,30)+'3'+SubStr(СчДеб1[t*2],32,2);fi;
	      fi;
	      СчДеб2	[t*2]=СчКре2	[t*2-1];
	      if match(СчДеб2[t*2],'*.401.20.241'):СчДеб2[t*2]=СЧЕТ_КД_НОВЫЙ;
	       | match(СчДеб2[t*2],'???.????.???????.???.2.???.??.???'):СчДеб2[t*2]=ФКР_ВД_НОВЫЙ+SubStr(СчДеб2[t*2],24,10);
		 if match(СчДеб2[t*2],'???.????.???????.???.?.???.??.4??'):СчДеб2[t*2]=SubStr(СчДеб2[t*2],1,30)+'3'+SubStr(СчДеб2[t*2],32,2);fi;
	      fi;
	      СчДеб3	[t*2]=СчКре3	[t*2-1];
	      if match(СчДеб3[t*2],'*.401.20.241'):СчДеб3[t*2]=СЧЕТ_КД_НОВЫЙ;
	       | match(СчДеб3[t*2],'???.????.???????.???.2.???.??.???'):СчДеб3[t*2]=ФКР_ВД_НОВЫЙ+SubStr(СчДеб3[t*2],24,10);
		 if match(СчДеб3[t*2],'???.????.???????.???.?.???.??.4??'):СчДеб3[t*2]=SubStr(СчДеб3[t*2],1,30)+'3'+SubStr(СчДеб3[t*2],32,2);fi;
	      fi;

	      СчКре1	[t*2]=СчДеб1	[t*2-1];
	      if match(СчКре1[t*2],'*.401.20.241'):СчКре1[t*2]=СЧЕТ_КД_НОВЫЙ;
	       | match(СчКре1[t*2],'???.????.???????.???.2.???.??.???'):СчКре1[t*2]=ФКР_ВД_НОВЫЙ+SubStr(СчКре1[t*2],24,10);
	      fi;
	      СчКре2	[t*2]=СчДеб2	[t*2-1];
	      if match(СчКре2[t*2],'*.401.20.241'):СчКре2[t*2]=СЧЕТ_КД_НОВЫЙ;
	       | match(СчКре2[t*2],'???.????.???????.???.2.???.??.???'):СчКре2[t*2]=ФКР_ВД_НОВЫЙ+SubStr(СчКре2[t*2],24,10);
	      fi;
	      СчКре3	[t*2]=СчДеб3	[t*2-1];
	      if match(СчКре3[t*2],'*.401.20.241'):СчКре3[t*2]=СЧЕТ_КД_НОВЫЙ;
	       | match(СчКре3[t*2],'???.????.???????.???.2.???.??.???'):СчКре3[t*2]=ФКР_ВД_НОВЫЙ+SubStr(СчКре3[t*2],24,10);
	      fi;
     fi;
------------------------------------------------------------------------

od;
fi;
ЗаполнитьУЧН;
CloseProgress;
end;

			 
Proc Расчет_OnClick(Стр: Целое; Кол: Целое; Двойной: Логич);
 var time0:i;
 var ss:s;
 if not РАБ.НФА.B01.ПроверкаНаИзменения(проводить):exit;fi;
 time0=time;
 if ДАТАОПЕР=1.1.100:ДАТАОПЕР=сегодня;fi;
 Load_НФА_НЕСПИСЫВАТЬДО1000;Load_НФА_АМОРТ0;
 if Способ_Расчета=0:
    ClearVartr;
    if not Отладка:
      Раб.НФА.Свертка.any_ref_list=Раб.НФА.Свертка.Get_any_ref_list(ДАТАОПЕР+1,'');
      Раб.НФА.Свертка.СправкаОС_25_148(ДАТАОПЕР+1);
    fi;
    SaveDataAs0;
    Раб.НФа.B01.РасчетЗавершен('',time-time0);
  | Способ_Расчета=1:
    ClearVartr;
    if not Отладка:
      Раб.НФА.Свертка.any_ref_list=Раб.НФА.Свертка.Get_any_ref_list(ДАТАОПЕР+1,'');
      Раб.НФА.Свертка.СправкаОС_25_148(ДАТАОПЕР+1);
    fi;
    SaveDataAs1;
    Раб.НФа.B01.РасчетЗавершен('',time-time0);
  | Способ_Расчета=2:
    ClearVartr;
    if not Отладка:
      Раб.НФА.Свертка.any_ref_list=Раб.НФА.Свертка.Get_any_ref_list(ДАТАОПЕР+1,'');
      Раб.НФА.Свертка.СправкаОС_148_104(ДАТАОПЕР+1);
    fi;
    SaveDataAs2;
    Раб.НФа.B01.РасчетЗавершен('',time-time0);
  | Способ_Расчета=3:-- остатки инвентарного иммущества
    ClearVartr;
    if not Отладка:
      Раб.НФА.Свертка.any_ref_list=Раб.НФА.Свертка.Get_any_ref_list(ДАТАОПЕР+1,'ДНФА.РАСХ.НФА.304');
      Раб.НФА.Свертка.СправкаОС_148_ОСТАТКИ(ДАТАОПЕР+1,УслСчет,Раб.НФА.B01.ab('НФА.*','&',Раб.НФА.B01.ab(МХЭ_ОТККОД_ОБЩ,'&',МОЛ_ОТККОД)),УслИсклАналит);
--	Раб.НФА.Свертка.СправкаОС_148_ОСТАТКИ(ДАТАОПЕР+1,УслСчет,Раб.НФА.B01.ab('НФА.101.06.10600213','&',Раб.НФА.B01.ab(МХЭ_ОТККОД_ОБЩ,'&',МОЛ_ОТККОД)),УслИсклАналит);
    fi;
    SaveDataAs3;
    Раб.НФа.B01.РасчетЗавершен('',time-time0);
  | Способ_Расчета=4:-- остатки ОС без УЧН (до 3001 руб)
    ClearVartr;
    if not Отладка:
      Раб.НФА.Свертка.any_ref_list=Раб.НФА.Свертка.Get_any_ref_list(ДАТАОПЕР+1,'');
--	Раб.НФА.Свертка.СправкаОС_148_ОСТАТКИ(ДАТАОПЕР+1,'*.?.101.??.???',Раб.НФА.B01.ab('(НФА.101.04.63_2243*)','&',Раб.НФА.B01.ab(МХЭ_ОТККОД_ОБЩ,'&',МОЛ_ОТККОД)),УслИсклАналит);
--	Раб.НФА.Свертка.СправкаОС_148_ОСТАТКИ(ДАТАОПЕР+1,'*.?.101.??.???',Раб.НФА.B01.ab('(НФА.101.04.63_2243*&~(УЧН.*))','&',Раб.НФА.B01.ab(МХЭ_ОТККОД_ОБЩ,'&',МОЛ_ОТККОД)),УслИсклАналит);

      Раб.НФА.Свертка.СправкаОС_148_ОСТАТКИ(ДАТАОПЕР+1,'*.?.101.??.???',Раб.НФА.B01.ab('(НФА.101.*&(КТ.2!|КТ.2_*|М.Э.*)&~(УЧН.*))','&',Раб.НФА.B01.ab(МХЭ_ОТККОД_ОБЩ,'&',МОЛ_ОТККОД)),УслИсклАналит);

--	Раб.НФА.Свертка.СправкаОС_148_ОСТАТКИ(ДАТАОПЕР+1,'*.?.101.??.???',Раб.НФА.B01.ab('(НФА.101.*&НФА.101.06.ПРОД_2002.МАРМИТ.0.1&(КТ.2!|КТ.2_*|М.Э.*)&~(УЧН.*))','&',Раб.НФА.B01.ab(МХЭ_ОТККОД_ОБЩ,'&',МОЛ_ОТККОД)),УслИсклАналит);
--	Раб.НФА.Свертка.СправкаОС_148_ОСТАТКИ(ДАТАОПЕР+1,'*.?.101.??.???',Раб.НФА.B01.ab('((НФА.101.06.ПРОД.2009.3|НФА.101.06.ПРОД_2002.МАРМИТ.0.1*)&(КТ.2!|КТ.2_*|М.Э.*)&~(УЧН.*))','&',Раб.НФА.B01.ab(МХЭ_ОТККОД_ОБЩ,'&',МОЛ_ОТККОД)),УслИсклАналит);
    fi;
    SaveDataAs4;
    Раб.НФа.B01.РасчетЗавершен('',time-time0);
  | Способ_Расчета=5:-- бюджет=>внебюджет
    ClearVartr;
    if not Отладка:
      Раб.НФА.Свертка.any_ref_list=Раб.НФА.Свертка.Get_any_ref_list(ДАТАОПЕР+1,'ДНФА.ВНПР.2_1_НФА');
      ss='*.2.101.??.???|*.2.105.??.???|*.2.104.??.???|ЗАБ.НФА.НЕТМЕСАМОРТ|ЗАБ.НФА.ДЭКСПЛ|ЗАБ.НФА.ДУЧЕТ'	      ;
--	Раб.НФА.Свертка.СправкаОС_148_ОСТАТКИ(ДАТАОПЕР+1,ss,Раб.НФА.B01.ab('НФА.101.04.ИНСТР.023','&',Раб.НФА.B01.ab(МХЭ_ОТККОД_ОБЩ,'&',МОЛ_ОТККОД)),УслИсклАналит);
--	Раб.НФА.Свертка.СправкаОС_148_ОСТАТКИ(ДАТАОПЕР+1,ss,Раб.НФА.B01.ab('НФА.???.??.*','&',Раб.НФА.B01.ab(МХЭ_ОТККОД_ОБЩ,'&',МОЛ_ОТККОД)),УслИсклАналит);
      Раб.НФА.Свертка.СправкаОС_148_ОСТАТКИ(ДАТАОПЕР+1,ss,Раб.НФА.B01.ab('НФА.*','&',Раб.НФА.B01.ab(МХЭ_ОТККОД_ОБЩ,'&',МОЛ_ОТККОД)),УслИсклАналит);
    fi;
    SaveDataAs5;
    Раб.НФа.B01.РасчетЗавершен('',time-time0);
  | Способ_Расчета=6:-- ЗАБ.21=>101 для вооружения
    ClearVartr;
    if not Отладка:
      Раб.НФА.Свертка.any_ref_list=Раб.НФА.Свертка.Get_any_ref_list(ДАТАОПЕР+1,'');
--	Раб.НФА.Свертка.СправкаОС_148_ОСТАТКИ(ДАТАОПЕР+1,'*.?.101.??.???',Раб.НФА.B01.ab('(НФА.101.04.63_2243*)','&',Раб.НФА.B01.ab(МХЭ_ОТККОД_ОБЩ,'&',МОЛ_ОТККОД)),УслИсклАналит);
--	Раб.НФА.Свертка.СправкаОС_148_ОСТАТКИ(ДАТАОПЕР+1,'*.?.101.??.???',Раб.НФА.B01.ab('(НФА.101.04.63_2243*&~(УЧН.*))','&',Раб.НФА.B01.ab(МХЭ_ОТККОД_ОБЩ,'&',МОЛ_ОТККОД)),УслИсклАналит);

	Раб.НФА.Свертка.СправкаОС_ЗАБ_ОСТАТКИ_УЧН(ДАТАОПЕР+1,'ЗАБ.21.101.?8',Раб.НФА.B01.ab('(НФА.101.08*)','&',Раб.НФА.B01.ab(МХЭ_ОТККОД_ОБЩ,'&',МОЛ_ОТККОД)),УслИсклАналит);
--	Раб.НФА.Свертка.СправкаОС_ЗАБ_ОСТАТКИ_УЧН(ДАТАОПЕР+1,'ЗАБ.21.101.??',Раб.НФА.B01.ab('(НФА.101.??*)','&',Раб.НФА.B01.ab(МХЭ_ОТККОД_ОБЩ,'&',МОЛ_ОТККОД)),УслИсклАналит);

--	Раб.НФА.Свертка.СправкаОС_148_ОСТАТКИ(ДАТАОПЕР+1,'*.?.101.??.???',Раб.НФА.B01.ab('(НФА.101.*&НФА.101.06.ПРОД_2002.МАРМИТ.0.1&(КТ.2!|КТ.2_*|М.Э.*)&~(УЧН.*))','&',Раб.НФА.B01.ab(МХЭ_ОТККОД_ОБЩ,'&',МОЛ_ОТККОД)),УслИсклАналит);
--	Раб.НФА.Свертка.СправкаОС_148_ОСТАТКИ(ДАТАОПЕР+1,'*.?.101.??.???',Раб.НФА.B01.ab('((НФА.101.06.ПРОД.2009.3|НФА.101.06.ПРОД_2002.МАРМИТ.0.1*)&(КТ.2!|КТ.2_*|М.Э.*)&~(УЧН.*))','&',Раб.НФА.B01.ab(МХЭ_ОТККОД_ОБЩ,'&',МОЛ_ОТККОД)),УслИсклАналит);
    fi;
    SaveDataAs6;
    Раб.НФа.B01.РасчетЗавершен('',time-time0);
 fi;										 -- [НФА.101.06.10600213]/Стол компьюторный
end;

Функ ШаблонПриПроверке: Логич;
 var ss:s;
 if НФА_СПРАВКА='':НФА_СПРАВКА=Раб.СТР.ЗаменаПодстроки(substr(getguid,2,36),'-','_');fi;
 if SaveTr_l:^SaveTr_l;
  | true:SaveTr;
 fi;
 if VOC_CALC_ОСТ<>VOC_CALC_ОСТ_:VOC_CALC_ОСТ=VOC_CALC_ОСТ_;fi;
 if МОЛ_ОТКИМЯ<>МОЛ_ОТКИМЯ_:МОЛ_ОТКИМЯ=МОЛ_ОТКИМЯ_;fi;
 if МХЭ_ОТККОД_ОБЩ<>МХЭ_ОТККОД_ОБЩ_:МХЭ_ОТККОД_ОБЩ=МХЭ_ОТККОД_ОБЩ_;fi;
 ss=trim(ОписаниеСпособ_Расчета(Способ_Расчета)+' '+МХЭ_ОТКИМЯ_ОБЩ_+' '+МОЛ_ОТКИМЯ_);
 if КМНТ<>ss:КМНТ=ss;fi;
 if Способ_Расчета=6:
    put_key_value('ДОП_ПАРАМ','6_ФКР',ДОП_ПАРАМ_ЗНАЧЕНИЕ[1]);
    put_key_value('ДОП_ПАРАМ','6_СЧЕТ_401_10_180',ДОП_ПАРАМ_ЗНАЧЕНИЕ[2]);
 fi;
 ^true;
end;


Проц ШаблонПриОтмене;
 ШаблонПриСчитывании;
end;
Proc ВыводИтога (nf:i;inFile:l;tsum:n;tDeb:s; tCre:s; tAna:s; tComment:s);
  var ss:s;
  if tsum=0:exit;fi;
  if tAna<>'':tAna='{'+tAna+'}';fi;
  if tComment<>'':tComment='--'+tComment;fi;
  ss=':'+Format("%17.2F",tsum)+'    '+tDeb+'  '+tCre+' '+tAna+' '+tComment;

  if inFile:TextFileWriteLn(nf,ss);
   | true  :trace(ss);
  fi;
end;
var temp_sum[]:n;
var temp_tr []:s;
var tAna []:s;
Проц Итоги_ПриНажатии(Стр: Целое; Кол: Целое; Двойной: Логич);
var len:i;
var TransTextJur,ss:s;
var tSum1, tSum2:N;
var tDate:Date;
var tVal1,tVal2,tDeb, tCre,tComment, tAnaS:String;
var xx,t,x:i;
var wa,rs,nf:i;
var s1,s2,s3,s4,s5,s6,s7,s8,s9:s;
var n1,n2,n3:n;
--   TransTextJur=PlanVar('CACHE')+'\ИтогиСправки.jur';
--   if existfile(TransTextJur):DeleteFile(TransTextJur);fi;
--   len=TujReport(TransTextJur, ДАТАОПЕР, ДАТАОПЕР+1, '???.????.???????.???.?.???.??.???|ЗАБ.??.???.??', 'НФА_СПРАВКА.'+НФА_СПРАВКА, 'НФА|УЧН|МОЛ|М', '', '');
--   clearvariable(temp_sum);
--   clearvariable(temp_tr);
--   if len>0:
--     ShowProgress(len,'Подсчет итогов...');
--     OpenTextJur(TransTextJur);
--     Try
--	 while not GetTransFromTextJur(tDate, tSum1, tVal1, tSum2, tVal2, tDeb, tCre, tAna, tComment) do
--	   SortArray(tAna);ss='';
--	   progresspos(t);
--	   xx=LengthOfArray(tAna);
--	   tAnaS='';
--	   for x=1 to xx do
--	       tAnaS=tAnaS+' '+tAna[x];
--	   od;
--	   ss=tDeb+' '+tCre+' {'+trim(tAnaS)+'}';
--	   t=SearchInArray(temp_tr,ss,true);
--	   if t<1:
--	      t=InsertInArraySort(temp_tr,ss);
--	      InsertInArray(temp_sum,t,0);
--	   fi;
--	   temp_sum[t]=temp_sum[t]+tSum1;
--	 od;
--     Finally
--	 CloseProgress;
--	 CloseTextJur;
--     end;
--   fi;
--   if existfile(TransTextJur):DeleteFile(TransTextJur);fi;
--   ClearTrace;
--   len=LengthOfArray(temp_tr);
--   if len>0:
--	trace('справка НФА - ИТОГИ, проводок:'+str(len));
--	trace(датувстроку(ДАТАОПЕР));

--	for t=1..len do
--	  trace(':'+Format("%17.2F",temp_sum[t])+'    '+temp_tr[t]);
--	od;
--   fi;

--   openeditor(file_jur);
--   ^TujReport('ИтогиСправки.jur', ДАТАОПЕР, ДАТАОПЕР+1, '', НФА_СПРАВКА, '', '', '', TujRepBalAccount+TujRepNoNullBal+TujRepZabalance+TujRepCombinedAna, False);
   xx=Вопрос('Вариант итогов','Выберите способ вывода итогов','Отмена;Текст;Сообщения',mtConfirmation );
   if xx<2:exit;fi;
   if xx=1:ClearTrace;fi;
   if xx=2:
      TransTextJur=PlanVar('CACHE')+'\ИтогиСправки.jur';
      nf=TextFileCreate(TransTextJur);
   fi;
   try
     len=0;
     wa=openworkarea('РПО_НФА_СПРАВКА_ПРОВОДКИ','СЧДЕБ1;СЧКРЕ1;КМНТ1','РПО_НФА_СПРАВКА='+recordtostring(current));
--     wa=openworkarea('РПО_НФА_СПРАВКА_ПРОВОДКИ','СЧДЕБ1;СЧКРЕ1;КМНТ1;СЧДЕБ2;СЧКРЕ2;КМНТ2;СЧДЕБ3;СЧКРЕ3;КМНТ3','РПО_НФА_СПРАВКА='+recordtostring(current));
	rs=records(wa);
	if rs>0:
	  s1=GetFieldS(wa,1,'СЧДЕБ1');
	  s2=GetFieldS(wa,1,'СЧКРЕ1');
	  s7=GetFieldS(wa,1,'КМНТ1');
	  n1=GetFieldN(wa,1,'СУММА1');
	  if xx=2:TextFileWriteLn(nf,датувстроку(ДАТАОПЕР));
	   | true:trace(датувстроку(ДАТАОПЕР));
	  fi;
	  ShowProgress(rs,'Расчет итогов - '+if(xx=2,'текст...','сообщения..'));
	  for x=2..rs do
	    ProgressPos(x);
	    if
		s1=GetFieldS(wa,x,'СЧДЕБ1') and
		s2=GetFieldS(wa,x,'СЧКРЕ1') and
		s7=GetFieldS(wa,x,'КМНТ1')
	      :
		n1=n1+GetFieldN(wa,x,'СУММА1');
	     | true:

		if n1<>0:ВыводИтога(nf,xx=2,n1,s1,s2,'',s7);len=len+1;fi;
		if n1<>0 :
		   if xx=2:TextFileWriteLn(nf,RepStr('-',50));
		    | true:trace(RepStr('-',50));
		   fi;

		fi;
		s1=GetFieldS(wa,x,'СЧДЕБ1');
		s2=GetFieldS(wa,x,'СЧКРЕ1');
		s7=GetFieldS(wa,x,'КМНТ1');
		n1=GetFieldN(wa,x,'СУММА1');
	    fi;
	  od;
		if n1<>0:ВыводИтога(nf,xx=2,n1,s1,s2,'',s7);len=len+1;fi;
		if n1<>0:
		   if xx=2:TextFileWriteLn(nf,RepStr('-',50));
		    | true:trace(RepStr('-',50));
		   fi;

		fi;
	  CloseProgress;
	fi;
	Упорядочить(wa,'СЧДЕБ2;СЧКРЕ2;КМНТ2');
	if rs>0:
	  s1=GetFieldS(wa,1,'СЧДЕБ2');
	  s2=GetFieldS(wa,1,'СЧКРЕ2');
	  s7=GetFieldS(wa,1,'КМНТ2');
	  n1=GetFieldN(wa,1,'СУММА2');
	  ShowProgress(rs,'Расчет итогов - '+if(xx=2,'текст...','сообщения..'));
	  for x=2..rs do
	    ProgressPos(x);
	    if
		s1=GetFieldS(wa,x,'СЧДЕБ2') and
		s2=GetFieldS(wa,x,'СЧКРЕ2') and
		s7=GetFieldS(wa,x,'КМНТ2')
	      :
		n1=n1+GetFieldN(wa,x,'СУММА2');
	     | true:
		if n1<>0:ВыводИтога(nf,xx=2,n1,s1,s2,'',s7);len=len+1;fi;
		if n1<>0 :
		   if xx=2:TextFileWriteLn(nf,RepStr('-',50));
		    | true:trace(RepStr('-',50));
		   fi;

		fi;
		s1=GetFieldS(wa,x,'СЧДЕБ2');
		s2=GetFieldS(wa,x,'СЧКРЕ2');
		s7=GetFieldS(wa,x,'КМНТ2');
		n1=GetFieldN(wa,x,'СУММА2');
	    fi;
	  od;
		if n1<>0:ВыводИтога(nf,xx=2,n1,s1,s2,'',s7);len=len+1;fi;
		if n1<>0:
		   if xx=2:TextFileWriteLn(nf,RepStr('-',50));
		    | true:trace(RepStr('-',50));
		   fi;

		fi;
	  CloseProgress;
	fi;
	Упорядочить(wa,'СЧДЕБ3;СЧКРЕ3;КМНТ3');
	if rs>0:
	  s1=GetFieldS(wa,1,'СЧДЕБ3');
	  s2=GetFieldS(wa,1,'СЧКРЕ3');
	  s7=GetFieldS(wa,1,'КМНТ3');
	  n1=GetFieldN(wa,1,'СУММА3');
	  ShowProgress(rs,'Расчет итогов - '+if(xx=2,'текст...','сообщения..'));
	  for x=2..rs do
	    ProgressPos(x);
	    if
		s1=GetFieldS(wa,x,'СЧДЕБ3') and
		s2=GetFieldS(wa,x,'СЧКРЕ3') and
		s7=GetFieldS(wa,x,'КМНТ3')
	      :
		n1=n1+GetFieldN(wa,x,'СУММА3');
	     | true:
		if n1<>0:ВыводИтога(nf,xx=2,n1,s1,s2,'',s7);len=len+1;fi;
		if n1<>0 :
		   if xx=2:TextFileWriteLn(nf,RepStr('-',50));
		    | true:trace(RepStr('-',50));
		   fi;

		fi;
		s1=GetFieldS(wa,x,'СЧДЕБ3');
		s2=GetFieldS(wa,x,'СЧКРЕ3');
		s7=GetFieldS(wa,x,'КМНТ3');
		n1=GetFieldN(wa,x,'СУММА3');
	    fi;
	  od;
		if n1<>0:ВыводИтога(nf,xx=2,n1,s1,s2,'',s7);len=len+1;fi;
		if n1<>0:
		   if xx=2:TextFileWriteLn(nf,RepStr('-',50));
		    | true:trace(RepStr('-',50));
		   fi;

		fi;
	  CloseProgress;
	fi;
	if xx=2:TextFileWriteLn(nf,'-- справка НФА - ИТОГИ, проводок:'+str(len));
	 | true:trace('-- справка НФА - ИТОГИ, проводок:'+str(len));
	fi;
     CloseWorkArea(wa);
   Finally
     if xx=2:TextFileClose(nf);fi;
   end;
   if xx=2:OpenEditor(TransTextJur);fi;

end;

Проц ШаблонПриОткрытии(Создать: Логич);
  БланкКОД=РАБ.НФА.B01.БланкИмя;
  SQLver=SQLЗапросыРазрешены;

end;
ПечатьОстатки	   :l=[false];
ПечатьКОРСЧЕТА	   :l=[false];
ПечатьДОПАНАЛИТИКА :l=[false];
ПечатьДАТЫ	   :l=[false];
ВидДляПечати	   :l=[false];

Проц SetPrintDopCOL;
    Позиции_tr_section.Column( 9,ColVisible,ПечатьОстатки or not ВидДляПечати);
    Позиции_tr_section.Column(10,ColVisible,ПечатьОстатки or not ВидДляПечати);
    Позиции_tr_section.Column(11,ColVisible,ПечатьОстатки or not ВидДляПечати);
    Позиции_tr_section.Column(12,ColVisible,ПечатьОстатки or not ВидДляПечати);
    Позиции_tr_section.Column(13,ColVisible,ПечатьОстатки or not ВидДляПечати);
    Позиции_tr_section.Column(14,ColVisible,ПечатьОстатки or not ВидДляПечати);
    Секц_шапка.Column( 9,ColVisible,ПечатьОстатки or not ВидДляПечати);
    Секц_шапка.Column(10,ColVisible,ПечатьОстатки or not ВидДляПечати);
    Секц_шапка.Column(11,ColVisible,ПечатьОстатки or not ВидДляПечати);
    Секц_шапка.Column(12,ColVisible,ПечатьОстатки or not ВидДляПечати);
    Секц_шапка.Column(13,ColVisible,ПечатьОстатки or not ВидДляПечати);
    Секц_шапка.Column(14,ColVisible,ПечатьОстатки or not ВидДляПечати);

    Позиции_tr_section.Column(15,ColVisible,ПечатьКОРСЧЕТА or not ВидДляПечати);
    Позиции_tr_section.Column(16,ColVisible,ПечатьКОРСЧЕТА or not ВидДляПечати);
    Секц_шапка.Column(15,ColVisible,ПечатьКОРСЧЕТА or not ВидДляПечати);
    Секц_шапка.Column(16,ColVisible,ПечатьКОРСЧЕТА or not ВидДляПечати);

    Позиции_tr_section.Column(17,ColVisible,ПечатьДОПАНАЛИТИКА or not ВидДляПечати);
    Секц_шапка.Column(17,ColVisible,ПечатьДОПАНАЛИТИКА or not ВидДляПечати);
    Позиции_tr_section.Column(18,ColVisible,ПечатьДОПАНАЛИТИКА or not ВидДляПечати);
    Секц_шапка.Column(18,ColVisible,ПечатьДОПАНАЛИТИКА or not ВидДляПечати);

    Позиции_tr_section.Column(19,ColVisible,ПечатьДАТЫ or not ВидДляПечати);
    Позиции_tr_section.Column(20,ColVisible,ПечатьДАТЫ or not ВидДляПечати);
    Секц_шапка.Column(19,ColVisible,ПечатьДАТЫ or not ВидДляПечати);
    Секц_шапка.Column(20,ColVisible,ПечатьДАТЫ or not ВидДляПечати);

end;

Проц ФлПечатьОстатки_ПриИзменении(Отправитель: Строка);
 SetPrintDopCOL;
end;

Проц ФлПечатьДОПАНАЛИТИКА_ПриИзменении(Отправитель: Строка);
 SetPrintDopCOL;
end;


Проц ФлПечатьДАТЫ_ПриИзменении(Отправитель: Строка);
 SetPrintDopCOL;
end;


Проц ФлПечатьКОРСЧЕТА_ПриИзменении(Отправитель: Строка);
 SetPrintDopCOL;
end;

Функ список_ПриВходе(Поле: Строка; i: Целое): Логич;
 var tempS,tempS1,tempS2,ss0,sss:s;
 var wa,y,t,j:i;
     tempS =РАБ.НФА.B01.ПолеПоПризнакуС(ДОК[i].ВидДОК,'КАРТИМЯ');
     tempS1=РАБ.НФА.B01.ПолеПоПризнакуС(ДОК[i].ВидДОК,'КАРТУСЛ');
     if длина(tempS1)>0:tempS2='('+tempS1+') and ';fi;
     wa=OpenWorkArea(tempS,'',tempS2+'RECCRD='+str(ЗаписьКчислу(Текущая)));
     y=Записей(wa);
     if y=0:t=0;
      | y=1:t=1;
      | y>1:t=ВзятьНомерЗаписи(wa,ЧислоВЗапись(ДОК[i].UKEYCRD));
	    if t=0:t=1;fi;
     fi;
--     t=ВзятьНомерЗаписи(wa,ЧислоВЗапись(ДОК[i].UKEYCRD));
     if t=0:
       BeginChanging(wa);
	t=ВставитьЗапись(wa);
 --	  t=ЗаписатьПолеС(wa,t,'ДНФАID','ДНФАID.'+str16(ЗаписьКчислу(Текущая)));
	t=ЗаписатьПолеЦ(wa,t,'RECCRD',ЗаписьКчислу(Текущая));
	t=ЗаписатьПолеС(wa,t,'CRD',SelfCRD);
	t=ЗаписатьПолеС(wa,t,'BLNCRD','НФА.ЖУР.РПО_НФА_СПРАВКА');

	if КоличествоСлов(tempS1,'=')>1:-- если фильтр вида поле="значение", то прописываем это значение по полю :)
	     ss0=ВыделитьСлово(2,tempS1,'=');
	     sss=ВыделитьСлово(1,ss0,'"');
	     if длина(sss)=0:sss=ВыделитьСлово(1,ss0,"'");fi;
	     t=ЗаписатьПолеС(wa,t,ВыделитьСлово(1,tempS1,'='),sss);
	fi;
	ДОК[i].UKEYCRD=ЗаписьКЧислу(ВзятьКлючЗаписи(wa,t));
       EndChanging(wa);
      | true:
	j=ЗаписьКЧислу(ВзятьКлючЗаписи(wa,t));
	if ДОК[i].UKEYCRD<>j:ДОК[i].UKEYCRD=j;fi;--проверка и восстановление ссылки на документ
     fi;
     CloseWorkArea(wa);
     if pos('НФА.ДОКУМЕНТЫ.АКТЫ.',up(ДОК[i].ВидДОК))=8:ЗаписатьПеременнуюС(SubStr(ДОК[i].ВидДОК,8,250)+'.NewRECbln',SubStr(ДОК[i].ВидДОК,8,250));fi;

     if y>1:
	sss=tempS2+'RECCRD='+str(ЗаписьКчислу(Текущая));
	tempS2=РАБ.НФА.B01.ПолеПоПризнакуС(ДОК[i].ВидДОК,'КАРТБРО');
	tempS2=РАБ.НФА.B01.ВзятьBROизКартотеки(tempS2);
	if tempS2<>'':ОткрытьКартотеку(tempS2,'--'+sss);
	 | true:ОткрытьКартотеку(tempS,'--'+sss);
	fi;
      | true:OpenBlank(SubStr(ДОК[i].ВидДОК,8,250),false,ЧислоВЗапись(ДОК[i].UKEYCRD));
     fi;

  Возврат false ;
end;
2Func РасчетОстатков0(СПР:s;УслОстатков:s):s;-- вычисляет остатки по нескольким справочникам сразу
 var j,jj,k,t,z,j1,j2,sj1,sj2:i;
 var ncol,nsum:n;
 var a,ss,услсч,услсчостнфа,услпризн,Путь,Имяотчета:s;
 var r:report;
 var услсчl:l;
 var auto,rep:l;

 ClearVariable(ForSelect);
 ClearVariable(ForSelectN);
 ClearVariable(ForSelectN1);
   auto=автообработка;
   rep =ОбработкаРеп ;
   РАБ.НФА.B01.set_all_auto(auto,rep,false);
   РАБ.НФА.B01.Reset_all_auto(auto,rep,false);

     Путь     =PlanVar("НФА")+"\Отчеты\НФАОТЧ.lst";
     Имяотчета="Отчет (бланки, не менять!!!)";
       r=RepOpen(Путь+"|"+ИмяОтчета,услсч,СПР+'.*&'+УслОстатков, ДАТАОПЕР, ДАТАОПЕР+1,'',СПР);

	RepReset(r);
	while RepNext(r) do
	  ss= trim(RepIdent(r));
	      nsum=RepSalDof(r,отчСверн,"РУБ");
	      ncol=RepSalDof(r,отчСверн,"КОЛ");
	      if nsum<>0 or ncol<>0:
		 addinarray(ForSelect,true,false,ss);
--		   jj=ПоискВмассиве(ForSelect,ss,true);
--		   if jj<1:jj=ВставитьВмассивСорт(ForSelect,ss);
--			   ВставитьВмассив(ForSelectN,jj,ncol);
--			   ВставитьВмассив(ForSelectN1,jj,nsum);
--			   j=j+1;
--		    | true:ForSelectN[jj] =ForSelectN[jj] +ncol;
--			   ForSelectN1[jj]=ForSelectN1[jj]+nsum;
--		   fi;
	      fi;
	od;
       r=RepClose(r);
   j=ДлинаМассива(ForSelect);
   for k=1..j do
     ForSelect[k]=ForSelect[k]+' '+Name_A(ForSelect[k]);
   od;
   if j=0:Message('Отсутствуют остатки для параметра'+chr(13)+СПР,mtWarning);^'';
    | j=1:
     ^ВыделитьСлово(1,ForSelect[1],' ');
    | j>1: t=Альтернатива(Name_A(СПР+'.'),ForSelect,-1,0,12);
	   if t>0:^ВыделитьСлово(1,ForSelect[t],' ');
	   fi;
	   Message('Отказ от выбора для параметра'+chr(13)+СПР,mtWarning);^'';
   fi;
^'';
2end0;

Функ кн_ПриВходе(Поле: Строка; Итер: Целое): Логич;
 var УслОстатков:s;
 var УслМОЛ,УслМ,ss:s;
  УслМ	=МХЭ_ОТККОД_ОБЩ;
  УслМОЛ=МОЛ_ОТККОД;
 if Поле='кнМОЛ':
     УслМОЛ='МОЛ.*';
     УслОстатков=Раб.НФА.B01.ab(УслМ,'&',УслМОЛ);
     ss=2РасчетОстатков0('МОЛ',УслОстатков);
  | Поле='кнМ':
     УслМ='М.*';
     УслОстатков=Раб.НФА.B01.ab(УслМ,'&',УслМОЛ);
     ss=2РасчетОстатков0('М',УслОстатков);
 fi;
 if Поле='кнМОЛ':МОЛ_ОТККОД=ss;
  | Поле='кнМ'	:МХЭ_ОТККОД_ОБЩ=ss;
 fi;
 ^false  ;
end;

Функ Справка_расшифровка_ПриВходе(Поле: Строка; iter: Целое): Логич;
var ss:s;
  if Поле='НФА_КОД_':if Name_A(НФА_КОД[iter])<>' ':РАБ.НФА.B01.ОткрытьБланкПоПризнаку(НФА_КОД[iter],true);fi;
   | Поле='УЧН_КОД_':
     if trim(УЧН_КОД[iter])<>'' and trim(НФА_КОД[iter])<>'':
	ss='ИНВВЕД.'+НФА_КОД[iter]+'.'+УЧН_КОД[iter];
	if Name_A(ss)<>' ':РАБ.НФА.B01.ОткрытьБланкПоПризнаку(ss,true);fi;
     fi;
   | Поле='СУМНФА_':
     if trim(УЧН_КОД[iter])<>'':Отчет('"'+PlanVar('НФА')+'\Отчеты\НФАОТЧ.lst"."ОШИБКИ_НФА"',01.01.76,сегодня,'*.?.101.??.???|*.?.102.??.???|*.?.104.??.???',НФА_КОД[iter]+'&'+УЧН_КОД[iter]);
      | true:Отчет('"'+PlanVar('НФА')+'\Отчеты\НФАОТЧ.lst"."ОШИБКИ_НФА"',01.01.76,сегодня,'*.?.101.??.???|*.?.102.??.???|*.?.104.??.???',НФА_КОД[iter]);
     fi;
--  if s='НФА':Отчет('"'+PlanVar('НФА')+'\Отчеты\НФАОТЧ.lst"."ОШИБКИ_НФА"',01.01.76,сегодня,'*.?.101.??.???|*.?.102.??.???|*.?.104.??.???',НФА);
2end0;
   ^false ;
end;


Функ Способ_Расчета_ПриВходе(Поле: Строка; Итер: Целое): Логич;
var j:i;
 ClearVariable(buf);
 for j=1..7 do
   buf[j]=ОписаниеСпособ_Расчета(j-1);
 od;
 j=alternate('Выбор способа расчета справки',buf,-1,Способ_Расчета+1,10);
 if j>0 and j<>Способ_Расчета+1:
    Способ_Расчета=j-1;
    Показать_ДОП_ПАРАМ_для_вывода(Способ_Расчета);
 fi;
  ^false  ;
end;




Проц Способ_Расчета_ПриВыходе(Поле: Строка; Итер: Целое);
  Показать_ДОП_ПАРАМ_для_вывода(Способ_Расчета);
end;


Функ СчДеб_OnEnter(Поле: Строка; j: Целое): Логич;
 if Поле='СчДеб2':СчДеб2[j]=ВыборСчета('*.1.101.38.310');
  | Поле='СчДеб3':СчДеб3[j]=ВыборСчета('*.1.401.10.180');
  | Поле='СчДеб1':
 fi;
  ^false  ;
end;


Функ СчКре_onEnter(Поле: Строка; j: Целое): Логич;
 if Поле='СчКре2':СчКре2[j]=ВыборСчета('*.1.401.10.180');
  | Поле='СчКре3':СчКре3[j]=ВыборСчета('*.1.104.38.410');
  | Поле='СчКре1':
 fi;

  ^false  ;
end;


Функ ОбщАн_onEnter(Поле: Строка; j: Целое): Логич;
var ss:s;
ss=ВыборПризнака('УЧН.*');
if ss='':^false  ; fi;
if поле='ОБЩАН1':ОБЩАН1[j]=ss;
 | поле='ОБЩАН2':ОБЩАН2[j]=ss;
 | поле='ОБЩАН3':ОБЩАН3[j]=ss;
fi;
  ^false  ;
end;


Конец
