БланкСШаблоном "Пересчет переоценки";
var BTNNAME_MENU:s='Пересчет переоценки';
var БылРасчитанСписокОКОФ:l;
var БылОбновленСписокОКОФ:l;
var СписокОКОФ[]:s;
var СписокАмГр[]:i;
var СписокГрПр[]:s;-- список групп для переоценки
var ДатаПоследнегоИзменения_РПО_НФА:d;-- для пересчета СписокОКОФ
var ВремяМодификацииСек_РПО_НФА:i;

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');   --
   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,'АМОРТ_ГР'));
             СписокГрПр[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(СписокГрПр);
   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;

BlnName:s;
--BlnName:s='НФА.ЖУР.ОПЕРАЦИИДНФА';
var ForSelect []:s;
var sss[]:s;

файл:s;
var ss1:s;
var ss2:s;
var ss3:s;
var ss4:s;
var ss5:s;
var ss6:s;
var ss7:s;
var ss8:s;
var ss9:s;
var ii1:i;
var nn1:n;
var nn2:n;
var nn3:n;

--КАТАЛОГИ STD_RPO=Std_Rpo25Н_2006
--КАТАЛОГИ Бух=.
--КАТАЛОГИ Общие=$STD_RPO\Общие
--КАТАЛОГИ LocalData=$WRK\RPO\2006_УНФА_25Н
--КАТАЛОГИ LocБух=$WRK\МО25Н_2006




Проц ПриОткрытии(Создать: Логич);
  var ss:s;
  ss='';
end;
--Проц Кнопка2_ПриНажатии(Отправитель: Строка);
--  var Файл:s;
--  var ll:l;
--  var ss:s;
--  var ii,j,p,wa,НЗ:i;
--     ClearVariable(sss);
--     ClearVariable(okof1);
--     ClearVariable(okof2);
--     ClearVariable(okof3);
--     ClearVariable(okof4);
--     ClearVariable(okofname);
--     ClearVariable(kch);
--     ClearVariable(amgr);
--     ClearVariable(prgr);
--     ClearVariable(ForSelect);
--     ClearVariable(ForSelect1);
--     Файл='okof.txt';

--     if ЕстьФайл(Файл):
--       ll=РАБ.НФА.B03._Загрузить_СтрМассив_ИзФайла.('НФА.СЕРВИС.НАСТРОЙКИ.sss','НФА.СЕРВИС.НАСТРОЙКИ.ForSelect',1,Файл);
--       if not ll:message('ошибка загрузки!');fi;
--       j=ДлинаМассива(sss);
--       wa=openworkarea('РПО_ОКОФ','');
--       beginchanging(wa,false);
--       for ii=1..j do
--        okof1[1]=trim(ВыделитьСлово(1,sss[ii],'#'));
--        okof2[1]=trim(ВыделитьСлово(2,sss[ii],'#'));
--        okof3[1]=trim(ВыделитьСлово(3,sss[ii],'#'));
--        okof4[1]=trim(ВыделитьСлово(4,sss[ii],'#'));
--        okofname[1]=trim(ВыделитьСлово(5,sss[ii],'#'));
--        kch[1]=int(trim(ВыделитьСлово(6,sss[ii],'#')));
--        ss=trim(ВыделитьСлово(7,sss[ii],'#'));
--        if ss='ВосьмаяГруппа'  :amgr[1]=8;
--         | ss='ВтораяГруппа'   :amgr[1]=2;
--         | ss='ДевятаяГруппа'  :amgr[1]=9;
--         | ss='ДесятаяГруппа'  :amgr[1]=10;
--         | ss='ПерваяГруппа'   :amgr[1]=1;
--         | ss='ПятаяГруппа'    :amgr[1]=5;
--         | ss='СедьмаяГруппа'  :amgr[1]=7;
--         | ss='ТретьяГруппа'   :amgr[1]=3;
--         | ss='ЧетвертаяГруппа':amgr[1]=4;
--         | ss='ШестаяГруппа'   :amgr[1]=6;
--         | true                :amgr[1]=0;
--        fi;
--        prgr    [1]=trim(ВыделитьСлово(8,sss[ii],'#'));
--        if okof4[1]<>'':ss1=okof4[1];
--         | okof3[1]<>'':ss1=okof3[1];
--         | okof2[1]<>'':ss1=okof2[1];
--         | okof1[1]<>'':ss1=okof1[1];
--        fi;
--        if ss1<>'':ss5=SubStr(ss1,1,2);ss6=SubStr(ss1,4,7);ss1=ss5+'.'+ss6;fi;
--        ss2=okofname[1];
--        ss3='';
--        if amgr[1]<10:ss4='0'+str(amgr[1]);
--         | true      :ss4='10';
--        fi;
--        ss7='';
--        ss8=str(kch[1]);
--        ss9=prgr[1];
--        НЗ=ВставитьЗапись(wa);
--        НЗ=ЗаписатьВПоляПеременные(wa,НЗ,'','ss1=КОД_ОКОФ|ss2=ИМЯ_ОКОФ1|ss3=ИМЯ_ОКОФ2|ss4=АМОРТ_ГР|ss5=ФТР_РАЗД|ss6=ФТР_КОДА|ss7=ИМЯ_РАЗД|ss8=КЧ|ss9=ГР_ПЕРЕОЦЕНКИ');
----        trace(okof4[ii]+'/'+prgr[ii]+'/'+okofname[ii]);
--       od;
--       endchanging(wa);
--       CloseWorkArea(wa);
--     fi;
--     Message('ok');

--end;
  Func Загрузить_СтрМассив_ИзФайла:l;
    var нф,i:i;
    var ss1,ss2:s;
    var ll:l;
 --   var нач1:i;
    var ГРНФАs,ПРИЗНАКs,ИМЯs,НОРМАМОРТs,ОКОФs,КЛГРУППs,СРОКАМs:s;

     ClearVariable(sss);
     ClearVariable(ForSelect);
    ll=false;--нач1=1;
    if не ЕстьФайл(Файл):^false;fi;
     ОкноВыполненияПоказать(1,'Обработка файла с данными...');
     Попытка
      нф =ТекстФайлОткрытьНаЧтение(Файл);
      Пока не ТекстФайлКонецФайла(нф) do
        ss1=trim(ТекстФайлПрочитатьСтроку(нф));
        if Длина(ss1)>0:
           if Соотв(ss1,'ГРНФА=*'    ):ГРНФАs    =trim(Удалить(ss1,1,pos('=',ss1)));
            | Соотв(ss1,'ПРИЗНАК=*'  ):ПРИЗНАКs  =trim(Удалить(ss1,1,pos('=',ss1)));
            | Соотв(ss1,'ИМЯ=*'      ):ИМЯs      =trim(Удалить(ss1,1,pos('=',ss1)));
            | Соотв(ss1,'НОРМАМОРТ=*'):НОРМАМОРТs=trim(Удалить(ss1,1,pos('=',ss1)));
            | Соотв(ss1,'ОКОФ=*'     ):ОКОФs     =trim(Удалить(ss1,1,pos('=',ss1)));
            | Соотв(ss1,'КЛГРУПП=*'  ):КЛГРУППs  =trim(Удалить(ss1,1,pos('=',ss1)));
            | Соотв(ss1,'СРОКАМ=*'   ):СРОКАМs   =trim(Удалить(ss1,1,pos('=',ss1)));
            | ss1=')':-- собрали запись, сохраняем
              if Соотв(ГРНФАs,'101.*') or Соотв(ГРНФАs,'102.*'):
                if Name_A('НФА.'+ГРНФАs+'.'+ПРИЗНАКs)<>' ':-- НФА существует, т.е. синхронизируем данные
                   if КЛГРУППs='': КЛГРУППs='0';fi;
                   if СРОКАМs='': СРОКАМs='0';fi;
                   if НОРМАМОРТs='': НОРМАМОРТs='0';fi;
                   if ОКОФs='': ОКОФs='0';fi;
                   ДобавитьВмассив(sss,true,false,ГРНФАs+'#'+ПРИЗНАКs+'#'+КЛГРУППs+'#'+СРОКАМs+'#'+НОРМАМОРТs+'#'+ОКОФs);
                 | true:-- НФА не найден - скидываем в массив пропущенных
                   ДобавитьВмассив(ForSelect,true,false,ГРНФАs+'#'+ПРИЗНАКs+'#'+КЛГРУППs+'#'+СРОКАМs+'#'+НОРМАМОРТs+'#'+ОКОФs);
                fi;

              fi;
              ГРНФАs    ='';
              ПРИЗНАКs  ='';
              ИМЯs      ='';
              НОРМАМОРТs='';
              ОКОФs     ='';
              КЛГРУППs  ='';
              СРОКАМs   ='';
           fi;
        fi;
--ГРНФА=101.04
--ПРИЗНАК=111
--ИМЯ=111
--НОРМАМОРТ=1
--ОКОФ=14.2813030
--КЛГРУПП=10
--СРОКАМ=100

      od;
      ll=true;
     Окончание
      ТекстФайлЗакрыть(нф);
      ОкноВыполненияЗакрыть;
     Конец;
    ^ll;
  end;


Проц восстановитьсрокиамортизации_ПриНажатии(Стр: Целое; Кол: Целое; Двойной: Логич);
  var ll:l;
  var ss:s;
  var nn:n;
  var ii,ii0,j,p,wa,НЗ,нп:i;

     if ЕстьФайл(Файл):
       ll=_Загрузить_СтрМассив_ИзФайла.;
       if not ll:message('ошибка загрузки!');fi;
       j=ДлинаМассива(sss);
       ОкноВыполненияПоказать(j,'Сопоставление списка НФА с новыми данными...');
       wa=openworkarea('РПО_НФА','ГРНФА;ПРИЗНАК','СООТВ(ГРНФА,"101.*") or СООТВ(ГРНФА,"102.*")');
       нп=1;
       for ii=1..j do
         ОкноВыполненияПоложение(ii);
         p=поиск(wa,нп,ВыделитьСлово(1,sss[ii],'#'),ВыделитьСлово(2,sss[ii],'#'));
         if p>0:нп=p;
          | true:p=0;
         fi;
         sss[ii]=sss[ii]+'#'+str(p);
       od;
       ОкноВыполненияПоказать(j,'Дополнение списка НФА новыми данными...');
       beginchanging(wa,false);
       for ii=1..j do
         ОкноВыполненияПоложение(ii);
         нп=int(ВыделитьСлово(7,sss[ii],'#'));
         if нп>0:
           ss='';
           nn=getfieldn(wa,нп,'НОРМАМОРТ02');nn1=trunc(ВыделитьСлово(5,sss[ii],'#'),6);
           if trunc(nn,6)<>nn1:ss='nn1=НОРМАМОРТ02';fi;
           ii0=getfieldi(wa,нп,'КЛГРУПП02');ii1=int(ВыделитьСлово(3,sss[ii],'#'));
           if ii0<>ii1:ss=РАБ.НФА.B01.ab(ss,'|','ii1=КЛГРУПП02');fi;
           nn=getfieldn(wa,нп,'СРОКАМ02');nn2=trunc(ВыделитьСлово(4,sss[ii],'#'),6);
           if trunc(nn,6)<>nn2:ss=РАБ.НФА.B01.ab(ss,'|','nn2=СРОКАМ02');fi;
           if trim(ss)<>'':НЗ=ЗаписатьВПоляПеременные(wa,нп,'',ss);fi;
         fi;
       od;
       endchanging(wa);
       CloseWorkArea(wa);
     fi;
      ОкноВыполненияЗакрыть;

      Message('ok');
end;
func расчетпереоценки(wanfa:i;wa:i;i:i;прошлыйпериод:l;ТЕКУЩИЙРЕГИОН_К0:n;ТЕКУЩИЙРЕГИОН_К1:n;ТЕКУЩИЙРЕГИОН_К2:n;ТЕКУЩИЙРЕГИОН_К3:n;ТЕКУЩИЙРЕГИОН_К4:n):l;
var rec:record;
var war,rs,j,p,НЗ:i;
var Дучет,Дэкспл,dd0:d;
var k1s,k2s,ss,s,СЧНФА,НФА,СЧЕТАМОРТ:s;
var СумНФА,КолНФА,ЦЕНАНФАОС,k1,k2,СУМАМ00:n;
 dd0=1.1.1800;
 war=OpenArray(wa,i,'ПОЗИЦИИОС','');
 rs=records(war);
 for j=1..rs do
   if не прошлыйпериод:--обнуляем переоценку
       НЗ=PutFieldS(war,j,'КОЭФПЕРЕОЦЕНОК','');
       НЗ=PutFields(war,j,'СУМПЕРЕОЦЕНОКНФА','');
       НЗ=PutFieldS(war,j,'ДОПАНПЕР','');
       НЗ=PutFieldS(war,j,'ДЕБПЕРЕОЦЕНОК','');
       НЗ=PutFieldS(war,j,'КРЕПЕРЕОЦЕНОК','');
       НЗ=PutFieldn(war,j,'СУМПЕРЕОЦЕНОКНФАИТОГ',0);
       НЗ=PutFieldS(war,j,'СУМПЕРЕОЦЕНОКАМОРТ','');
       НЗ=PutFieldS(war,j,'КРЕПЕРЕОЦЕНОКАМОРТ','');
       НЗ=PutFieldS(war,j,'ДЕБПЕРЕОЦЕНОКАМОРТ','');
    | true:
       НЗ=PutFieldn(war,j,'СУМАМ01',0);
       НЗ=PutFieldn(war,j,'СУМАМ02',0);
       НЗ=PutFieldn(war,j,'СУМАМ03',0);
       НЗ=PutFieldn(war,j,'СУМАМ04',0);
       НЗ=PutFieldn(war,j,'СУМАМ05',0);
       НЗ=PutFieldn(war,j,'СУМАМ06',0);
       НЗ=PutFieldn(war,j,'СУМАМ07',0);
       НЗ=PutFieldn(war,j,'СУМАМ08',0);
       НЗ=PutFieldn(war,j,'СУМАМ09',0);
       НЗ=PutFieldn(war,j,'СУМАМ10',0);
       НЗ=PutFieldn(war,j,'СУМАМ11',0);
       НЗ=PutFieldn(war,j,'СУМАМ12',0);
     k1=0;k2=0;k1s='';k2s='';
     Дучет=getfieldd(war,j,'ДУЧЕТ');
     Дэкспл=getfieldd(war,j,'ДЭКСПЛ');
     СЧНФА=getfields(war,j,'СЧНФА');
     НФА  =getfields(war,j,'НФА');
     СумНФА   =getfieldn(war,j,'СумНФА');
     КолНФА   =getfieldn(war,j,'КолНФА');
     СУМАМ00  =getfieldn(war,j,'СУМАМ00');
     СЧЕТАМОРТ=getfields(war,j,'СЧЕТАМОРТ');
     ЦЕНАНФАОС=СумНФА/КолНФА;

     if Дучет<01.01.2007 и Дучет>dd0 и не соотв(СЧНФА,'ЗАБ*'):-- расчет только для балансовых НФА с Дучет<01.01.2007
 rec=SignToRecord(НФА,false);
 if rec<>nil:
    p=ВзятьНомерЗаписи(wanfa,rec);
    if p>0:ss=GetFieldS(wanfa,p,'ОКОФ');
     | true:ss='';
    fi;
  | true:ss='';
 fi;
       p=ВзятьНомерПоОКОФ(ss);
       if Соотв(НФА,'НФА.101.01.*') or Соотв(НФА,'НФА.101.02.*') or Соотв(НФА,'НФА.101.03.*'):
         s='ЗДАНИЯ';
         if Дучет<01.01.2003:k1=ТекущийРегион_К0;
          | Дучет<01.01.2004:k1=ТекущийРегион_К1;
          | Дучет<01.01.2005:k1=ТекущийРегион_К2;
          | Дучет<01.01.2006:k1=ТекущийРегион_К3;
          | Дучет<01.01.2007:k1=ТекущийРегион_К4;
         fi;
        | true:s=ВзятьГРПРПоОКОФ(ss);
           if Длина(s)>1:k1=Общ_пер(s,Дучет);
            | true: k1=-1;НЗ=PutFieldS(war,j,'КОЭФПЕРЕОЦЕНОК','Ошибка!');
           fi;
       fi;
       if k1>=0:
  ----------- блок расчета понижающих коэфициентов k2 -----------------  и соотв(М,'М.Х.*')
         if (Дэкспл<dd0 or Дэкспл>31.12.2006): --разбор НФА не переданых в эксплуатацию до 01.01.2007
          -- if ЦЕНАНФАОС[j]>5000 и ЦЕНАНФАОС[j]<=10000:k2=Общ_пер('ОБОРУДОВАНИЕ_К_УСТАНОВКЕ',ПозицииОС[j].Дучет);
           if ЦЕНАНФАОС>5000 и ЦЕНАНФАОС<=10000:k2=0;--оборудование к установке должно числиться только на 106 счете
            | ЦЕНАНФАОС>1000 и ЦЕНАНФАОС<=5000 :k2=Общ_пер('НФА_ДО_5000',Дучет);
            | ЦЕНАНФАОС<=1000             :k2=Общ_пер('НФА_ДО_1000',Дучет);
           fi;
          | true:
             if s='БИБЛИОТЕКА'            :k2=Общ_пер('НФА_ДО_1000',Дучет);
              | ЦЕНАНФАОС<=1000:-- ОС до 1000 руб в эксплуатации=нонсенс, переоценка отменяется
                --k2=Общ_пер('НФА_ДО_1000',Дучет);
                k1=0;k2=0;
             fi;
         fi;
  ------------------------------------------------------------------
         if k1<>0:k1s=str(k1,2);fi;
         if k2<>0:k2s=str(k2,2);fi;
         НЗ=PutFieldS(war,j,'КОЭФПЕРЕОЦЕНОК',Раб.НФА.B01.ab(k1s,chr(13),k2s));
         if k2<>0:k1=k1*k2;fi;-- расчет итогового коэфициента
         if k1<>0:
            НЗ=PutFields(war,j,'СУМПЕРЕОЦЕНОКНФА',str(СумНФА*k1-СумНФА,2));
            s=SubStr(СЧНФА,1,23);
            if k1>1:
               НЗ=PutFieldS(war,j,'ДОПАНПЕР','НФА_УВПЕР');
               НЗ=PutFieldS(war,j,'ДЕБПЕРЕОЦЕНОК',СЧНФА);
               НЗ=PutFieldS(war,j,'КРЕПЕРЕОЦЕНОК',s+'401.30.000');
               НЗ=PutFieldn(war,j,'СУМПЕРЕОЦЕНОКНФАИТОГ',СумНФА*k1-СумНФА);
             | true:
               НЗ=PutFieldS(war,j,'ДОПАНПЕР','НФА_УМПЕР');
               НЗ=PutFieldS(war,j,'КРЕПЕРЕОЦЕНОК',СЧНФА);
               НЗ=PutFieldS(war,j,'ДЕБПЕРЕОЦЕНОК',s+'401.30.000');
               НЗ=PutFieldn(war,j,'СУМПЕРЕОЦЕНОКНФАИТОГ',-1*(СумНФА*k1-СумНФА));
            fi;
            НЗ=PutFieldS(war,j,'СУМПЕРЕОЦЕНОКАМОРТ',str(СУМАМ00*k1-СУМАМ00));
            if k1>1:
               НЗ=PutFieldS(war,j,'КРЕПЕРЕОЦЕНОКАМОРТ',СЧЕТАМОРТ);
               НЗ=PutFieldS(war,j,'ДЕБПЕРЕОЦЕНОКАМОРТ',s+'401.30.000');
               НЗ=PutFieldn(war,j,'СУМПЕРЕОЦЕНОКАМОРТИТОГ',СУМАМ00*k1-СУМАМ00);
             | true:
               НЗ=PutFieldS(war,j,'ДЕБПЕРЕОЦЕНОКАМОРТ',СЧЕТАМОРТ);
               НЗ=PutFieldS(war,j,'КРЕПЕРЕОЦЕНОКАМОРТ',s+'401.30.000');
               НЗ=PutFieldn(war,j,'СУМПЕРЕОЦЕНОКАМОРТИТОГ',-1*(СУМАМ00*k1-СУМАМ00));
            fi;
          | true:
               НЗ=PutFieldS(war,j,'КОЭФПЕРЕОЦЕНОК','');
               НЗ=PutFields(war,j,'СУМПЕРЕОЦЕНОКНФА','');
               НЗ=PutFieldS(war,j,'ДОПАНПЕР','');
               НЗ=PutFieldS(war,j,'ДЕБПЕРЕОЦЕНОК','');
               НЗ=PutFieldS(war,j,'КРЕПЕРЕОЦЕНОК','');
               НЗ=PutFieldn(war,j,'СУМПЕРЕОЦЕНОКНФАИТОГ',0);
               НЗ=PutFieldS(war,j,'СУМПЕРЕОЦЕНОКАМОРТ','');
               НЗ=PutFieldS(war,j,'КРЕПЕРЕОЦЕНОКАМОРТ','');
               НЗ=PutFieldS(war,j,'ДЕБПЕРЕОЦЕНОКАМОРТ','');
         fi;
       fi;
      | true:
       НЗ=PutFieldS(war,j,'КОЭФПЕРЕОЦЕНОК','');
       НЗ=PutFields(war,j,'СУМПЕРЕОЦЕНОКНФА','');
       НЗ=PutFieldS(war,j,'ДОПАНПЕР','');
       НЗ=PutFieldS(war,j,'ДЕБПЕРЕОЦЕНОК','');
       НЗ=PutFieldS(war,j,'КРЕПЕРЕОЦЕНОК','');
       НЗ=PutFieldn(war,j,'СУМПЕРЕОЦЕНОКНФАИТОГ',0);
       НЗ=PutFieldS(war,j,'СУМПЕРЕОЦЕНОКАМОРТ','');
       НЗ=PutFieldS(war,j,'КРЕПЕРЕОЦЕНОКАМОРТ','');
       НЗ=PutFieldS(war,j,'ДЕБПЕРЕОЦЕНОКАМОРТ','');
     fi;
   fi;
 od;
 CloseWorkArea(war);
^true;
end;

Проц Перерасчетпереоценки_ПриНажатии(Стр: Целое; Кол: Целое; Двойной: Логич);
  var датопер,НовыйОтчетныйПериодНачало:d;
  var ll:l;
  var ss:s;
  var nn:n;
  var ii,ii0,j,p,wa,wanfa,rs,НЗ,нп:i;
       wanfa=openworkarea('РПО_НФА','','СООТВ(ГРНФА,"101.*")');
       wa=openworkarea('РПО_ОСТ_НФА','');
       rs=records(wa);
       нп=1;
       ОкноВыполненияПоказать(rs,'Перерасчет переоценки...');
       beginchanging(wa,false);
       try
       for ii=1..rs do
         ОкноВыполненияПоложение(ii);
         датопер=GetFieldD(wa,ii,'ДАТОПЕР');
         НовыйОтчетныйПериодНачало=GetFieldD(wa,ii,'НовыйОтчетныйПериодНачало');
         ll=(год(датопер)+1=год(НовыйОтчетныйПериодНачало));
         ll=расчетпереоценки(wanfa,wa,ii,ll,GetFieldn(wa,ii,'ТЕКУЩИЙРЕГИОН_К0'),GetFieldn(wa,ii,'ТЕКУЩИЙРЕГИОН_К1'),GetFieldn(wa,ii,'ТЕКУЩИЙРЕГИОН_К2'),GetFieldn(wa,ii,'ТЕКУЩИЙРЕГИОН_К3'),GetFieldn(wa,ii,'ТЕКУЩИЙРЕГИОН_К4'));
       od;
       endchanging(wa);
       CloseWorkArea(wa);
       CloseWorkArea(wanfa);
      ОкноВыполненияЗакрыть;
      Message('ok');
       except
         Cancelchanging(wa);
         CloseWorkArea(wa);
         CloseWorkArea(wanfa);
        ОкноВыполненияЗакрыть;
        Message('error');
       end;

--   | s='ЗаголовокКоэфпереоценок':
--       ClearTrace(true);
--       j=Вопрос('Подтверждение автозаполнения...','Заполнить автоматически коэфициенты переоценки?','Отмена;Авторасчет',mtConfirmation);
--       if j=2:
--         for j=1..ПозицииОС do k1=0;k2=0;k1s='';k2s='';

--           if ПозицииОС[j].Дучет<01.01.2007 и ПозицииОС[j].Дучет>dd0 и не соотв(ПозицииОС[j].СЧНФА,'ЗАБ*'):-- расчет только для НФА с Дучет<01.01.2007
--             ss=Раб.НФА.B01.ПолеПоПризнакуС(ПозицииОС[j].НФА,'ОКОФ');
--             p=ВзятьНомерПоОКОФ(ss);
--             if Соотв(ПозицииОС[j].НФА,'НФА.101.01.*') or Соотв(ПозицииОС[j].НФА,'НФА.101.02.*') or Соотв(ПозицииОС[j].НФА,'НФА.101.03.*'):
--        s='ЗДАНИЯ';
--        if ПозицииОС[j].Дучет<01.01.2003:k1=ТекущийРегион_К0;
--         | ПозицииОС[j].Дучет<01.01.2004:k1=ТекущийРегион_К1;
--         | ПозицииОС[j].Дучет<01.01.2005:k1=ТекущийРегион_К2;
--         | ПозицииОС[j].Дучет<01.01.2006:k1=ТекущийРегион_К3;
--         | ПозицииОС[j].Дучет<01.01.2007:k1=ТекущийРегион_К4;
--        fi;
--              | true:s=ВзятьГРПРПоОКОФ(ss);
--             if Длина(s)>1:k1=Общ_пер(s,ПозицииОС[j].Дучет);
--              | true: Trace('Ошибка! не найдена группа переоценки для '+ss+' '+ПозицииОС[j].НФА);k1=-1;ПозицииОС[j].КОЭФПЕРЕОЦЕНОК='Ошибка!';
--             fi;
--             fi;
--             if k1>=0:
------------- блок расчета понижающих коэфициентов k2 -----------------  и соотв(М,'М.Х.*')
--                if (ПозицииОС[j].Дэкспл<dd0 or ПозицииОС[j].Дэкспл>31.12.2006): --разбор НФА не переданых в эксплуатацию до 01.01.2007
--                 -- if ЦЕНАНФАОС[j]>5000 и ЦЕНАНФАОС[j]<=10000:k2=Общ_пер('ОБОРУДОВАНИЕ_К_УСТАНОВКЕ',ПозицииОС[j].Дучет);
--                  if ЦЕНАНФАОС[j]>5000 и ЦЕНАНФАОС[j]<=10000:k2=0;--оборудование к установке должно числиться только на 106 счете
--                   | ЦЕНАНФАОС[j]>1000 и ЦЕНАНФАОС[j]<=5000 :k2=Общ_пер('НФА_ДО_5000',ПозицииОС[j].Дучет);
--                   | ЦЕНАНФАОС[j]<=1000             :k2=Общ_пер('НФА_ДО_1000',ПозицииОС[j].Дучет);
--                  fi;
--                 | true:
--                    if s='БИБЛИОТЕКА'    :k2=Общ_пер('НФА_ДО_1000',ПозицииОС[j].Дучет);
--                     | ЦЕНАНФАОС[j]<=1000:k2=Общ_пер('НФА_ДО_1000',ПозицииОС[j].Дучет);
--                    fi;
--                fi;
--------------------------------------------------------------------
--               if k1<>0:k1s=str(k1,2);fi;
--               if k2<>0:k2s=str(k2,2);fi;
--               ПозицииОС[j].КОЭФПЕРЕОЦЕНОК=Раб.НФА.B01.ab(k1s,chr(13),k2s);
--               if k2<>0:k1=k1*k2;fi;-- расчет итогового коэфициента
--               ПозицииОС[j].СУМПЕРЕОЦЕНОКНФАИТОГ  =ПозицииОС[j].СумНФА*k1-ПозицииОС[j].СумНФА;
--               ПозицииОС[j].СУМПЕРЕОЦЕНОКНФА  =str(ПозицииОС[j].СУМПЕРЕОЦЕНОКНФАИТОГ,2);
--               s=SubStr(ПозицииОС[j].СЧНФА,1,23);
--               if ПозицииОС[j].СУМПЕРЕОЦЕНОКНФАИТОГ>0:ПозицииОС[j].ДОПАНПЕР='НФА_УВПЕР';
--          ПозицииОС[j].ДЕБПЕРЕОЦЕНОК=ПозицииОС[j].СЧНФА;
--          ПозицииОС[j].КРЕПЕРЕОЦЕНОК=s+'401.03.000';
--        | true:ПозицииОС[j].ДОПАНПЕР='НФА_УМПЕР';
--          ПозицииОС[j].КРЕПЕРЕОЦЕНОК=ПозицииОС[j].СЧНФА;
--          ПозицииОС[j].ДЕБПЕРЕОЦЕНОК=s+'401.03.000';
--          ПозицииОС[j].СУМПЕРЕОЦЕНОКНФАИТОГ=-ПозицииОС[j].СУМПЕРЕОЦЕНОКНФАИТОГ;
--               fi;
--               if ОстаткиТекущегоПериода и год(ДатОпер)=2007:СумАмНа01_01_2007=ПозицииОС[j].СУМАМ00;
--        | ОстаткиТекущегоПериода и год(ДатОпер)=2006 и мес(ДатОпер)=12:СумАмНа01_01_2007=СУМАМ99[j];
--        | не ОстаткиТекущегоПериода и год(ДатОпер)=2006:СумАмНа01_01_2007=ПозицииОС[j].СУМАМ00;
--               fi;
--               ПозицииОС[j].СУМПЕРЕОЦЕНОКАМОРТИТОГ=СумАмНа01_01_2007*k1-СумАмНа01_01_2007;
--               ПозицииОС[j].СУМПЕРЕОЦЕНОКАМОРТ=Str(ПозицииОС[j].СУМПЕРЕОЦЕНОКАМОРТИТОГ,2);
--               if ПозицииОС[j].СУМПЕРЕОЦЕНОКАМОРТИТОГ>0:ПозицииОС[j].ДОПАНПЕР='НФА_УВПЕР';
--          ПозицииОС[j].КРЕПЕРЕОЦЕНОКАМОРТ=ПозицииОС[j].СЧЕТАМОРТ;
--          ПозицииОС[j].ДЕБПЕРЕОЦЕНОКАМОРТ=s+'401.03.000';
--        | true:ПозицииОС[j].ДОПАНПЕР='НФА_УМПЕР';
--          ПозицииОС[j].ДЕБПЕРЕОЦЕНОКАМОРТ=ПозицииОС[j].СЧЕТАМОРТ;
--          ПозицииОС[j].КРЕПЕРЕОЦЕНОКАМОРТ=s+'401.03.000';
--          ПозицииОС[j].СУМПЕРЕОЦЕНОКАМОРТИТОГ=-ПозицииОС[j].СУМПЕРЕОЦЕНОКАМОРТИТОГ;
--               fi;
--             fi;
--            | true:
--             ПозицииОС[j].КОЭФПЕРЕОЦЕНОК='';ПозицииОС[j].СУМПЕРЕОЦЕНОКНФАИТОГ=0;ПозицииОС[j].СУМПЕРЕОЦЕНОКАМОРТИТОГ=0;
--             ПозицииОС[j].СУМПЕРЕОЦЕНОКАМОРТ='';ПозицииОС[j].СУМПЕРЕОЦЕНОКНФА='';
--           fi;
--         od;
--       fi;

end;


Функ файл_ПриВходе(Поле: Строка; Итер: Целое): Логич;
 var ss:s;
     ss='РПО_НФА.CRD';
     if ВыборФайла(ss, "Открыть файл...", "РПО_НФА.CRD(*.CRD)|РПО_НФА.CRD") = cmOk:Файл=ss;fi;
  ^false  ;
end;


Proc Button1_OnClick(Sender: String);
var ii:i;
var ll:l;
  ll=ЗакрытьРедактор('ВременныйФайл.jur',false);
--  ii=РАБ.НФА.СВЕРТКА.ПроводкиВтекст('ВременныйФайл.jur',1.1.100,1.1.2009,'*','','Table_OPER{4{2|РПО_НАЧ_АМОРТ_TR#ВЕДОМОСТЬ={6}#',true,true,true);-- количество проводок);
  openeditor('ВременныйФайл.jur');
--   if ЕстьКартотека('TABLE_OPER'):message('ЕстьКартотекаTABLE_OPER');
--   | true:message('noКартотекаTABLE_OPER');
--   fi;
end;


Конец
