
БланкСШаблоном "КОНВЕРТЕРЫ [УНФА]";
BlnName:s; -- расчитывается при открытии бланка (шаблонпослеоткрытия)
BTNNAME_MENU:s='КОНВЕРТЕРЫ [УНФА]';
var БРО_НФА:s;
var БРО_НФА_лок:s;


var ForSelect []:s;
var ForSelect1[]:s;
var ForSelect2[]:s;
var ForSelect3[]:s;
var ForSelect4[]:s;
var NNN[]:i=$;
ФКР2009[]:s;
ФКР2010[]:s;
кнФКР2009:s='';
кнФКР2010:s='';
КОСГУ2009[]:s;
КОСГУ2010[]:s;
кнКОСГУ2009:s='';
кнКОСГУ2010:s='';
ВЕДОМСТВО[]:s;

ФКР2011до[]:s;
ФКР2011[]:s;
кнФКР2011до:s='';
кнФКР2011:s='';
КОСГУ2011до[]:s;
КОСГУ2011[]:s;
кнКОСГУ2011до:s='';
кнКОСГУ2011:s='';
ВЕДОМСТВО2011[]:s;

Признаки2011до  []:s;
Признаки2011до_ []:s=Name_A(Признаки2011до[$]);
Признаки2011    []:s;
Признаки2011_   []:s=Name_A(Признаки2011  [$]);
УслНФА_ЗаменаПризн[]:s;

ПозицииЗаменаСчетов:i=[1];
УслНФА_ЗаменаСч []:s;
Счетадо         []:s;
Счетадо_        []:s=Name_S(Счетадо   [$]);
Счетапосле      []:s;
Счетапосле_     []:s=Name_S(Счетапосле[$]);

var addacc[]:s;
var addforacc[]:s;
var notconvacc[]:s;
Флаг_КртОст     :l; ФлОст_        :s=' остатки';
Флаг_КртДвиж    :l; ФлДвиж_       :s=' движение НФА';
Флаг_КртАморт   :l; ФлАморт_      :s=' амортизация';
Флаг_КртИнв     :l; ФлИнвКарт_    :s=' Инвентарные карточки';
Флаг_КртМОЛМОЛ  :l; ФлМОЛМОЛ_     :s=' Передача с МОЛ на МОЛ';
Флаг_КртСПРАВКА :l; ФлСПРАВКА_    :s=' Справка НФА';
Флаг_ЗАБ21      :l; ФлЗАБ21_      :s=' Заб 21';
Флаг_ДНФА       :l; ФлДНФА_       :s=' Виды движения НФА';
ФлКонвСчета11   :l; ФлКонвСчета11_:s=' Конвертировать счета';
ФлКонвФКР11     :l; ФлКонвФКР11_  :s=' Конвертировать ФКР';
ФлКонвДопАн     :l; ФлКонвДопАн_  :s=' Замена аналитики по списку';
ФлКонвДопСч     :l; ФлКонвДопСч_  :s=' Замена счетов по списку';

--Флаг_КртСменаМОЛ:l;ФлСменаМОЛ_:s=' Внутреннее перемещение МОЛ';
СекцЗаменаФКР:section;
УпрЗаменаФКР :l;
ПозицииЗаменаФКР:i=[1];
--СекцСчета104_2009:section;
УпрСчета104_2009:l;
УпрЗаменаСч162н :l;
СекцЗаменаФКР2011:section;
СекцЗаменаПризнаков2011:section;
СекцНастройкаНИ:section;
СекцЗаменаСчетов:section;
ПозицииЗаменаФКР2011:i=[1];
инструкция2011:l;
var УпрЗаменаСч162н_173н:l=УпрЗаменаСч162н и инструкция2011;
ГРНФА_ни   []:i;
ПРИЗНАК_НИ []:s;    
ИМЯ_НИ     []:s;
ФЛ_НИ      []:l;
var СПИСОК_НИ  :s='список =>';
var СПИСОК0_НИ :s='Просмотр списка';
ПозицииНастройкаНИ:i=[1];
var inicrdfield[]:s;
var inicrdfield_[]:i;
var fileТабл_Конв_Сч:s='Табл_Конв_Сч(Конв_ФКР_Счетов';
var fieldskosgu[]:s;
var fieldshistory[]:s;
var sortacckosgu[]:s;--2007
var sortacckosgu1[]:s;--2008
var sortacc[]:s;--
var sortacc1[]:s;--
var sortacc2[]:s;--
var sortacc3[]:s;--
var sortan[]:s;--
var sortan1[]:s;--
var sortan2[]:s;--
var sortan3[]:s;--
var ПозицииЗаменаСчетов2011:i=[1];
var ПозицииЗаменаАналитики2011:i=[1];
var ПозицииЗаменаПризнаков2011:i=[1];
var not_dv_im_nfa[]:s; -- СписокНИ
var Позицииnot_dv_im_nfa:i=[1];
var addaccnil[]:s;    --нет настроек на счета
var subtab:s;
var fields[]:s;
var fields0[]:s;
var fields_[]:i;
var fields0_[]:i;
var fieldscur:s;
var lastfkr:s;
var endkosgu:s;
var kolrepl:i;
var СписокНИ[]:s;

func GetFilterНИ(iter:i):s;
 var f,ss:s;
 if iter>0:
    if ГРНФА_ни[iter]=0:f='ГРНФА="101.01"';
     | ГРНФА_ни[iter]=1:f='ГРНФА="101.02"';
     | ГРНФА_ни[iter]=2:f='ГРНФА="101.03"';
     | ГРНФА_ни[iter]=3:f='ГРНФА="101.05"';
     | ГРНФА_ни[iter]=4:f='(ГРНФА="101.09" or ГРНФА="101.08")';
    fi;
    if trim(ПРИЗНАК_НИ[iter])<>'':
       ss=' and match(ПРИЗНАК,"'+trim(ПРИЗНАК_НИ[iter])+'")';
       if length(f)+length(ss)<256:
          f=f+ss;
        | true:^'';
       fi;
    fi;
    if trim(ИМЯ_НИ[iter])<>'':
       ss=' and match(ИМЯ,"'+trim(ИМЯ_НИ[iter])+'")';
       if length(f)+length(ss)<256:
          f=f+ss;
        | true:^'';
       fi;
    fi;
    if ФЛ_НИ[iter]:
       ss=' and НЕСПИСЫВАТЬДО1000';
       if length(f)+length(ss)<256:
          f=f+ss;
        | true:^'';
       fi;
    fi;
    ^f;
 fi;
 ^'';

end;
proc ЗагрузитьСписокНИ(f:s);    -- GetFilterНИ
  var wa,rs,t:i;
  var ss,s0:s;
  wa=OpenWorkArea('РПО_НФА','',f);
  try
     rs=records(wa);
     for t=1..rs do
       ss='НФА.'+up(trim(GetFieldS(wa,t,'ГРНФА')))+'.';
       s0=up(trim(GetFieldS(wa,t,'ПРИЗНАК')));
       if s0<>'':
          ss=ss+s0;
          if Name_A(ss)<>' ':
             AddInArray(СписокНИ,true,false,ss);
          fi;
       fi;
     od;
  Finally
     CloseWorkArea(wa);
  end;
end;

Proc inicrdФКР(crd:s);
  var t,p,q:i;
  ClearVariable(inicrdfield);
  ClearVariable(inicrdfield_);
  ClearVariable(fieldskosgu);
  ClearVariable(fieldshistory);
  ClearVariable(fieldscur);
  t=0;p=0;q=0;
  if crd='РПО_ОСТ_НФА':
     fieldscur='ГОДОСТ';
     p=p+1;fieldskosgu[p]  ='ПОЗИЦИИ@НФА';
     q=q+1;fieldshistory[q]='ПОЗИЦИИ@ФКР0';
     t=t+1;inicrdfield[t]  ='ПОЗИЦИИ@НФА';                    inicrdfield_[t]=1;-- аналитика
     t=t+1;inicrdfield[t]  ='ПОЗИЦИИ@СЧНФА';                  inicrdfield_[t]=0;-- счет
     t=t+1;inicrdfield[t]  ='ПОЗИЦИИ@ДОПАН';                  inicrdfield_[t]=1;-- аналитика
     t=t+1;inicrdfield[t]  ='ПОЗИЦИИ@СЧ00';                   inicrdfield_[t]=0;-- счет
     t=t+1;inicrdfield[t]  ='ПОЗИЦИИ@РУЧАН1';                 inicrdfield_[t]=1;-- аналитика
     t=t+1;inicrdfield[t]  ='ПОЗИЦИИ@РУЧАН2';                 inicrdfield_[t]=1;-- аналитика
     t=t+1;inicrdfield[t]  ='ПОЗИЦИИ@ДЕБПЕРЕОЦЕНОК';          inicrdfield_[t]=0;-- счет
     t=t+1;inicrdfield[t]  ='ПОЗИЦИИ@КРЕПЕРЕОЦЕНОК';          inicrdfield_[t]=0;-- счет
--     p=p+1;fieldskosgu[p]  ='ПОЗИЦИИ_БУХ@НФАПР';
--     q=q+1;fieldshistory[q]='ПОЗИЦИИ_БУХ@ФКР0';
--     t=t+1;inicrdfield[t]  ='ПОЗИЦИИ_БУХ@ДСЧЕТ';              inicrdfield_[t]=0;-- счет
--     t=t+1;inicrdfield[t]  ='ПОЗИЦИИ_БУХ@КСЧЕТ';              inicrdfield_[t]=0;-- счет
--     t=t+1;inicrdfield[t]  ='ПОЗИЦИИ_БУХ@АН';                 inicrdfield_[t]=1;-- аналитика
     p=p+1;fieldskosgu[p]  ='ПОЗИЦИИОС@НФА';
     q=q+1;fieldshistory[q]='ПОЗИЦИИОС@ФКР0';
     t=t+1;inicrdfield[t]  ='ПОЗИЦИИОС@НФА';                  inicrdfield_[t]=1;-- аналитика
     t=t+1;inicrdfield[t]  ='ПОЗИЦИИОС@СЧНФА';                inicrdfield_[t]=0;-- счет
     t=t+1;inicrdfield[t]  ='ПОЗИЦИИОС@СЧ00';                 inicrdfield_[t]=0;-- счет
     t=t+1;inicrdfield[t]  ='ПОЗИЦИИОС@РУЧАН1';               inicrdfield_[t]=1;-- аналитика
     t=t+1;inicrdfield[t]  ='ПОЗИЦИИОС@РУЧАН2';               inicrdfield_[t]=1;-- аналитика
     t=t+1;inicrdfield[t]  ='ПОЗИЦИИОС@ДОПАН';                inicrdfield_[t]=1;-- аналитика
     t=t+1;inicrdfield[t]  ='ПОЗИЦИИОС@ДЕБАМОРТ00';           inicrdfield_[t]=0;-- счет
     t=t+1;inicrdfield[t]  ='ПОЗИЦИИОС@СЧЕТАМОРТ';            inicrdfield_[t]=0;-- счет
     t=t+1;inicrdfield[t]  ='ПОЗИЦИИОС@ДЕБАМОРТ';             inicrdfield_[t]=0;-- счет
     t=t+1;inicrdfield[t]  ='ПОЗИЦИИОС@ДЕБПЕРЕОЦЕНОК';        inicrdfield_[t]=0;-- счет
     t=t+1;inicrdfield[t]  ='ПОЗИЦИИОС@КРЕПЕРЕОЦЕНОК';        inicrdfield_[t]=0;-- счет
     t=t+1;inicrdfield[t]  ='ПОЗИЦИИОС@ДЕБПЕРЕОЦЕНОКАМОРТ';   inicrdfield_[t]=0;-- счет
     t=t+1;inicrdfield[t]  ='ПОЗИЦИИОС@КРЕПЕРЕОЦЕНОКАМОРТ';   inicrdfield_[t]=0;-- счет
     t=t+1;inicrdfield[t]  ='ПОЗИЦИИОС@ДОПАНПЕР';             inicrdfield_[t]=1;-- аналитика
     t=t+1;inicrdfield[t]  ='ОБЩАН';                          inicrdfield_[t]=1;-- аналитика

   | crd='РПО_ОПЕРАЦИИДНФА':
     fieldscur='НОМЕР';
     p=p+1;fieldskosgu[p]='ПОЗИЦИИ@НФА';
     t=t+1;inicrdfield[t]='ПОЗИЦИИ@СЧНФА';                    inicrdfield_[t]=0;-- счет
     t=t+1;inicrdfield[t]='ПОЗИЦИИ@КОРСЧНФА';                 inicrdfield_[t]=0;-- счет
     t=t+1;inicrdfield[t]='ПОЗИЦИИ@АМСЧНФА';                  inicrdfield_[t]=0;-- счет
     t=t+1;inicrdfield[t]='ПОЗИЦИИ@ОСТНФА';                   inicrdfield_[t]=-1;-- условие
     t=t+1;inicrdfield[t]='ПОЗИЦИИ@НФА';                      inicrdfield_[t]=1;-- аналитика
     t=t+1;inicrdfield[t]='ПОЗИЦИИ@АН01';                     inicrdfield_[t]=1;-- аналитика
     t=t+1;inicrdfield[t]='ПОЗИЦИИ@АН02';                     inicrdfield_[t]=1;-- аналитика
     t=t+1;inicrdfield[t]='ПОЗИЦИИ@АН03';                     inicrdfield_[t]=1;-- аналитика
     t=t+1;inicrdfield[t]='ПОЗИЦИИ@АН04';                     inicrdfield_[t]=1;-- аналитика
     t=t+1;inicrdfield[t]='ПОЗИЦИИ@АН05';                     inicrdfield_[t]=1;-- аналитика
     t=t+1;inicrdfield[t]='ПОЗИЦИИ@АН06';                     inicrdfield_[t]=1;-- аналитика
     t=t+1;inicrdfield[t]='ПОЗИЦИИ@АН07';                     inicrdfield_[t]=1;-- аналитика
     t=t+1;inicrdfield[t]='ПОЗИЦИИ@АН08';                     inicrdfield_[t]=1;-- аналитика
     t=t+1;inicrdfield[t]='ПОЗИЦИИ@АН09';                     inicrdfield_[t]=1;-- аналитика
     t=t+1;inicrdfield[t]='ПОЗИЦИИ@АН10';                     inicrdfield_[t]=1;-- аналитика
     t=t+1;inicrdfield[t]='ПОЗИЦИИ@АН11';                     inicrdfield_[t]=1;-- аналитика
     t=t+1;inicrdfield[t]='ПОЗИЦИИ@АН12';                     inicrdfield_[t]=1;-- аналитика
     t=t+1;inicrdfield[t]='ПОЗИЦИИ@АН13';                     inicrdfield_[t]=1;-- аналитика
     t=t+1;inicrdfield[t]='ПОЗИЦИИ@АН14';                     inicrdfield_[t]=1;-- аналитика
     t=t+1;inicrdfield[t]='ПОЗИЦИИ@АН15';                     inicrdfield_[t]=1;-- аналитика
     t=t+1;inicrdfield[t]='ПОЗИЦИИ@АН16';                     inicrdfield_[t]=1;-- аналитика
     t=t+1;inicrdfield[t]='ПОЗИЦИИ@АН17';                     inicrdfield_[t]=1;-- аналитика
     t=t+1;inicrdfield[t]='ПОЗИЦИИ@АН18';                     inicrdfield_[t]=1;-- аналитика
     t=t+1;inicrdfield[t]='ПОЗИЦИИ@АН19';                     inicrdfield_[t]=1;-- аналитика
     t=t+1;inicrdfield[t]='ПОЗИЦИИ@АН20';                     inicrdfield_[t]=1;-- аналитика
     t=t+1;inicrdfield[t]='ПОЗИЦИИ@АН21';                     inicrdfield_[t]=1;-- аналитика
     t=t+1;inicrdfield[t]='ПОЗИЦИИ@АН22';                     inicrdfield_[t]=1;-- аналитика
     t=t+1;inicrdfield[t]='ПОЗИЦИИ@АН23';                     inicrdfield_[t]=1;-- аналитика
     t=t+1;inicrdfield[t]='ПОЗИЦИИ@АН24';                     inicrdfield_[t]=1;-- аналитика
     t=t+1;inicrdfield[t]='ПОЗИЦИИ@АН25';                     inicrdfield_[t]=1;-- аналитика
     t=t+1;inicrdfield[t]='ПОЗИЦИИ@СЧ01';                     inicrdfield_[t]=0;-- счет
     t=t+1;inicrdfield[t]='ПОЗИЦИИ@СЧ02';                     inicrdfield_[t]=0;-- счет
     t=t+1;inicrdfield[t]='ПОЗИЦИИ@СЧ03';                     inicrdfield_[t]=0;-- счет
     t=t+1;inicrdfield[t]='ПОЗИЦИИ@СЧ04';                     inicrdfield_[t]=0;-- счет
     t=t+1;inicrdfield[t]='ПОЗИЦИИ@СЧ05';                     inicrdfield_[t]=0;-- счет
     t=t+1;inicrdfield[t]='ПОЗИЦИИ@СЧ06';                     inicrdfield_[t]=0;-- счет
     t=t+1;inicrdfield[t]='ПОЗИЦИИ@СЧ07';                     inicrdfield_[t]=0;-- счет
     t=t+1;inicrdfield[t]='ПОЗИЦИИ@СЧ08';                     inicrdfield_[t]=0;-- счет
     t=t+1;inicrdfield[t]='ПОЗИЦИИ@СЧ09';                     inicrdfield_[t]=0;-- счет
     t=t+1;inicrdfield[t]='ПОЗИЦИИ@СЧ10';                     inicrdfield_[t]=0;-- счет
     t=t+1;inicrdfield[t]='ПОЗИЦИИ@СЧ11';                     inicrdfield_[t]=0;-- счет
--     p=p+1;fieldskosgu[p]='ПОЗИЦИИ_ФИКС@НФАПР';
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ_ФИКС@ОСТНФА';              inicrdfield_[t]=-1;-- условие
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ_ФИКС@ДСЧЕТ';               inicrdfield_[t]=0;-- счет
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ_ФИКС@КСЧЕТ';               inicrdfield_[t]=0;-- счет
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ_ФИКС@ДАН01';               inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ_ФИКС@ДАН02';               inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ_ФИКС@ДАН03';               inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ_ФИКС@ДАН04';               inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ_ФИКС@ДАН05';               inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ_ФИКС@ДАН06';               inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ_ФИКС@ДАН07';               inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ_ФИКС@ДАН08';               inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ_ФИКС@ДАН09';               inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ_ФИКС@ДАН10';               inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ_ФИКС@ДАН11';               inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ_ФИКС@ДАН12';               inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ_ФИКС@ДАН13';               inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ_ФИКС@ДАН14';               inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ_ФИКС@ДАН15';               inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ_ФИКС@ДАН16';               inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ_ФИКС@ДАН17';               inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ_ФИКС@ДАН18';               inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ_ФИКС@ДАН19';               inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ_ФИКС@ДАН20';               inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ_ФИКС@ДАН21';               inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ_ФИКС@ДАН22';               inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ_ФИКС@ДАН23';               inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ_ФИКС@ДАН24';               inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ_ФИКС@ДАН25';               inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ_ФИКС@КАН01';               inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ_ФИКС@КАН02';               inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ_ФИКС@КАН03';               inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ_ФИКС@КАН04';               inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ_ФИКС@КАН05';               inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ_ФИКС@КАН06';               inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ_ФИКС@КАН07';               inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ_ФИКС@КАН08';               inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ_ФИКС@КАН09';               inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ_ФИКС@КАН10';               inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ_ФИКС@КАН11';               inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ_ФИКС@КАН12';               inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ_ФИКС@КАН13';               inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ_ФИКС@КАН14';               inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ_ФИКС@КАН15';               inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ_ФИКС@КАН16';               inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ_ФИКС@КАН17';               inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ_ФИКС@КАН18';               inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ_ФИКС@КАН19';               inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ_ФИКС@КАН20';               inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ_ФИКС@КАН21';               inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ_ФИКС@КАН22';               inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ_ФИКС@КАН23';               inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ_ФИКС@КАН24';               inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ_ФИКС@КАН25';               inicrdfield_[t]=1;-- аналитика
--     p=p+1;fieldskosgu[p]='ПОЗИЦИИ_БУХ@НФАПР';
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ_БУХ@ДСЧЕТ';                inicrdfield_[t]=0;-- счет
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ_БУХ@КСЧЕТ';                inicrdfield_[t]=0;-- счет
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ_БУХ@ДАН01';                inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ_БУХ@ДАН02';                inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ_БУХ@ДАН03';                inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ_БУХ@ДАН04';                inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ_БУХ@ДАН05';                inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ_БУХ@ДАН06';                inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ_БУХ@ДАН07';                inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ_БУХ@ДАН08';                inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ_БУХ@ДАН09';                inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ_БУХ@ДАН10';                inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ_БУХ@ДАН11';                inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ_БУХ@ДАН12';                inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ_БУХ@ДАН13';                inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ_БУХ@ДАН14';                inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ_БУХ@ДАН15';                inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ_БУХ@ДАН16';                inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ_БУХ@ДАН17';                inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ_БУХ@ДАН18';                inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ_БУХ@ДАН19';                inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ_БУХ@ДАН20';                inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ_БУХ@ДАН21';                inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ_БУХ@ДАН22';                inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ_БУХ@ДАН23';                inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ_БУХ@ДАН24';                inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ_БУХ@ДАН25';                inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ_БУХ@КАН01';                inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ_БУХ@КАН02';                inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ_БУХ@КАН03';                inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ_БУХ@КАН04';                inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ_БУХ@КАН05';                inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ_БУХ@КАН06';                inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ_БУХ@КАН07';                inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ_БУХ@КАН08';                inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ_БУХ@КАН09';                inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ_БУХ@КАН10';                inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ_БУХ@КАН11';                inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ_БУХ@КАН12';                inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ_БУХ@КАН13';                inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ_БУХ@КАН14';                inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ_БУХ@КАН15';                inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ_БУХ@КАН16';                inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ_БУХ@КАН17';                inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ_БУХ@КАН18';                inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ_БУХ@КАН19';                inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ_БУХ@КАН20';                inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ_БУХ@КАН21';                inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ_БУХ@КАН22';                inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ_БУХ@КАН23';                inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ_БУХ@КАН24';                inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ_БУХ@КАН25';                inicrdfield_[t]=1;-- аналитика

     t=t+1;inicrdfield[t]='СЧНФА_Ш';                          inicrdfield_[t]=0;-- счет
     t=t+1;inicrdfield[t]='КОРСЧНФА_Ш';                       inicrdfield_[t]=0;-- счет
     t=t+1;inicrdfield[t]='АМСЧНФА_Ш';                        inicrdfield_[t]=0;-- счет
     t=t+1;inicrdfield[t]='АН01_Ш';                           inicrdfield_[t]=1;-- аналитика
     t=t+1;inicrdfield[t]='АН02_Ш';                           inicrdfield_[t]=1;-- аналитика
     t=t+1;inicrdfield[t]='АН03_Ш';                           inicrdfield_[t]=1;-- аналитика
     t=t+1;inicrdfield[t]='АН04_Ш';                           inicrdfield_[t]=1;-- аналитика
     t=t+1;inicrdfield[t]='АН05_Ш';                           inicrdfield_[t]=1;-- аналитика
     t=t+1;inicrdfield[t]='АН06_Ш';                           inicrdfield_[t]=1;-- аналитика
     t=t+1;inicrdfield[t]='АН07_Ш';                           inicrdfield_[t]=1;-- аналитика
     t=t+1;inicrdfield[t]='АН08_Ш';                           inicrdfield_[t]=1;-- аналитика
     t=t+1;inicrdfield[t]='АН09_Ш';                           inicrdfield_[t]=1;-- аналитика
     t=t+1;inicrdfield[t]='АН10_Ш';                           inicrdfield_[t]=1;-- аналитика
     t=t+1;inicrdfield[t]='АН11_Ш';                           inicrdfield_[t]=1;-- аналитика
     t=t+1;inicrdfield[t]='АН12_Ш';                           inicrdfield_[t]=1;-- аналитика
     t=t+1;inicrdfield[t]='АН13_Ш';                           inicrdfield_[t]=1;-- аналитика
     t=t+1;inicrdfield[t]='АН14_Ш';                           inicrdfield_[t]=1;-- аналитика
     t=t+1;inicrdfield[t]='АН15_Ш';                           inicrdfield_[t]=1;-- аналитика
     t=t+1;inicrdfield[t]='АН16_Ш';                           inicrdfield_[t]=1;-- аналитика
     t=t+1;inicrdfield[t]='АН17_Ш';                           inicrdfield_[t]=1;-- аналитика
     t=t+1;inicrdfield[t]='АН18_Ш';                           inicrdfield_[t]=1;-- аналитика
     t=t+1;inicrdfield[t]='АН19_Ш';                           inicrdfield_[t]=1;-- аналитика
     t=t+1;inicrdfield[t]='АН20_Ш';                           inicrdfield_[t]=1;-- аналитика
     t=t+1;inicrdfield[t]='АН21_Ш';                           inicrdfield_[t]=1;-- аналитика
     t=t+1;inicrdfield[t]='АН22_Ш';                           inicrdfield_[t]=1;-- аналитика
     t=t+1;inicrdfield[t]='АН23_Ш';                           inicrdfield_[t]=1;-- аналитика
     t=t+1;inicrdfield[t]='АН24_Ш';                           inicrdfield_[t]=1;-- аналитика
     t=t+1;inicrdfield[t]='АН25_Ш';                           inicrdfield_[t]=1;-- аналитика
     t=t+1;inicrdfield[t]='СЧ01_Ш';                           inicrdfield_[t]=1;-- аналитика
     t=t+1;inicrdfield[t]='СЧ02_Ш';                           inicrdfield_[t]=1;-- аналитика
     t=t+1;inicrdfield[t]='СЧ03_Ш';                           inicrdfield_[t]=1;-- аналитика
     t=t+1;inicrdfield[t]='СЧ04_Ш';                           inicrdfield_[t]=1;-- аналитика
     t=t+1;inicrdfield[t]='СЧ05_Ш';                           inicrdfield_[t]=1;-- аналитика
     t=t+1;inicrdfield[t]='СЧ06_Ш';                           inicrdfield_[t]=1;-- аналитика
     t=t+1;inicrdfield[t]='СЧ07_Ш';                           inicrdfield_[t]=1;-- аналитика
     t=t+1;inicrdfield[t]='СЧ08_Ш';                           inicrdfield_[t]=1;-- аналитика
     t=t+1;inicrdfield[t]='СЧ09_Ш';                           inicrdfield_[t]=1;-- аналитика
     t=t+1;inicrdfield[t]='СЧ10_Ш';                           inicrdfield_[t]=1;-- аналитика
     t=t+1;inicrdfield[t]='СЧ11_Ш';                           inicrdfield_[t]=1;-- аналитика

   | crd='РПО_НАЧ_АМОРТ':
     fieldscur='ПЕРИОД';
     p=p+1;fieldskosgu[p]='ПОЗИЦИИ@НФА';
     t=t+1;inicrdfield[t]='ПОЗИЦИИ@СЧДЕБ';                    inicrdfield_[t]=0;-- счет
     t=t+1;inicrdfield[t]='ПОЗИЦИИ@СЧКРЕ';                    inicrdfield_[t]=0;-- счет
     t=t+1;inicrdfield[t]='ПОЗИЦИИ@ПРИЗН';                    inicrdfield_[t]=1;-- аналитика
     t=t+1;inicrdfield[t]='ПОЗИЦИИ@НФА';                      inicrdfield_[t]=1;-- аналитика
--     p=p+1;fieldskosgu[p]='ПОЗИЦИИ_БУХ@НФАПР';
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ_БУХ@ДСЧЕТ';                inicrdfield_[t]=0;-- счет
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ_БУХ@КСЧЕТ';                inicrdfield_[t]=0;-- счет
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ_БУХ@НФА';                  inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ_БУХ@АН';                   inicrdfield_[t]=1;-- аналитика
     t=t+1;inicrdfield[t]='ПРИЗНД';                           inicrdfield_[t]=1;-- аналитика
   | crd='РПО_НАЧ_АМОРТ_TR':
     fieldscur='ПЕРИОД';
     p=p+1;fieldskosgu[p]='НФА';
     t=t+1;inicrdfield[t]='СЧДЕБ';                            inicrdfield_[t]=0;-- счет
     t=t+1;inicrdfield[t]='СЧКРЕ';                            inicrdfield_[t]=0;-- счет
     t=t+1;inicrdfield[t]='ПРИЗН';                            inicrdfield_[t]=1;-- аналитика
     t=t+1;inicrdfield[t]='НФА';                              inicrdfield_[t]=1;-- аналитика
   | crd='РПО_ИНВКАРТ_ОС':
     fieldscur='НФА';
     p=p+1;fieldskosgu[p]='НФА';
     t=t+1;inicrdfield[t]='СЧЕТНФА';                          inicrdfield_[t]=-1;-- условие
     t=t+1;inicrdfield[t]='НФА';                              inicrdfield_[t]=1; -- аналитика

   | crd='РПО_НФА_СПРАВКА_ПРОВОДКИ':
     fieldscur='НФА_СПРАВКА';
     p=p+1;fieldskosgu[p]='НФА_КОД';
     t=t+1;inicrdfield[t]='СЧНФА';                            inicrdfield_[t]=0;-- счет
     t=t+1;inicrdfield[t]='СЧНФАКРЕ';                         inicrdfield_[t]=0;-- счет

     t=t+1;inicrdfield[t]='АМСЧНФА';                          inicrdfield_[t]=0;-- счет
     t=t+1;inicrdfield[t]='АМСЧНФАДЕБ';                       inicrdfield_[t]=0;-- счет
     t=t+1;inicrdfield[t]='СЧДЕБ1';                           inicrdfield_[t]=0;-- счет
     t=t+1;inicrdfield[t]='СЧКРЕ1';                           inicrdfield_[t]=0;-- счет
     t=t+1;inicrdfield[t]='СЧДЕБ2';                           inicrdfield_[t]=0;-- счет
     t=t+1;inicrdfield[t]='СЧКРЕ2';                           inicrdfield_[t]=0;-- счет
     t=t+1;inicrdfield[t]='СЧДЕБ3';                           inicrdfield_[t]=0;-- счет
     t=t+1;inicrdfield[t]='СЧКРЕ3';                           inicrdfield_[t]=0;-- счет

     t=t+1;inicrdfield[t]='НФА_КОД';                          inicrdfield_[t]=1;-- аналитика
     t=t+1;inicrdfield[t]='ДОПАНА01';                         inicrdfield_[t]=1;-- аналитика
     t=t+1;inicrdfield[t]='ДОПАНА02';                         inicrdfield_[t]=1;-- аналитика
     t=t+1;inicrdfield[t]='ДОПАНА03';                         inicrdfield_[t]=1;-- аналитика
     t=t+1;inicrdfield[t]='ДОПАНА04';                         inicrdfield_[t]=1;-- аналитика
     t=t+1;inicrdfield[t]='ДОПАНА05';                         inicrdfield_[t]=1;-- аналитика
     t=t+1;inicrdfield[t]='ДОПАНА06';                         inicrdfield_[t]=1;-- аналитика
     t=t+1;inicrdfield[t]='ДОПАНА07';                         inicrdfield_[t]=1;-- аналитика
     t=t+1;inicrdfield[t]='ДОПАНА08';                         inicrdfield_[t]=1;-- аналитика
     t=t+1;inicrdfield[t]='ДОПАНА09';                         inicrdfield_[t]=1;-- аналитика
     t=t+1;inicrdfield[t]='ДОПАНА10';                         inicrdfield_[t]=1;-- аналитика
     t=t+1;inicrdfield[t]='ОСТНФА';                           inicrdfield_[t]=-1;-- условие
     t=t+1;inicrdfield[t]='ОСТАМНФА';                         inicrdfield_[t]=-1;-- условие

   | crd='РПО_ВНУТР_ПЕРЕМ_МОЛ':
     fieldscur='НОМЕР';
     p=p+1;fieldskosgu[p]  ='ПОЗИЦИИ@НФА_КОД';
     t=t+1;inicrdfield[t]  ='ПОЗИЦИИ@ДСЧЕТ';                  inicrdfield_[t]=0;-- счет
     t=t+1;inicrdfield[t]  ='ПОЗИЦИИ@НФА_КОД';                inicrdfield_[t]=1;-- аналитика
     t=t+1;inicrdfield[t]  ='ПОЗИЦИИ@ДОПАНА01';               inicrdfield_[t]=1;-- аналитика
     t=t+1;inicrdfield[t]  ='ПОЗИЦИИ@ДОПАНА02';               inicrdfield_[t]=1;-- аналитика
     t=t+1;inicrdfield[t]  ='ПОЗИЦИИ@ДОПАНА03';               inicrdfield_[t]=1;-- аналитика
     t=t+1;inicrdfield[t]  ='ПОЗИЦИИ@ДОПАНА04';               inicrdfield_[t]=1;-- аналитика
     t=t+1;inicrdfield[t]  ='ПОЗИЦИИ@ДОПАНА05';               inicrdfield_[t]=1;-- аналитика
     t=t+1;inicrdfield[t]  ='ПОЗИЦИИ@ДОПАНА06';               inicrdfield_[t]=1;-- аналитика
     t=t+1;inicrdfield[t]  ='ПОЗИЦИИ@ДОПАНА07';               inicrdfield_[t]=1;-- аналитика
     t=t+1;inicrdfield[t]  ='ПОЗИЦИИ@ДОПАНА08';               inicrdfield_[t]=1;-- аналитика
     t=t+1;inicrdfield[t]  ='ПОЗИЦИИ@ДОПАНА09';               inicrdfield_[t]=1;-- аналитика
     t=t+1;inicrdfield[t]  ='ПОЗИЦИИ@ДОПАНА10';               inicrdfield_[t]=1;-- аналитика
     t=t+1;inicrdfield[t]  ='ПОЗИЦИИ@ДОПАНАИТОГО';            inicrdfield_[t]=-1;-- условие
     t=t+1;inicrdfield[t]  ='ПОЗИЦИИ@ПРИЗН';                  inicrdfield_[t]=-1;-- условие
     t=t+1;inicrdfield[t]  ='ПОЗИЦИИ@УСЛОСТНФА';              inicrdfield_[t]=-1;-- условие

     t=t+1;inicrdfield[t]  ='ДОП_УСЛ_ОСТ_АН';                 inicrdfield_[t]=-1;-- условие
     t=t+1;inicrdfield[t]  ='ДОП_УСЛ_ОСТ_СЧ';                 inicrdfield_[t]=-1;-- условие


   | crd='РПО_ДНФА':
     fieldscur='ДНФА';
     p=p+1;fieldskosgu[p]  ='ЗАПРОС@ПОЛЕПОДТАБЛИЦЫ';
     t=t+1;inicrdfield[t]  ='ЗАПРОС@ОТВЕТ';                   inicrdfield_[t]=4;-- тип РПО_ДНФА определяется по значению поля ПОЛЕПОДТАБЛИЦЫ (НФА)
     --                                                                            =НФА  -  тип=3(2 замены: НФА.101.09-НФА.101.08 и НФА.102.01-НФА.102.00)
     --                                                                            содержит СЧ тип=4 замена по списку замен аналитики
     t=t+1;inicrdfield[t]  ='ЗАПРОС@ОБЯЗАТЕЛЬНЫЙ';            inicrdfield_[t]=3;-- условие только для НФА (2 замены: НФА.101.09-НФА.101.08 и НФА.102.01-НФА.102.00)
     t=t+1;inicrdfield[t]  ='ЗАПРОС@НЕОБЯЗАТЕЛЬНЫЙ';          inicrdfield_[t]=3;-- условие только для НФА (2 замены: НФА.101.09-НФА.101.08 и НФА.102.01-НФА.102.00)
   | crd='РПО_НФА':
     fieldscur='ГРНФА';
     p=p+1;fieldskosgu[p]  ='ГРНФА';
     t=t+1;inicrdfield[t]  ='ГРНФА';                          inicrdfield_[t]=2;-- ГРНФА
     t=t+1;inicrdfield[t]  ='ГРНФАКВ';                        inicrdfield_[t]=2;-- ГРНФА
   | crd='РПО_ОКЕИ_ГРУППЫ':
     fieldscur='КОД';
     p=p+1;fieldskosgu[p]  ='ГРНФА';
     t=t+1;inicrdfield[t]  ='ГРНФА';                          inicrdfield_[t]=2;-- ГРНФА
  fi;

end;
Proc inicrdСчАм2009(crd:s);
  var t,p,q:i;
  ClearVariable(inicrdfield);
  ClearVariable(inicrdfield_);
  ClearVariable(fieldskosgu);
  ClearVariable(fieldshistory);
  ClearVariable(fieldscur);
  t=0;p=0;q=0;
  if crd='РПО_ОСТ_НФА':
     fieldscur='ГОДОСТ';
--     p=p+1;fieldskosgu[p]  ='ПОЗИЦИИ@НФА';
--     q=q+1;fieldshistory[q]='ПОЗИЦИИ@ФКР0';
--     t=t+1;inicrdfield[t]  ='ПОЗИЦИИ@СЧНФА';                  inicrdfield_[t]=0;-- счет
--     t=t+1;inicrdfield[t]  ='ПОЗИЦИИ@ДОПАН';                  inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]  ='ПОЗИЦИИ@СЧ00';                   inicrdfield_[t]=0;-- счет
--     t=t+1;inicrdfield[t]  ='ПОЗИЦИИ@РУЧАН1';                 inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]  ='ПОЗИЦИИ@РУЧАН2';                 inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]  ='ПОЗИЦИИ@ДЕБПЕРЕОЦЕНОК';          inicrdfield_[t]=0;-- счет
--     t=t+1;inicrdfield[t]  ='ПОЗИЦИИ@КРЕПЕРЕОЦЕНОК';          inicrdfield_[t]=0;-- счет
--     p=p+1;fieldskosgu[p]  ='ПОЗИЦИИ_БУХ@НФАПР';
--     q=q+1;fieldshistory[q]='ПОЗИЦИИ_БУХ@ФКР0';
--     t=t+1;inicrdfield[t]  ='ПОЗИЦИИ_БУХ@ДСЧЕТ';              inicrdfield_[t]=0;-- счет
--     t=t+1;inicrdfield[t]  ='ПОЗИЦИИ_БУХ@КСЧЕТ';              inicrdfield_[t]=0;-- счет
--     t=t+1;inicrdfield[t]  ='ПОЗИЦИИ_БУХ@АН';                 inicrdfield_[t]=1;-- аналитика
     p=p+1;fieldskosgu[p]  ='ПОЗИЦИИОС@НФА';
--     q=q+1;fieldshistory[q]='ПОЗИЦИИОС@ФКР0';
--     t=t+1;inicrdfield[t]  ='ПОЗИЦИИОС@СЧНФА';                inicrdfield_[t]=0;-- счет
--     t=t+1;inicrdfield[t]  ='ПОЗИЦИИОС@СЧ00';                 inicrdfield_[t]=0;-- счет
--     t=t+1;inicrdfield[t]  ='ПОЗИЦИИОС@РУЧАН1';               inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]  ='ПОЗИЦИИОС@РУЧАН2';               inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]  ='ПОЗИЦИИОС@ДОПАН';                inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]  ='ПОЗИЦИИОС@ДЕБАМОРТ00';           inicrdfield_[t]=0;-- счет
     t=t+1;inicrdfield[t]  ='ПОЗИЦИИОС@СЧЕТАМОРТ';            inicrdfield_[t]=0;-- счет
     t=t+1;inicrdfield[t]  ='ПОЗИЦИИОС@ДЕБАМОРТ';             inicrdfield_[t]=0;-- счет
--     t=t+1;inicrdfield[t]  ='ПОЗИЦИИОС@ДЕБПЕРЕОЦЕНОК';        inicrdfield_[t]=0;-- счет
--     t=t+1;inicrdfield[t]  ='ПОЗИЦИИОС@КРЕПЕРЕОЦЕНОК';        inicrdfield_[t]=0;-- счет
     t=t+1;inicrdfield[t]  ='ПОЗИЦИИОС@ДЕБПЕРЕОЦЕНОКАМОРТ';   inicrdfield_[t]=0;-- счет
     t=t+1;inicrdfield[t]  ='ПОЗИЦИИОС@КРЕПЕРЕОЦЕНОКАМОРТ';   inicrdfield_[t]=0;-- счет
--     t=t+1;inicrdfield[t]  ='ПОЗИЦИИОС@ДОПАНПЕР';             inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]  ='ОБЩАН';                          inicrdfield_[t]=1;-- аналитика

   | crd='РПО_ОПЕРАЦИИДНФА':
     fieldscur='НОМЕР';
     p=p+1;fieldskosgu[p]='ПОЗИЦИИ@НФА';
     t=t+1;inicrdfield[t]='ПОЗИЦИИ@СЧНФА';                    inicrdfield_[t]=0;-- счет
     t=t+1;inicrdfield[t]='ПОЗИЦИИ@КОРСЧНФА';                 inicrdfield_[t]=0;-- счет
     t=t+1;inicrdfield[t]='ПОЗИЦИИ@АМСЧНФА';                  inicrdfield_[t]=0;-- счет
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ@ОСТНФА';                   inicrdfield_[t]=-1;-- условие
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ@АН01';                     inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ@АН02';                     inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ@АН03';                     inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ@АН04';                     inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ@АН05';                     inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ@АН06';                     inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ@АН07';                     inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ@АН08';                     inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ@АН09';                     inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ@АН10';                     inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ@АН11';                     inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ@АН12';                     inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ@АН13';                     inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ@АН14';                     inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ@АН15';                     inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ@АН16';                     inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ@АН17';                     inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ@АН18';                     inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ@АН19';                     inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ@АН20';                     inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ@АН21';                     inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ@АН22';                     inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ@АН23';                     inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ@АН24';                     inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ@АН25';                     inicrdfield_[t]=1;-- аналитика
     t=t+1;inicrdfield[t]='ПОЗИЦИИ@СЧ01';                     inicrdfield_[t]=0;-- счет
     t=t+1;inicrdfield[t]='ПОЗИЦИИ@СЧ02';                     inicrdfield_[t]=0;-- счет
     t=t+1;inicrdfield[t]='ПОЗИЦИИ@СЧ03';                     inicrdfield_[t]=0;-- счет
     t=t+1;inicrdfield[t]='ПОЗИЦИИ@СЧ04';                     inicrdfield_[t]=0;-- счет
     t=t+1;inicrdfield[t]='ПОЗИЦИИ@СЧ05';                     inicrdfield_[t]=0;-- счет
     t=t+1;inicrdfield[t]='ПОЗИЦИИ@СЧ06';                     inicrdfield_[t]=0;-- счет
     t=t+1;inicrdfield[t]='ПОЗИЦИИ@СЧ07';                     inicrdfield_[t]=0;-- счет
     t=t+1;inicrdfield[t]='ПОЗИЦИИ@СЧ08';                     inicrdfield_[t]=0;-- счет
     t=t+1;inicrdfield[t]='ПОЗИЦИИ@СЧ09';                     inicrdfield_[t]=0;-- счет
     t=t+1;inicrdfield[t]='ПОЗИЦИИ@СЧ10';                     inicrdfield_[t]=0;-- счет
     t=t+1;inicrdfield[t]='ПОЗИЦИИ@СЧ11';                     inicrdfield_[t]=0;-- счет
     p=p+1;fieldskosgu[p]='ПОЗИЦИИ_ФИКС@НФАПР';
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ_ФИКС@ОСТНФА';              inicrdfield_[t]=-1;-- условие
     t=t+1;inicrdfield[t]='ПОЗИЦИИ_ФИКС@ДСЧЕТ';               inicrdfield_[t]=0;-- счет
     t=t+1;inicrdfield[t]='ПОЗИЦИИ_ФИКС@КСЧЕТ';               inicrdfield_[t]=0;-- счет
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ_ФИКС@ДАН01';               inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ_ФИКС@ДАН02';               inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ_ФИКС@ДАН03';               inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ_ФИКС@ДАН04';               inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ_ФИКС@ДАН05';               inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ_ФИКС@ДАН06';               inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ_ФИКС@ДАН07';               inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ_ФИКС@ДАН08';               inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ_ФИКС@ДАН09';               inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ_ФИКС@ДАН10';               inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ_ФИКС@ДАН11';               inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ_ФИКС@ДАН12';               inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ_ФИКС@ДАН13';               inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ_ФИКС@ДАН14';               inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ_ФИКС@ДАН15';               inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ_ФИКС@ДАН16';               inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ_ФИКС@ДАН17';               inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ_ФИКС@ДАН18';               inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ_ФИКС@ДАН19';               inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ_ФИКС@ДАН20';               inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ_ФИКС@ДАН21';               inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ_ФИКС@ДАН22';               inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ_ФИКС@ДАН23';               inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ_ФИКС@ДАН24';               inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ_ФИКС@ДАН25';               inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ_ФИКС@КАН01';               inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ_ФИКС@КАН02';               inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ_ФИКС@КАН03';               inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ_ФИКС@КАН04';               inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ_ФИКС@КАН05';               inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ_ФИКС@КАН06';               inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ_ФИКС@КАН07';               inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ_ФИКС@КАН08';               inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ_ФИКС@КАН09';               inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ_ФИКС@КАН10';               inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ_ФИКС@КАН11';               inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ_ФИКС@КАН12';               inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ_ФИКС@КАН13';               inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ_ФИКС@КАН14';               inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ_ФИКС@КАН15';               inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ_ФИКС@КАН16';               inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ_ФИКС@КАН17';               inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ_ФИКС@КАН18';               inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ_ФИКС@КАН19';               inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ_ФИКС@КАН20';               inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ_ФИКС@КАН21';               inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ_ФИКС@КАН22';               inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ_ФИКС@КАН23';               inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ_ФИКС@КАН24';               inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ_ФИКС@КАН25';               inicrdfield_[t]=1;-- аналитика
--     p=p+1;fieldskosgu[p]='ПОЗИЦИИ_БУХ@НФАПР';
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ_БУХ@ДСЧЕТ';                inicrdfield_[t]=0;-- счет
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ_БУХ@КСЧЕТ';                inicrdfield_[t]=0;-- счет
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ_БУХ@ДАН01';                inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ_БУХ@ДАН02';                inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ_БУХ@ДАН03';                inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ_БУХ@ДАН04';                inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ_БУХ@ДАН05';                inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ_БУХ@ДАН06';                inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ_БУХ@ДАН07';                inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ_БУХ@ДАН08';                inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ_БУХ@ДАН09';                inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ_БУХ@ДАН10';                inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ_БУХ@ДАН11';                inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ_БУХ@ДАН12';                inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ_БУХ@ДАН13';                inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ_БУХ@ДАН14';                inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ_БУХ@ДАН15';                inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ_БУХ@ДАН16';                inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ_БУХ@ДАН17';                inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ_БУХ@ДАН18';                inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ_БУХ@ДАН19';                inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ_БУХ@ДАН20';                inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ_БУХ@ДАН21';                inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ_БУХ@ДАН22';                inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ_БУХ@ДАН23';                inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ_БУХ@ДАН24';                inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ_БУХ@ДАН25';                inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ_БУХ@КАН01';                inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ_БУХ@КАН02';                inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ_БУХ@КАН03';                inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ_БУХ@КАН04';                inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ_БУХ@КАН05';                inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ_БУХ@КАН06';                inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ_БУХ@КАН07';                inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ_БУХ@КАН08';                inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ_БУХ@КАН09';                inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ_БУХ@КАН10';                inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ_БУХ@КАН11';                inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ_БУХ@КАН12';                inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ_БУХ@КАН13';                inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ_БУХ@КАН14';                inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ_БУХ@КАН15';                inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ_БУХ@КАН16';                inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ_БУХ@КАН17';                inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ_БУХ@КАН18';                inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ_БУХ@КАН19';                inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ_БУХ@КАН20';                inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ_БУХ@КАН21';                inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ_БУХ@КАН22';                inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ_БУХ@КАН23';                inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ_БУХ@КАН24';                inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ_БУХ@КАН25';                inicrdfield_[t]=1;-- аналитика

     t=t+1;inicrdfield[t]='СЧНФА_Ш';                          inicrdfield_[t]=0;-- счет
     t=t+1;inicrdfield[t]='КОРСЧНФА_Ш';                       inicrdfield_[t]=0;-- счет
     t=t+1;inicrdfield[t]='АМСЧНФА_Ш';                        inicrdfield_[t]=0;-- счет
--     t=t+1;inicrdfield[t]='АН01_Ш';                           inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='АН02_Ш';                           inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='АН03_Ш';                           inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='АН04_Ш';                           inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='АН05_Ш';                           inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='АН06_Ш';                           inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='АН07_Ш';                           inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='АН08_Ш';                           inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='АН09_Ш';                           inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='АН10_Ш';                           inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='АН11_Ш';                           inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='АН12_Ш';                           inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='АН13_Ш';                           inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='АН14_Ш';                           inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='АН15_Ш';                           inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='АН16_Ш';                           inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='АН17_Ш';                           inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='АН18_Ш';                           inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='АН19_Ш';                           inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='АН20_Ш';                           inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='АН21_Ш';                           inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='АН22_Ш';                           inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='АН23_Ш';                           inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='АН24_Ш';                           inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='АН25_Ш';                           inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='СЧ01_Ш';                           inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='СЧ02_Ш';                           inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='СЧ03_Ш';                           inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='СЧ04_Ш';                           inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='СЧ05_Ш';                           inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='СЧ06_Ш';                           inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='СЧ07_Ш';                           inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='СЧ08_Ш';                           inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='СЧ09_Ш';                           inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='СЧ10_Ш';                           inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='СЧ11_Ш';                           inicrdfield_[t]=1;-- аналитика

   | crd='РПО_НАЧ_АМОРТ':
     fieldscur='ПЕРИОД';
     p=p+1;fieldskosgu[p]='ПОЗИЦИИ@НФА';
     t=t+1;inicrdfield[t]='ПОЗИЦИИ@СЧДЕБ';                    inicrdfield_[t]=0;-- счет
     t=t+1;inicrdfield[t]='ПОЗИЦИИ@СЧКРЕ';                    inicrdfield_[t]=0;-- счет
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ@ПРИЗН';                    inicrdfield_[t]=1;-- аналитика
     p=p+1;fieldskosgu[p]='ПОЗИЦИИ_БУХ@НФАПР';
     t=t+1;inicrdfield[t]='ПОЗИЦИИ_БУХ@ДСЧЕТ';                inicrdfield_[t]=0;-- счет
     t=t+1;inicrdfield[t]='ПОЗИЦИИ_БУХ@КСЧЕТ';                inicrdfield_[t]=0;-- счет
--     t=t+1;inicrdfield[t]='ПОЗИЦИИ_БУХ@АН';                   inicrdfield_[t]=1;-- аналитика
--     t=t+1;inicrdfield[t]='ПРИЗНД';                           inicrdfield_[t]=1;-- аналитика
   | crd='РПО_НАЧ_АМОРТ_TR':
     fieldscur='ПЕРИОД';
     p=p+1;fieldskosgu[p]='НФА';
     t=t+1;inicrdfield[t]='СЧДЕБ';                            inicrdfield_[t]=0;-- счет
     t=t+1;inicrdfield[t]='СЧКРЕ';                            inicrdfield_[t]=0;-- счет
--     t=t+1;inicrdfield[t]='ПРИЗН';                            inicrdfield_[t]=1;-- аналитика
   | crd='РПО_ИНВКАРТ_ОС':
     fieldscur='НФА';
     p=p+1;fieldskosgu[p]='НФА';
     t=t+1;inicrdfield[t]='СЧЕТНФА';                          inicrdfield_[t]=-1;-- условие
  fi;
end;
--Func ЗаменаПодстроки_маска(ст:s;что:s;начто:s):s;
--var ln,t:i;
--var ss,ст0,что0,начто0:s;
--ln=length(ст);
--ss='';
--for t=1..ln do
----  что0  =substr(что   ,t,1);
--  ст0   =substr(ст    ,t,1);
--  начто0=substr(начто,t,1);
--  if начто0='?':ss=ss+ст0;
--   | true:      ss=ss+начто0;
--  fi;
--od;
--^ss;
--end;
Func Замена_маска(ст:s;что:s;начто:s):s;
var ln,t:i;
var ss,ст0,что0,начто0:s;
ln=length(ст);
ss='';
for t=1..ln do
--  что0  =substr(что   ,t,1);
  ст0   =substr(ст    ,t,1);
  начто0=substr(начто,t,1);
  if начто0='?':ss=ss+ст0;
   | true:      ss=ss+начто0;
  fi;
od;
^ss;
end;

Func ЗаменаПодстроки_маска(ст:s;что:s;начто:s):s; -- допускается маска со знаками вопроса пример "???." для что и для начто
  var p,t,lчто,ln:i;
  var ss:s;
  var начто_как_маска:l;
  lчто=Length(что);
  начто_как_маска=pos('?',начто)>0;
  if pos('?',что)<1:-- если нет маски - быстрая замена!
     ss='';
     p=pos(что,ст);
     if начто_как_маска: -- если что не маска - замена что на начто=константа
        начто=Замена_маска(что,что,начто);
     fi;
     while p>0 do
        ss=ss+SubStr(ст,1,p-1)+начто;
        ст=Удалить(ст,1,p-1+lчто);
        p=pos(что,ст);
     od;
   | true:-- замена по маске - проход по каждому символу
     if lчто<>Length(начто):^ст;fi; --если длина что и начто не совпадает - нет замены
     ln=length(ст)-lчто+1;
     for t=1..ln do
       ss=SubStr(ст,t,lчто);
       if match(ss,что): -- замена
          ст=SubStr(ст,1,t-1)+Замена_маска(ss,что,начто)+SubStr(ст,t+lчто,255);
          t=t+lчто-1;
       fi;
     od;
     ^ст;
  fi;
  ^ss+ст;
end;


Func ЗаменаПризнака(ст:s;что:s;начто:s;УслГраницы:s):s; --
  var p,lчто,lст:i;
  var ss:s;
  var ll:l;
  ss='';
  что=up(что);lчто=Length(что);lст=Length(ст);
  p=pos(что,up(ст));
  while p>0 do
    ll=false;
    if p=1:ll=true;
     | true:ll=pos(SubStr(ст,p-1,1),УслГраницы)>0;
    fi;
    if ll:
       if lст=p+lчто-1:ll=true;
        | true:ll=pos(SubStr(ст,p+lчто,1),УслГраницы)>0;
       fi;
    fi;
    if ll:
       ss=ss+SubStr(ст,1,p-1)+начто;
       ст=Удалить(ст,1,p-1+lчто);
       p=pos(что,up(ст));
     | true:
       ss=ss+SubStr(ст,1,p-1)+что;
       ст=Удалить(ст,1,p-1+lчто);
       p=pos(что,up(ст));
    fi;
  od;
  ^ss+ст;
end;

Func ЗаменаПодстроки_маска_граница(ст:s;что:s;начто:s;УслГраницы:s):s; -- допускается маска со знаками вопроса пример "???." для что и для начто
  var p,t,lчто,ln,lст:i;
  var ss:s;
  var начто_как_маска,ll:l;
  lчто=Length(что);lст=Length(ст);

  начто_как_маска=pos('?',начто)>0;
  if pos('?',что)<1:-- если нет маски - быстрая замена!
     ss='';
     if начто_как_маска: -- если что не маска - замена что на начто=константа
        начто=Замена_маска(что,что,начто);
     fi;
     if УслГраницы<>'':^ЗаменаПризнака(ст,что,начто,УслГраницы);fi;
     p=pos(что,ст);
     while p>0 do
        ss=ss+SubStr(ст,1,p-1)+начто;
        ст=Удалить(ст,1,p-1+lчто);
        p=pos(что,ст);
     od;
   | true:-- замена по маске - проход по каждому символу
     if lчто<>Length(начто):^ст;fi; --если длина что и начто не совпадает - нет замены
     ln=length(ст)-lчто+1;
     for t=1..ln do
       ss=SubStr(ст,t,lчто);ll=t>1 and УслГраницы<>'';
       if match(ss,что): -- замена
          if ll:
             ll=pos(SubStr(ст,t-1,1),УслГраницы)>0;
             if ll:
                if lст=t+lчто-1:ll=true;
                 | true:ll=pos(SubStr(ст,t+lчто,1),УслГраницы)>0;
                fi;
             fi;

             if ll:
               ст=SubStr(ст,1,t-1)+Замена_маска(ss,что,начто)+SubStr(ст,t+lчто,255);
               t=t+lчто-1;
             fi;
           | true: -- замена без границ
             ст=SubStr(ст,1,t-1)+Замена_маска(ss,что,начто)+SubStr(ст,t+lчто,255);
             t=t+lчто-1;
          fi;
       fi;
     od;
     ^ст;
  fi;
  ^ss+ст;
end;

proc Восстановитьстандартныенастройки_НИ;
  ClearVariable(ГРНФА_ни);
  ClearVariable(ПРИЗНАК_НИ);
  ClearVariable(ИМЯ_НИ);
  ClearVariable(ФЛ_НИ);
  ПозицииНастройкаНИ=5;
  ГРНФА_ни[1]=0;
  ГРНФА_ни[2]=1;
  ГРНФА_ни[3]=2;
  ГРНФА_ни[4]=3;
  ГРНФА_ни[5]=4;
  ПРИЗНАК_НИ[1]='*';
  ПРИЗНАК_НИ[2]='*';
  ПРИЗНАК_НИ[3]='*';
  ПРИЗНАК_НИ[4]='*';
  ПРИЗНАК_НИ[5]='*';
  ФЛ_НИ[3]=true;
  ФЛ_НИ[4]=true;
  ФЛ_НИ[5]=true;

end;

Proc createsortacckosgu(версия_:s);
 var z:i;
 var ss:s;
 ClearVariable(sortacckosgu);
 ClearVariable(sortacckosgu1);
 ClearVariable(addaccnil);
 if версия_='2010':
   for z=1..ПозицииЗаменаФКР do
     ss=ФКР2009[z]+'.'+КОСГУ2009[z];
     if length(ss)=24:
       addinarray(sortacckosgu,true,false,ss);
     fi;
     ss=ФКР2010[z]+'.'+КОСГУ2010[z];
     if length(ss)=24:
       addinarray(sortacckosgu1,true,false,ss);
     fi;
   od;
  |  версия_='2011':
   for z=1..ПозицииЗаменаФКР2011 do
     ss=ФКР2011до[z]+'.'+КОСГУ2011до[z];
     if length(ss)=24:
       addinarray(sortacckosgu,true,false,ss);
     fi;
     ss=ФКР2011[z]+'.'+КОСГУ2011[z];
     if length(ss)=24:
       addinarray(sortacckosgu1,true,false,ss);
     fi;
   od;
 fi;
end;
Proc createnot_dv_im_nfa;
 var t:i;
 ClearVariable(not_dv_im_nfa);
 ClearVariable(СписокНИ);
 for t=1..ПозицииНастройкаНИ do
     ЗагрузитьСписокНИ(GetFilterНИ(t));    -- GetFilterНИ
 od;
 CopyArray(СписокНИ,not_dv_im_nfa);
 Позицииnot_dv_im_nfa=LengthOfArray(not_dv_im_nfa);
end;
Proc createsortacc(версия_:s);
 var z,p:i;
 var ss:s;
 ClearVariable(sortacc);
 ClearVariable(sortacc1);
 ClearVariable(sortacc2);
 ClearVariable(sortacc3);
 p=Раб.СТР.НомерСловаВстроке('2011',версия_,'|');
 if p>0:
    z=lengthofarray(sortacc1);

    --???.????.???????.???.?.???.??.???
    ss='???.????.???????.???.2.???.??.???@???.????.???????.???.1.???.??.???@???.????.???????.???.1.???.??.???'      ;z=z+1;sortacc1[z]=ss;
    ss='???.????.???????.???.?.104.01.???@???.????.???????.???.?.104.31.???@???.????.???????.???.?.104.11.???'      ;z=z+1;sortacc1[z]=ss;
    ss='???.????.???????.???.?.101.02.???@???.????.???????.???.?.101.32.???@???.????.???????.???.?.101.12.???'      ;z=z+1;sortacc1[z]=ss;
    ss='???.????.???????.???.?.104.02.???@???.????.???????.???.?.104.32.???@???.????.???????.???.?.104.12.???'      ;z=z+1;sortacc1[z]=ss;
    ss='???.????.???????.???.?.101.03.???@???.????.???????.???.?.101.33.???@???.????.???????.???.?.101.13.???'      ;z=z+1;sortacc1[z]=ss;
    ss='???.????.???????.???.?.104.03.???@???.????.???????.???.?.104.33.???@???.????.???????.???.?.104.13.???'      ;z=z+1;sortacc1[z]=ss;
    ss='???.????.???????.???.?.101.04.???@???.????.???????.???.?.101.34.???@???.????.???????.???.?.101.34.???'      ;z=z+1;sortacc1[z]=ss;
    ss='???.????.???????.???.?.104.04.???@???.????.???????.???.?.104.34.???@???.????.???????.???.?.104.34.???'      ;z=z+1;sortacc1[z]=ss;
    ss='???.????.???????.???.?.101.05.???@???.????.???????.???.?.101.35.???@???.????.???????.???.?.101.15.???'      ;z=z+1;sortacc1[z]=ss;
    ss='???.????.???????.???.?.104.05.???@???.????.???????.???.?.104.35.???@???.????.???????.???.?.104.15.???'      ;z=z+1;sortacc1[z]=ss;
    ss='???.????.???????.???.?.101.06.???@???.????.???????.???.?.101.36.???@???.????.???????.???.?.101.36.???'      ;z=z+1;sortacc1[z]=ss;
    ss='???.????.???????.???.?.104.06.???@???.????.???????.???.?.104.36.???@???.????.???????.???.?.104.36.???'      ;z=z+1;sortacc1[z]=ss;
    ss='???.????.???????.???.?.101.07.???@???.????.???????.???.?.101.37.???@???.????.???????.???.?.101.37.???'      ;z=z+1;sortacc1[z]=ss;
    ss='???.????.???????.???.?.104.07.???@???.????.???????.???.?.104.37.???@???.????.???????.???.?.104.37.???'      ;z=z+1;sortacc1[z]=ss;
    ss='???.????.???????.???.?.101.09.???@???.????.???????.???.?.101.38.???@???.????.???????.???.?.101.18.???'      ;z=z+1;sortacc1[z]=ss;
    ss='???.????.???????.???.?.101.08.???@???.????.???????.???.?.101.38.???@???.????.???????.???.?.101.18.???'      ;z=z+1;sortacc1[z]=ss;
    ss='???.????.???????.???.?.104.08.???@???.????.???????.???.?.104.38.???@???.????.???????.???.?.104.18.???'      ;z=z+1;sortacc1[z]=ss;

    ss='???.?.??.?????.??.????.2.???.??.???@???.?.??.?????.??.????.1.???.??.???@???.?.??.?????.??.????.1.???.??.???';z=z+1;sortacc1[z]=ss;
    ss='???.????.???????.???.?.106.01.4??@???.????.???????.???.?.106.31.4??@???.????.???????.???.?.106.11.4??'      ;z=z+1;sortacc1[z]=ss;
    ss='???.????.???????.???.?.106.02.???@???.????.???????.???.?.106.32.???@???.????.???????.???.?.106.32.???'      ;z=z+1;sortacc1[z]=ss;
    ss='???.????.???????.???.?.106.03.???@???.????.???????.???.?.106.13.???@???.????.???????.???.?.106.13.???'      ;z=z+1;sortacc1[z]=ss;
    ss='???.????.???????.???.?.106.04.???@???.????.???????.???.?.106.34.???@???.????.???????.???.?.106.34.???'      ;z=z+1;sortacc1[z]=ss;

    ss='???.????.???????.???.?.107.01.???@???.????.???????.???.?.107.31.???@???.????.???????.???.?.107.31.???'      ;z=z+1;sortacc1[z]=ss;
    ss='???.????.???????.???.?.107.03.???@???.????.???????.???.?.107.33.???@???.????.???????.???.?.107.33.???'      ;z=z+1;sortacc1[z]=ss;

    ss='???.????.???????.???.?.102.01.???@???.????.???????.???.?.102.30.???@???.????.???????.???.?.102.30.???'      ;z=z+1;sortacc1[z]=ss;
    ss='???.????.???????.???.?.104.09.???@???.????.???????.???.?.104.39.???@???.????.???????.???.?.104.39.???'      ;z=z+1;sortacc1[z]=ss;

    ss='???.????.???????.???.?.103.01.???@???.????.???????.???.?.103.11.???@???.????.???????.???.?.103.11.???'      ;z=z+1;sortacc1[z]=ss;
    ss='???.????.???????.???.?.103.02.???@???.????.???????.???.?.103.12.???@???.????.???????.???.?.103.12.???'      ;z=z+1;sortacc1[z]=ss;
    ss='???.????.???????.???.?.103.03.???@???.????.???????.???.?.103.13.???@???.????.???????.???.?.103.13.???'      ;z=z+1;sortacc1[z]=ss;

    ss='???.????.???????.???.?.105.01.???@???.????.???????.???.?.105.31.???@???.????.???????.???.?.105.31.???'      ;z=z+1;sortacc1[z]=ss;
    ss='???.????.???????.???.?.105.02.???@???.????.???????.???.?.105.32.???@???.????.???????.???.?.105.32.???'      ;z=z+1;sortacc1[z]=ss;
    ss='???.????.???????.???.?.105.03.???@???.????.???????.???.?.105.33.???@???.????.???????.???.?.105.33.???'      ;z=z+1;sortacc1[z]=ss;
    ss='???.????.???????.???.?.105.04.???@???.????.???????.???.?.105.34.???@???.????.???????.???.?.105.34.???'      ;z=z+1;sortacc1[z]=ss;
    ss='???.????.???????.???.?.105.05.???@???.????.???????.???.?.105.35.???@???.????.???????.???.?.105.35.???'      ;z=z+1;sortacc1[z]=ss;
    ss='???.????.???????.???.?.105.06.???@???.????.???????.???.?.105.36.???@???.????.???????.???.?.105.36.???'      ;z=z+1;sortacc1[z]=ss;
    ss='???.????.???????.???.?.105.07.???@???.????.???????.???.?.105.37.???@???.????.???????.???.?.105.37.???'      ;z=z+1;sortacc1[z]=ss;

    ss='???.????.???????.???.?.208.19.???@???.????.???????.???.?.208.31.???@???.????.???????.???.?.208.31.???'      ;z=z+1;sortacc1[z]=ss;
    ss='???.????.???????.???.?.208.20.???@???.????.???????.???.?.208.32.???@???.????.???????.???.?.208.32.???'      ;z=z+1;sortacc1[z]=ss;
    ss='???.????.???????.???.?.208.22.???@???.????.???????.???.?.208.34.???@???.????.???????.???.?.208.34.???'      ;z=z+1;sortacc1[z]=ss;

    ss='???.????.???????.???.?.302.19.???@???.????.???????.???.?.302.31.???@???.????.???????.???.?.302.31.???'      ;z=z+1;sortacc1[z]=ss;
    ss='???.????.???????.???.?.302.20.???@???.????.???????.???.?.302.32.???@???.????.???????.???.?.302.32.???'      ;z=z+1;sortacc1[z]=ss;
    ss='???.????.???????.???.?.302.21.???@???.????.???????.???.?.302.33.???@???.????.???????.???.?.302.33.???'      ;z=z+1;sortacc1[z]=ss;
    ss='???.????.???????.???.?.302.22.???@???.????.???????.???.?.302.34.???@???.????.???????.???.?.302.34.???'      ;z=z+1;sortacc1[z]=ss;

    ss='???.?.??.?????.??.????.?.401.01.1??@???.?.??.?????.??.????.?.401.10.1??@???.?.??.?????.??.????.?.401.10.1??';z=z+1;sortacc1[z]=ss;
    ss='???.????.???????.???.?.401.01.2??@???.????.???????.???.?.401.20.2??@???.????.???????.???.?.401.20.2??'      ;z=z+1;sortacc1[z]=ss;

    ss='ЗАБ.??.101.09@ЗАБ.??.101.08@ЗАБ.??.101.08'                                                                  ;z=z+1;sortacc1[z]=ss;
    ss='ЗАБ.??.102.01@ЗАБ.??.102.00@ЗАБ.??.102.00'                                                                  ;z=z+1;sortacc1[z]=ss;


    --ss='???.????.???????.???.?.401.03.???|???.????.???????.???.?.401.30.???|???.????.???????.???.?.401.30.???'    ;z=z+1;sortacc1[z]=ss;
    --ss='???.????.???????.???.?.401.04.???|???.????.???????.???.?.401.40.???|???.????.???????.???.?.401.40.???'    ;z=z+1;sortacc1[z]=ss;
 fi;
 p=Раб.СТР.НомерСловаВстроке('2011ДНФА_СЧЕТ',версия_,'|');
 if p>0:
    if 1=0:
      z=lengthofarray(sortacc1);
      ss='.101.01.@.101.?1.@ @1'     ;z=z+1;sortacc1[z]=ss;
      ss='.104.01.@.104.?1.@ @1'     ;z=z+1;sortacc1[z]=ss;
      ss='.101.02.@.101.?2.@ @1'     ;z=z+1;sortacc1[z]=ss;
      ss='.104.02.@.104.?2.@ @1'     ;z=z+1;sortacc1[z]=ss;
      ss='.101.03.@.101.?3.@ @1'     ;z=z+1;sortacc1[z]=ss;
      ss='.104.03.@.104.?3.@ @1'     ;z=z+1;sortacc1[z]=ss;
      ss='.101.05.@.101.?5.@ @1'     ;z=z+1;sortacc1[z]=ss;
      ss='.104.05.@.104.?5.@ @1'     ;z=z+1;sortacc1[z]=ss;
      ss='.104.08.@.104.?8.@ @1'     ;z=z+1;sortacc1[z]=ss;
      ss='.101.09.@.101.?8.@ @1'     ;z=z+1;sortacc1[z]=ss;

      ss='.106.01.3@.106.?1.3@ @1'   ;z=z+1;sortacc1[z]=ss;
      ss='.106.01.4@.106.?1.4@ @1'   ;z=z+1;sortacc1[z]=ss;
      ss='.106.04.@.106.34.@ @1'     ;z=z+1;sortacc1[z]=ss;

      ss='.107.01.@.107.?1.@ @1'     ;z=z+1;sortacc1[z]=ss;
      ss='.107.03.@.107.?3.@ @1'     ;z=z+1;sortacc1[z]=ss;





      ss='.???.19@.???.31@ @1'       ;z=z+1;sortacc1[z]=ss;
      ss='.???.20@.???.32@ @1'       ;z=z+1;sortacc1[z]=ss;
      ss='.???.21@.???.33@ @1'       ;z=z+1;sortacc1[z]=ss;
      ss='.???.22@.???.34@ @1'       ;z=z+1;sortacc1[z]=ss;

      ss='.401.01.1@.401.10.1@ @1'   ;z=z+1;sortacc1[z]=ss;
      ss='.401.01.2@.401.20.2@ @1'   ;z=z+1;sortacc1[z]=ss;
      ss='.401.01.@.401.?0.@ @1'     ;z=z+1;sortacc1[z]=ss;
   ---------------------------- список - прямая замена ----------------

      ss='.105.01.@.105.31.'         ;z=z+1;sortacc1[z]=ss;
      ss='.105.02.@.105.32.'         ;z=z+1;sortacc1[z]=ss;
      ss='.105.03.@.105.33.'         ;z=z+1;sortacc1[z]=ss;
      ss='.105.04.@.105.34.'         ;z=z+1;sortacc1[z]=ss;
      ss='.105.05.@.105.35.'         ;z=z+1;sortacc1[z]=ss;
      ss='.105.06.@.105.36.'         ;z=z+1;sortacc1[z]=ss;
      ss='.105.07.@.105.37.'         ;z=z+1;sortacc1[z]=ss;
      ss='.103.01.@.103.11.'         ;z=z+1;sortacc1[z]=ss;
      ss='.103.02.@.103.12.'         ;z=z+1;sortacc1[z]=ss;
      ss='.103.03.@.103.13.'         ;z=z+1;sortacc1[z]=ss;
      ss='.102.01.@.102.30.'         ;z=z+1;sortacc1[z]=ss;
      ss='.104.09.@.104.39.'         ;z=z+1;sortacc1[z]=ss;
      ss='.101.04.@.101.34.'         ;z=z+1;sortacc1[z]=ss;
      ss='.104.04.@.104.34.'         ;z=z+1;sortacc1[z]=ss;
      ss='.101.06.@.101.36.'         ;z=z+1;sortacc1[z]=ss;
      ss='.104.06.@.104.36.'         ;z=z+1;sortacc1[z]=ss;
      ss='.101.07.@.101.37.'         ;z=z+1;sortacc1[z]=ss;
      ss='.104.07.@.104.37.'         ;z=z+1;sortacc1[z]=ss;
      ss='.106.02.@.106.32.'         ;z=z+1;sortacc1[z]=ss;
      ss='.106.03.@.106.13.'         ;z=z+1;sortacc1[z]=ss;
    fi;
--обязательный (НФА.101.*|НФА.102.*)&~(НФА.101.07.*|НФА.101.08.*)
--ответ *.?.401.01.271|*2.106.04.340
--ответ ((*.208.??.6??|*.302.??.7??)&(*.???.19.???|*.???.20.???|*.???.21.???|*.???.22.???))|*.304.04.3??|*.107.??.4??
--ответ *.?.401.01.172|*.?.401.01.273|*.2.106.04.340|ЗАБАЛАНС
--ответ *.?.401.01.272|*.?.401.01.273|*.2.106.04.340|ЗАБАЛАНС
--ответ *.?.401.01.271|*.?.401.01.272|*.?.401.01.273|*.2.106.04.340|ЗАБАЛАНС
--ответ *.?.106.0?.3?0
--ответ *.?.106.0?.4?0
--*.?.401.01.241
--*.1.401.01.180


    --ss='???.????.???????.???.?.401.03.???|???.????.???????.???.?.401.30.???|???.????.???????.???.?.401.30.???';addinarray(sortacc1,true,false,ss);
    --ss='???.????.???????.???.?.401.04.???|???.????.???????.???.?.401.40.???|???.????.???????.???.?.401.40.???';addinarray(sortacc1,true,false,ss);

-------------------------------------------------------------------------
--???.????.???????.???.?.101.01.???|???.????.???????.???.?.101.11.???|*примечание|
--???.????.???????.???.?.104.01.???|???.????.???????.???.?.104.11.???| |
--???.????.???????.???.?.101.02.???|???.????.???????.???.?.101.12.???| |
--???.????.???????.???.?.104.02.???|???.????.???????.???.?.104.12.???| |
--???.????.???????.???.?.101.03.???|???.????.???????.???.?.101.13.???| |
--???.????.???????.???.?.104.03.???|???.????.???????.???.?.104.13.???| |
--???.????.???????.???.?.101.05.???|???.????.???????.???.?.101.15.???| |
--???.????.???????.???.?.104.05.???|???.????.???????.???.?.104.15.???| |
--???.????.???????.???.?.101.09.???|???.????.???????.???.?.101.18.???| |
--???.????.???????.???.?.104.08.???|???.????.???????.???.?.104.18.???| |
--???.????.???????.???.?.106.01.???|???.????.???????.???.?.106.11.???| |
--???.????.???????.???.?.107.01.???|???.????.???????.???.?.107.11.???| |

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

--???.????.???????.???.?.105.01.???|???.????.???????.???.?.105.38.???|* в части ценностей, предназначенных для реализации|
--???.????.???????.???.?.105.02.???|???.????.???????.???.?.105.38.???|* в части ценностей, предназначенных для реализации|
--???.????.???????.???.?.105.05.???|???.????.???????.???.?.105.38.???|* в части ценностей, предназначенных для реализации|
--???.????.???????.???.?.105.06.???|???.????.???????.???.?.105.38.???|* в части ценностей, предназначенных для реализации|



--???.????.???????.???.?.106.04.???|???.????.???????.???.?.109.61.211| |КОСГУ.211
--???.????.???????.???.?.106.04.???|???.????.???????.???.?.109.61.212| |КОСГУ.212
--???.????.???????.???.?.106.04.???|???.????.???????.???.?.109.61.213| |КОСГУ.213
--???.????.???????.???.?.106.04.???|???.????.???????.???.?.109.61.221| |КОСГУ.221
--???.????.???????.???.?.106.04.???|???.????.???????.???.?.109.61.222| |КОСГУ.222
--???.????.???????.???.?.106.04.???|???.????.???????.???.?.109.61.223| |КОСГУ.223
--???.????.???????.???.?.106.04.???|???.????.???????.???.?.109.61.224| |КОСГУ.224
--???.????.???????.???.?.106.04.???|???.????.???????.???.?.109.61.225| |КОСГУ.225
--???.????.???????.???.?.106.04.???|???.????.???????.???.?.109.61.226| |КОСГУ.226
--???.????.???????.???.?.106.04.???|???.????.???????.???.?.109.61.271| |КОСГУ.271
--???.????.???????.???.?.106.04.???|???.????.???????.???.?.109.61.272| |КОСГУ.272
--???.????.???????.???.?.106.04.???|???.????.???????.???.?.109.61.290| |КОСГУ.290


 fi;
ПозицииЗаменаСчетов2011=lengthofarray(sortacc1);
for z=1..ПозицииЗаменаСчетов2011 do
  sortacc [z]=ВыделитьСлово(1,sortacc1[z],'@');
  sortacc2[z]=ВыделитьСлово(3,sortacc1[z],'@');
  sortacc3[z]=ВыделитьСлово(4,sortacc1[z],'@');
  sortacc1[z]=ВыделитьСлово(2,sortacc1[z],'@');
od;

end;
Proc createsortan(версия_:s);
 var z,p:i;
 var ss:s;
 ClearVariable(sortan);
 ClearVariable(sortan1);
 ClearVariable(sortan2);
 ClearVariable(sortan3);
 p=Раб.СТР.НомерСловаВстроке('2011',версия_,'|');
 if p>0:
    z=lengthofarray(sortan1);
    ss='НФА.101.09@НФА.101.08'     ;z=z+1;sortan1[z]=ss;
    ss='НФА.102.01@НФА.102.00'     ;z=z+1;sortan1[z]=ss;
 fi;
 p=Раб.СТР.НомерСловаВстроке('2011ДНФА_СЧЕТ',версия_,'|');
 if p>0:
    z=lengthofarray(sortan1);
      ss='(НФА.101.*|НФА.102.*)&~(НФА.101.08.*)@(НФА.101.*|НФА.102.*)';z=z+1;sortan1[z]=ss;
      ss='&~(НФА.101.07.*|НФА.101.08.*)@ ';z=z+1;sortan1[z]=ss;
      ss='&~(НФА.101.08.*)@ '        ;z=z+1;sortan1[z]=ss;
      ss='&~НФА.101.08.*@ '          ;z=z+1;sortan1[z]=ss;
--    ss='НФА.101.09@НФА.101.08'     ;z=z+1;sortan1[z]=ss;
        ss='401.01.1@401.10.1'       ;z=z+1;sortan1[z]=ss;
        ss='401.0?.1@401.10.1'       ;z=z+1;sortan1[z]=ss;
        ss='401.01.2@401.20.2'       ;z=z+1;sortan1[z]=ss;
        ss='401.0?.2@401.20.2'       ;z=z+1;sortan1[z]=ss;
        ss='401.01.@401.??.'         ;z=z+1;sortan1[z]=ss;
        ss='.401.0@.401.?'           ;z=z+1;sortan1[z]=ss;
        ss='*401.0@*401.?'           ;z=z+1;sortan1[z]=ss;
        ss='106.04.@106.34.'         ;z=z+1;sortan1[z]=ss;
        ss='106.01.@106.?1.'         ;z=z+1;sortan1[z]=ss;
        ss='106.02.@106.32.'         ;z=z+1;sortan1[z]=ss;
        ss='106.03.@106.13.'         ;z=z+1;sortan1[z]=ss;
        ss='106.0?.@106.??.'         ;z=z+1;sortan1[z]=ss;
        ss='101.01.@101.?1.'         ;z=z+1;sortan1[z]=ss;
        ss='104.01.@104.?1.'         ;z=z+1;sortan1[z]=ss;
        ss='101.02.@101.?2.'         ;z=z+1;sortan1[z]=ss;
        ss='104.02.@104.?2.'         ;z=z+1;sortan1[z]=ss;
        ss='101.03.@101.?3.'         ;z=z+1;sortan1[z]=ss;
        ss='104.03.@104.?3.'         ;z=z+1;sortan1[z]=ss;
        ss='101.04.@101.?4.'         ;z=z+1;sortan1[z]=ss;
        ss='104.04.@104.?4.'         ;z=z+1;sortan1[z]=ss;
        ss='101.05.@101.?5.'         ;z=z+1;sortan1[z]=ss;
        ss='104.05.@104.?5.'         ;z=z+1;sortan1[z]=ss;
        ss='101.06.@101.?6.'         ;z=z+1;sortan1[z]=ss;
        ss='104.06.@104.?6.'         ;z=z+1;sortan1[z]=ss;
        ss='101.07.@101.?7.'         ;z=z+1;sortan1[z]=ss;
        ss='104.07.@104.?7.'         ;z=z+1;sortan1[z]=ss;
        ss='104.08.@104.?8.'         ;z=z+1;sortan1[z]=ss;
        ss='101.09.@101.?8.'         ;z=z+1;sortan1[z]=ss;
        ss='101.0?.@101.??.'         ;z=z+1;sortan1[z]=ss;
        ss='105.01.@105.31.'         ;z=z+1;sortan1[z]=ss;
        ss='105.02.@105.32.'         ;z=z+1;sortan1[z]=ss;
        ss='105.03.@105.33.'         ;z=z+1;sortan1[z]=ss;
        ss='105.04.@105.34.'         ;z=z+1;sortan1[z]=ss;
        ss='105.05.@105.35.'         ;z=z+1;sortan1[z]=ss;
        ss='105.06.@105.36.'         ;z=z+1;sortan1[z]=ss;
        ss='105.07.@105.37.'         ;z=z+1;sortan1[z]=ss;
        ss='105.0?.@105.3?.'         ;z=z+1;sortan1[z]=ss;
        ss='103.01.@103.11.'         ;z=z+1;sortan1[z]=ss;
        ss='103.02.@103.12.'         ;z=z+1;sortan1[z]=ss;
        ss='103.03.@103.13.'         ;z=z+1;sortan1[z]=ss;
        ss='103.0?.@103.1?.'         ;z=z+1;sortan1[z]=ss;
        ss='102.01.@102.3?.'         ;z=z+1;sortan1[z]=ss;
        ss='102.0?.@102.3?.'         ;z=z+1;sortan1[z]=ss;
        ss='104.09.@104.39.'         ;z=z+1;sortan1[z]=ss;
        ss='104.0?.@104.??.'         ;z=z+1;sortan1[z]=ss;
        ss='208.19.@208.31.'         ;z=z+1;sortan1[z]=ss;
        ss='208.20.@208.32.'         ;z=z+1;sortan1[z]=ss;
        ss='208.22.@208.34.'         ;z=z+1;sortan1[z]=ss;
        ss='302.19.@302.31.'         ;z=z+1;sortan1[z]=ss;
        ss='302.20.@302.32.'         ;z=z+1;sortan1[z]=ss;
        ss='302.21.@302.33.'         ;z=z+1;sortan1[z]=ss;
        ss='302.22.@302.34.'         ;z=z+1;sortan1[z]=ss;
        ss='.???.19.@.???.31.'       ;z=z+1;sortan1[z]=ss;
        ss='.???.20.@.???.32.'       ;z=z+1;sortan1[z]=ss;
        ss='.???.21.@.???.33.'       ;z=z+1;sortan1[z]=ss;
        ss='.???.22.@.???.34.'       ;z=z+1;sortan1[z]=ss;
        ss='2.106.34.340@2.109.60.27?';z=z+1;sortan1[z]=ss;
        ss='4.106.34.340@4.109.60.27?';z=z+1;sortan1[z]=ss;

--ответ *.?.401.01.271|*2.106.04.340
--ответ ((*.208.??.6??|*.302.??.7??)&(*.???.19.???|*.???.20.???|*.???.21.???|*.???.22.???))|*.304.04.3??|*.107.??.4??
--ответ *.?.401.01.172|*.?.401.01.273|*.2.106.04.340|ЗАБАЛАНС
--ответ *.?.401.01.272|*.?.401.01.273|*.2.106.04.340|ЗАБАЛАНС
--ответ *.?.401.01.271|*.?.401.01.272|*.?.401.01.273|*.2.106.04.340|ЗАБАЛАНС
--ответ *.?.106.0?.3?0
--ответ *.?.106.0?.4?0
--*.?.401.01.241
--*.1.401.01.180


--    ss='НФА.101.09@НФА.101.08'     ;z=z+1;sortan1[z]=ss;
--    ss='НФА.102.01@НФА.102.00'     ;z=z+1;sortan1[z]=ss;

--    ss='.101.01.@.101.?1.@ @1'     ;z=z+1;sortacc1[z]=ss;
--    ss='.104.01.@.104.?1.@ @1'     ;z=z+1;sortacc1[z]=ss;
--    ss='.101.02.@.101.?2.@ @1'     ;z=z+1;sortacc1[z]=ss;
--    ss='.104.02.@.104.?2.@ @1'     ;z=z+1;sortacc1[z]=ss;
--    ss='.101.03.@.101.?3.@ @1'     ;z=z+1;sortacc1[z]=ss;
--    ss='.104.03.@.104.?3.@ @1'     ;z=z+1;sortacc1[z]=ss;
--    ss='.101.05.@.101.?5.@ @1'     ;z=z+1;sortacc1[z]=ss;
--    ss='.104.05.@.104.?5.@ @1'     ;z=z+1;sortacc1[z]=ss;
--    ss='.104.08.@.104.?8.@ @1'     ;z=z+1;sortacc1[z]=ss;
--    ss='.101.09.@.101.?8.@ @1'     ;z=z+1;sortacc1[z]=ss;

--    ss='.106.01.3@.106.?1.3@ @1'   ;z=z+1;sortacc1[z]=ss;
--    ss='.106.01.4@.106.?1.4@ @1'   ;z=z+1;sortacc1[z]=ss;
--    ss='.106.04.@.106.34.@ @1'     ;z=z+1;sortacc1[z]=ss;

--    ss='.107.01.@.107.?1.@ @1'     ;z=z+1;sortacc1[z]=ss;
--    ss='.107.03.@.107.?3.@ @1'     ;z=z+1;sortacc1[z]=ss;





--    ss='.???.19@.???.31@ @1'       ;z=z+1;sortacc1[z]=ss;
--    ss='.???.20@.???.32@ @1'       ;z=z+1;sortacc1[z]=ss;
--    ss='.???.21@.???.33@ @1'       ;z=z+1;sortacc1[z]=ss;
--    ss='.???.22@.???.34@ @1'       ;z=z+1;sortacc1[z]=ss;

--    ss='.401.01.1@.401.10.1@ @1'   ;z=z+1;sortacc1[z]=ss;
--    ss='.401.01.2@.401.20.2@ @1'   ;z=z+1;sortacc1[z]=ss;
--    ss='.401.01.@.401.?0.@ @1'     ;z=z+1;sortacc1[z]=ss;
-- ---------------------------- список - прямая замена ----------------

--    ss='.105.01.@.105.31.'         ;z=z+1;sortacc1[z]=ss;
--    ss='.105.02.@.105.32.'         ;z=z+1;sortacc1[z]=ss;
--    ss='.105.03.@.105.33.'         ;z=z+1;sortacc1[z]=ss;
--    ss='.105.04.@.105.34.'         ;z=z+1;sortacc1[z]=ss;
--    ss='.105.05.@.105.35.'         ;z=z+1;sortacc1[z]=ss;
--    ss='.105.06.@.105.36.'         ;z=z+1;sortacc1[z]=ss;
--    ss='.105.07.@.105.37.'         ;z=z+1;sortacc1[z]=ss;
--    ss='.103.01.@.103.11.'         ;z=z+1;sortacc1[z]=ss;
--    ss='.103.02.@.103.12.'         ;z=z+1;sortacc1[z]=ss;
--    ss='.103.03.@.103.13.'         ;z=z+1;sortacc1[z]=ss;
--    ss='.102.01.@.102.30.'         ;z=z+1;sortacc1[z]=ss;
--    ss='.104.09.@.104.39.'         ;z=z+1;sortacc1[z]=ss;
--    ss='.101.04.@.101.34.'         ;z=z+1;sortacc1[z]=ss;
--    ss='.104.04.@.104.34.'         ;z=z+1;sortacc1[z]=ss;
--    ss='.101.06.@.101.36.'         ;z=z+1;sortacc1[z]=ss;
--    ss='.104.06.@.104.36.'         ;z=z+1;sortacc1[z]=ss;
--    ss='.101.07.@.101.37.'         ;z=z+1;sortacc1[z]=ss;
--    ss='.104.07.@.104.37.'         ;z=z+1;sortacc1[z]=ss;
--    ss='.106.02.@.106.32.'         ;z=z+1;sortacc1[z]=ss;
--    ss='.106.03.@.106.13.'         ;z=z+1;sortacc1[z]=ss;

--обязательный (НФА.101.*|НФА.102.*)&~(НФА.101.07.*|НФА.101.08.*)

--ответ *.?.401.01.271|*2.106.04.340
--ответ ((*.208.??.6??|*.302.??.7??)&(*.???.19.???|*.???.20.???|*.???.21.???|*.???.22.???))|*.304.04.3??|*.107.??.4??
--ответ *.?.401.01.172|*.?.401.01.273|*.2.106.04.340|ЗАБАЛАНС
--ответ *.?.401.01.272|*.?.401.01.273|*.2.106.04.340|ЗАБАЛАНС
--ответ *.?.401.01.271|*.?.401.01.272|*.?.401.01.273|*.2.106.04.340|ЗАБАЛАНС
--ответ *.?.106.0?.3?0
--ответ *.?.106.0?.4?0
--*.?.401.01.241
--*.1.401.01.180


    --ss='???.????.???????.???.?.401.03.???|???.????.???????.???.?.401.30.???|???.????.???????.???.?.401.30.???';addinarray(sortacc1,true,false,ss);
    --ss='???.????.???????.???.?.401.04.???|???.????.???????.???.?.401.40.???|???.????.???????.???.?.401.40.???';addinarray(sortacc1,true,false,ss);

-------------------------------------------------------------------------
--???.????.???????.???.?.101.01.???|???.????.???????.???.?.101.11.???|*примечание|
--???.????.???????.???.?.104.01.???|???.????.???????.???.?.104.11.???| |
--???.????.???????.???.?.101.02.???|???.????.???????.???.?.101.12.???| |
--???.????.???????.???.?.104.02.???|???.????.???????.???.?.104.12.???| |
--???.????.???????.???.?.101.03.???|???.????.???????.???.?.101.13.???| |
--???.????.???????.???.?.104.03.???|???.????.???????.???.?.104.13.???| |
--???.????.???????.???.?.101.05.???|???.????.???????.???.?.101.15.???| |
--???.????.???????.???.?.104.05.???|???.????.???????.???.?.104.15.???| |
--???.????.???????.???.?.101.09.???|???.????.???????.???.?.101.18.???| |
--???.????.???????.???.?.104.08.???|???.????.???????.???.?.104.18.???| |
--???.????.???????.???.?.106.01.???|???.????.???????.???.?.106.11.???| |
--???.????.???????.???.?.107.01.???|???.????.???????.???.?.107.11.???| |

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

--???.????.???????.???.?.105.01.???|???.????.???????.???.?.105.38.???|* в части ценностей, предназначенных для реализации|
--???.????.???????.???.?.105.02.???|???.????.???????.???.?.105.38.???|* в части ценностей, предназначенных для реализации|
--???.????.???????.???.?.105.05.???|???.????.???????.???.?.105.38.???|* в части ценностей, предназначенных для реализации|
--???.????.???????.???.?.105.06.???|???.????.???????.???.?.105.38.???|* в части ценностей, предназначенных для реализации|



--???.????.???????.???.?.106.04.???|???.????.???????.???.?.109.61.211| |КОСГУ.211
--???.????.???????.???.?.106.04.???|???.????.???????.???.?.109.61.212| |КОСГУ.212
--???.????.???????.???.?.106.04.???|???.????.???????.???.?.109.61.213| |КОСГУ.213
--???.????.???????.???.?.106.04.???|???.????.???????.???.?.109.61.221| |КОСГУ.221
--???.????.???????.???.?.106.04.???|???.????.???????.???.?.109.61.222| |КОСГУ.222
--???.????.???????.???.?.106.04.???|???.????.???????.???.?.109.61.223| |КОСГУ.223
--???.????.???????.???.?.106.04.???|???.????.???????.???.?.109.61.224| |КОСГУ.224
--???.????.???????.???.?.106.04.???|???.????.???????.???.?.109.61.225| |КОСГУ.225
--???.????.???????.???.?.106.04.???|???.????.???????.???.?.109.61.226| |КОСГУ.226
--???.????.???????.???.?.106.04.???|???.????.???????.???.?.109.61.271| |КОСГУ.271
--???.????.???????.???.?.106.04.???|???.????.???????.???.?.109.61.272| |КОСГУ.272
--???.????.???????.???.?.106.04.???|???.????.???????.???.?.109.61.290| |КОСГУ.290


 fi;
ПозицииЗаменаАналитики2011=lengthofarray(sortan1);
for z=1..ПозицииЗаменаАналитики2011 do
  sortan [z]=ВыделитьСлово(1,sortan1[z],'@');
  sortan2[z]=ВыделитьСлово(3,sortan1[z],'@');
  sortan3[z]=ВыделитьСлово(4,sortan1[z],'@');
  sortan1[z]=ВыделитьСлово(2,sortan1[z],'@');
od;

end;

Func ЗаменитьФКР_field(ss:s;ksgu:s;typ:i):s; --замена ФКР в строке по подстрокам
 var z:i;
 var ss0,sshistory:s;
   ss0=trim(ss);
   lastfkr='';
   for z=1..ПозицииЗаменаФКР do
     if КОСГУ2009[z]=ksgu:-- замена по косгу
        if match(ФКР2010[z],'???.????.???????.???'):
          ss=ЗаменаПодстроки_маска(ss,ФКР2009[z],ФКР2010[z]);
          if ss<>ss0:lastfkr=ФКР2009[z];endkosgu=ksgu;kolrepl=kolrepl+1; -- прошла замена
            if typ=0:
              ss=trim(ss);
              if match(ss,'???.????.???????.???.?.???.??.???'):
                if Name_S(ss)=' ':addinarray(addacc,true,false,ss);fi;
              fi;
            fi;
            break; -- только если в проводке аналитика ФКР всегда совпадает с ФКР в счете
          fi;
        fi;
     fi;
   od;
   if ss=ss0 and typ=0: --нет замены для счета
      if pos('.0000.0000000.000.2',ss0)<>4:-- бюджет!, должна быть замена!
         if match(ss,'???.????.???????.???.?.???.??.???'):
           ss0=SubStr(ss0,1,20)+'.'+ksgu;
           if ПоискВмассиве(sortacckosgu1,ss0,true)<1:-- нет в уже сконвертированных счетах!
              if ПоискВмассиве(sortacckosgu,ss0,true)<1:-- нет в счетах для конвертации!
                addinarray(addaccnil,true,false,ss0);--добавляем в список счетов без настройки!
              fi;
           fi;
         fi;
--         if ПоискВмассиве(addacc,ss0,true)<1:-- нет в уже сконвертированных и отсутствующих в плане счетах!
--            if Name_S(ss)=' ':addinarray(addacc,true,false,ss);fi;
--         fi;
      fi;
   fi;
   ^ss;
end;
Func ЗаменитьЗАБ00_field(ss:s;typ:i):s; --замена ЗАБ00 в строке по подстрокам
 var z:i;
 var ss0,ss1,ss2:s;
   ss=trim(ss);
   ss0=ss;
   if typ=-1: -- условие на остатки
     z=pos('{',ss);
     if z<1:z=256;fi;
     ss2=trim(SubStr(ss,1,z-1));
     ss1=trim(ЗаменаПодстроки_маска(ss2,'ЗАБ.00.','ЗАБ.21.'));
     ss=ss1+SubStr(ss,z,255);
    | typ=0:ss=ЗаменаПодстроки_маска(ss,'ЗАБ.00.','ЗАБ.21.');ss1=ss;
   fi;
   if ss<>ss0:kolrepl=kolrepl+1; -- прошла замена
         if Name_S(ss1)=' ':
            if ValidSign(ss1):
               addinarray(addacc,true,false,ss);
            fi;
         fi;
   fi;

   ^ss;
end;

Proc ЗаменитьФКР_war(wa:i;stab:s;fnfa:s;fHistory:s;fcrd:s); -- замена по подтаблице
 var war,rs,rs1,z,lf,lf0,t,x,i,kolrepl0:i;
 var nfa,ss,ksgu,ss0,sshistory:s;
 var lhistorynil:l;
 lf=LengthOfArray(fields);
 lf0=LengthOfArray(fields0);
 rs=Records(wa);
   if stab<>'':war=OpenArray(wa,1,stab,'');fi;
     for t=1..rs do
      ProgressPos(t);
      if stab<>'':
        ss=GetFieldS(wa,t,fcrd);-- автокурсор на запись при чтении
        rs1=records(war);
        if rs1>0:-- подтаблица не пустая - работаем...
  --        endkosgu='';
          for z=1..rs1 do
           nfa=GetFieldS(war,z,fnfa);
           ksgu='';
           if pos('НФА.101.',nfa)=1:ksgu='310';
            | pos('НФА.102.',nfa)=1:ksgu='320';
            | pos('НФА.103.',nfa)=1:ksgu='330';
            | pos('НФА.105.',nfa)=1:ksgu='340';
           fi;
           if ksgu<>'':
             lhistorynil=false;
             if fHistory<>'':sshistory=trim(GetFieldS(war,z,fHistory));lhistorynil=Length(sshistory)<20;fi;
             for x=1..lf do -- замена по каждому полю
              ss0=up(GetFieldS(war,z,fields[x]));
--              Флаг_ЗАБ21
              if length(ss0)>19 or (Флаг_ЗАБ21 and fields_[x]<1 and pos('ЗАБ.00.',ss0)>0)  :-- проверка на возможность наличия ФКР или замены ЗАБ.00 на ЗАБ.21
                kolrepl0=kolrepl;
                ss=ЗаменитьФКР_field(ss0,ksgu,fields_[x]);
                if (Флаг_ЗАБ21 and fields_[x]<1 and pos('ЗАБ.00.',ss0)>0):
                    ss=ЗаменитьЗАБ00_field(ss,fields_[x]);
                fi;
                if lastfkr<>'' or kolrepl>kolrepl0:--прошла замена
                   i=PutFieldS(war,z,fields[x],ss);
                   if lhistorynil:-- требуется запись истории ФКР
                      i=PutFieldS(war,z,fHistory,lastfkr);
                      lhistorynil=false;
                   fi;
                   --trace(fields[x]+'='+ss0+'='+ss);
                fi;
              fi;
             od;
           fi;
          od;
        fi;
      fi;
      -------- замена полей картотеки ----------
      if stab    ='':-- в картотеке плановая замена
         nfa=GetFieldS(wa,t,fnfa);
         ksgu='';
         if pos('НФА.101.',nfa)=1:ksgu='310';
          | pos('НФА.102.',nfa)=1:ksgu='320';
          | pos('НФА.103.',nfa)=1:ksgu='330';
          | pos('НФА.105.',nfa)=1:ksgu='340';
         fi;
         if ksgu<>'':
           for x=1..lf0 do -- замена по каждому полю
            ss0=up(GetFieldS(wa,t,fields0[x]));
            if length(ss0)>19 or (Флаг_ЗАБ21 and fields0_[x]<1 and pos('ЗАБ.00.',ss0)>0)  :-- проверка на возможность наличия ФКР или замены ЗАБ.00 на ЗАБ.21
                kolrepl0=kolrepl;
              ss=ЗаменитьФКР_field(ss0,ksgu,fields0_[x]);
              if (Флаг_ЗАБ21 and fields0_[x]<1 and pos('ЗАБ.00.',ss0)>0):
                 ss=ЗаменитьЗАБ00_field(ss,fields0_[x]);
              fi;
              if lastfkr<>'' or kolrepl>kolrepl0:--прошла замена
                 i=PutFieldS(wa,t,fields0[x],ss);
              fi;
            fi;
           od;
         fi;

--            stab    ='';
--            fnfa    =fieldskosgu[i1];
--            fHistory='';
            ---------------------------------------------------
            --ЗаменитьФКР_war(wa,stab,fnfa,fHistory,fieldscur);
       | true:
         if endkosgu<>'':
           for x=1..lf0 do -- замена по каждому полю
            ss0=up(GetFieldS(wa,t,fields0[x]));
            if length(ss0)>19 or (Флаг_ЗАБ21 and fields0_[x]<1 and pos('ЗАБ.00.',ss0)>0)  :-- проверка на возможность наличия ФКР или замены ЗАБ.00 на ЗАБ.21
              ss=ЗаменитьФКР_field(ss0,endkosgu,fields0_[x]);
              if (Флаг_ЗАБ21 and fields0_[x]<1 and pos('ЗАБ.00.',ss0)>0):
                  ss=ЗаменитьЗАБ00_field(ss,fields0_[x]);
              fi;
              if lastfkr<>'' or kolrepl>kolrepl0:--прошла замена
                 i=PutFieldS(wa,t,fields0[x],ss);
              fi;
            fi;
           od;
         fi;
      fi;
     od;
   if stab<>'':CloseWorkArea(war);fi;
end;

Proc ЗаменитьФКР(crd:s);
 var wa,war,rs,larray1,larray2,larray3,history,i1,j,p:i;
 var stab,fnfa,fHistory,ss:s;
 showprogress(1,'Замена счетов ['+crd+']');
-- ClearVariable(subtab);
 ClearVariable(fields);
 ClearVariable(fields_);
 larray1=LengthOfArray(fieldskosgu);
 larray2=LengthOfArray(inicrdfield);
 larray3=LengthOfArray(fieldshistory);
 history=1;
 wa=OpenWorkArea(crd,'');
 rs=Records(wa);
 if rs>0:--есть записи для конвертации
   showprogress(rs,'Замена счетов ['+crd+']');
   try
     endkosgu='';
     --- заполняем массив полей для обработки ----------
     ClearVariable(fields0);
     ClearVariable(fields0_);
     p=0;
     for j=1..larray2 do
       if pos('@',inicrdfield[j])<1:p=p+1;
             fields0[p]=inicrdfield[j];fields0_[p]=inicrdfield_[j];
       fi;
     od;
     ---------------------------------------------------
     BeginChanging(wa);
       for i1=1..larray1 do
         if pos('@',fieldskosgu[i1])>0:-- поле НФА находится в подтаблице => работаем с этой подтаблицей
            stab    =ВыделитьСлово(1,fieldskosgu[i1],'@');
            fnfa    =ВыделитьСлово(2,fieldskosgu[i1],'@');
            fHistory='';
            if larray3>0:
               ss=ВыделитьСлово(1,fieldshistory[history],'@');
               if ss=stab:fHistory=ВыделитьСлово(2,fieldshistory[history],'@');history=history+1;fi;
            fi;
            --- заполняем массив полей для обработки ----------
            ClearVariable(fields);
            ClearVariable(fields_);
            p=0;
            for j=1..larray2 do
              if pos('@',inicrdfield[j])>0:
                 if ВыделитьСлово(1,inicrdfield[j],'@')=stab:p=p+1;
                    fields[p]=ВыделитьСлово(2,inicrdfield[j],'@');
                    fields_[p]=inicrdfield_[j];
                 fi;
              fi;
            od;
            ---------------------------------------------------
            ЗаменитьФКР_war(wa,stab,fnfa,fHistory,fieldscur);
          | true:-- поле НФА находится в таблице => работаем с этой таблицей
            stab    ='';
            fnfa    =fieldskosgu[i1];
            fHistory='';
            ---------------------------------------------------
            ЗаменитьФКР_war(wa,stab,fnfa,fHistory,fieldscur);

         fi;
       od;
     EndChanging(wa);
   except
     CancelChanging(wa);
   end;
 fi;
 CloseWorkArea(wa);
end;
Proc ЗаменитьФКР_ПриНажатии(Стр: Целое; Кол: Целое; Двойной: Логич);
 var time0,t,z,j,k,wa,war,rs:i;
 var ss,ss0:s;
 var ll:l;
 var autoref:l;
  refreshana;
  autoref=Autorefresh;
  time0=time;
  kolrepl=0;
  ClearVariable(addacc);
  ClearVariable(notconvacc);
  createsortacckosgu('2010');
  showprogress(1,'Замена счетов...');
  if Флаг_КртОст     :ss='РПО_ОСТ_НФА'              ;inicrdФКР(ss);ЗаменитьФКР(ss);fi;
  if Флаг_КртДвиж    :ss='РПО_ОПЕРАЦИИДНФА'         ;inicrdФКР(ss);ЗаменитьФКР(ss);fi;
  if Флаг_КртАморт   :ss='РПО_НАЧ_АМОРТ'            ;inicrdФКР(ss);ЗаменитьФКР(ss);ss='РПО_НАЧ_АМОРТ_TR';inicrdФКР(ss);ЗаменитьФКР(ss);fi;
  if Флаг_КртИнв     :ss='РПО_ИНВКАРТ_ОС'           ;inicrdФКР(ss);ЗаменитьФКР(ss);fi;
  if Флаг_КртМОЛМОЛ  :ss='РПО_ВНУТР_ПЕРЕМ_МОЛ'      ;inicrdФКР(ss);ЗаменитьФКР(ss);fi;
  if Флаг_КртСПРАВКА :ss='РПО_НФА_СПРАВКА_ПРОВОДКИ' ;inicrdФКР(ss);ЗаменитьФКР(ss);fi;
--  if Флаг_КртСПРАВКА :ss='РПО_НФА_СПРАВКА'     ;inicrdФКР(ss);ЗаменитьФКР(ss);ss='РПО_НФА_СПРАВКА_ПРОВОДКИ';inicrdФКР(ss);ЗаменитьФКР(ss);fi;
  CloseProgress;
  k=ПозицииЗаменаФКР;
  ll=false;
  for j=1..k do
    if pos('?',ФКР2009[j])>0:ll=true;
       break;
    fi;
  od;
  if ll:
     t=ДлинаМассива(addaccnil);
     copyarray(addaccnil,ForSelect);
     ClearVariable(addaccnil);
     for z=1..t do
       ll=false;
       for j=1..k do
         ll=match(ForSelect[z],ФКР2009[j]+'.'+КОСГУ2009[j]);
         if ll:break;fi;
       od;
       if not ll:
          for j=1..k do
            ll=match(ForSelect[z],ФКР2010[j]+'.'+КОСГУ2010[j]);
            if ll:break;fi;
          od;
       fi;
       if not ll:addinarray(addaccnil,true,false,ForSelect[z]);
       fi;
     od;
  fi;
  ----------------------------------------------------------------------------------------------------
  ----------------- работа с операцией ДНФА.ВНПР.ХЭ --------------------------------------------------
  if Name_A('ДНФА.ВНПР.ХЭ')<>' ':-- проверка ЗАБ.00 в ДНФА.ВНПР.ХЭ
     if SignCardFile('ДНФА.ВНПР.ХЭ',false)='РПО_ДНФА':
        wa=openworkarea('РПО_ДНФА','','UKEY='+recordtostring(signtorecord('ДНФА.ВНПР.ХЭ',false)) );
        if records(wa)=1:

           war=OpenArray(wa,1,'ЗАПРОС','','pos("ЗАБ.00.",ОТВЕТ)>0');
              rs=records(war);
              if rs>0:
                 if not GetFieldL(wa,1,'CLOSEDMODFOB') or trim(ВзятьСхему)='':
                    try
                      BeginChanging(war,false);
                        for j=1..rs do
                            ss0=GetFieldS(war,j,'ОТВЕТ');
                            ss=ЗаменитьЗАБ00_field(ss0,0);
                            if ss0<>ss:
                               k=PutFieldS(war,j,'ОТВЕТ',ss);
                            fi;
                        od;
                      EndChanging(war);
                    except
                      CancelChanging(war);
                    end;
                  | true: message('Запись ДНФА.ВНПР.ХЭ заблокирована!^MИсправление ЗАБ.00 на ЗАБ.21 невозможно!');
                 fi;
              fi;
           CloseWorkArea(war);
           war=OpenArray(wa,1,'ЗАПРОС','','pos("КОСГУ",СПР)>0');
              rs=records(war);
              if rs=2:
                 if not GetFieldL(wa,1,'CLOSEDMODFOB') or trim(ВзятьСхему)='':
                    try
                      BeginChanging(war,false);
                        j=0;k=0;
                        if trim(GetFieldS(war,1,'ОТВЕТ'))='КОСГУ.4??*':j=1;
                         | trim(GetFieldS(war,1,'ОТВЕТ'))='КОСГУ.271*':k=1;
                        fi;
                        if trim(GetFieldS(war,2,'ОТВЕТ'))='КОСГУ.4??*':j=2;
                         | trim(GetFieldS(war,2,'ОТВЕТ'))='КОСГУ.271*':k=2;
                        fi;
                        if  j>0 and k>0:
                            ss0=trim(GetFieldS(war,k,'НОМПРОВОДКИ'));
                            ss =trim(GetFieldS(war,j,'НОМПРОВОДКИ'));
                            if match(ss0,'1?2о3-4?5?*') and
                               match(ss ,'1?2-3о4?5?*')   :
                                 DeleteRecord(war,j);
                                 ss=SubStr(ss0,1,5)+'о'+SubStr(ss0,7,255);
                                 j=PutFieldS(war,1,'НОМПРОВОДКИ',ss);
                                 j=PutFieldS(war,1,'СПР','');
                            fi;
                        fi;
                      EndChanging(war);
                    except
                      CancelChanging(war);
                    end;
                  | true: message('Запись ДНФА.ВНПР.ХЭ заблокирована!^MИсправление ЗАБ.00 на ЗАБ.21 невозможно!');
                 fi;
              fi;
           CloseWorkArea(war);
           war=OpenArray(wa,1,'ЗАПРОС','','pos("1001",ЗАГОЛОВОК)>0 or pos("1001",Подсказка)>0');
              rs=records(war);
              if rs>0:
                 if not GetFieldL(wa,1,'CLOSEDMODFOB') or trim(ВзятьСхему)='':
                    try
                      BeginChanging(war,false);
                        rs=records(war);
                        for j=1..rs do
                            ss0=GetFieldS(war,rs-j+1,'ЗАГОЛОВОК');
                            ss=ЗаменаПодстроки_маска(ss0,'1001','3001');
                            if ss0<>ss:
                               k=PutFieldS(war,rs-j+1,'ЗАГОЛОВОК',ss);
                            fi;
                            ss0=GetFieldS(war,rs-j+1,'Подсказка');
                            ss=ЗаменаПодстроки_маска(ss0,'1001','3001');
                            if ss0<>ss:
                               k=PutFieldS(war,rs-j+1,'Подсказка',ss);
                            fi;
                            ss0=GetFieldS(war,1,'ЗАГОЛОВОК');
                        od;
                      EndChanging(war);
                    except
                      CancelChanging(war);
                    end;
                  | true: message('Запись ДНФА.ВНПР.ХЭ заблокирована!^MИсправление ЗАБ.00 на ЗАБ.21 невозможно!');
                 fi;
              fi;
           CloseWorkArea(war);

        fi;
        CloseWorkArea(wa);
     fi;
  fi;
  ----------------- работа с операцией ДНФА.ВНПР.ХЭ --------------------------------------------------
  ----------------------------------------------------------------------------------------------------

  t=ДлинаМассива(addaccnil);
  if t>0: --  есть счета по которым нет стандартной таблицы конвертации!!!
     if ВопрДаОтказ("Найдены счета, которых нет^Mв стандартной таблице конвертации!!!^MДобавить в таблицу?")=кмдВерно:
        for z=1..t do
          ПозицииЗаменаФКР=ПозицииЗаменаФКР+1;
          ФКР2009[ПозицииЗаменаФКР]  =SubStr(addaccnil[z],1,20);
          КОСГУ2009[ПозицииЗаменаФКР]=SubStr(addaccnil[z],22,3);
        od;
     fi;
  fi;
  t=ДлинаМассива(addacc);
  if t>0:
    РАБ.КСА.НАЧАТЬ;
    for z=1..t do
      РАБ.КСА.ДобавитьСч(addacc[z],if(match(addacc[z],'ЗАБ.*'),'ЗАБ','БАЛ'),false);
    od;
    if Раб.КСА.Закончить(True):Message('Счета успешно добавлены');fi;
  fi;
  ToggleAutorefresh(autoref);
  РАБ.НФА.B01.РасчетЗавершен('Замена счетов завершена^MКоличество замен: '+str(kolrepl)+'^MЗатрачено время:',time-time0);
end;

--var ЕстьГруппаВР[]:i;
var ВР_НФА[]:s;-- НФА с найденной группой
var ВР_НФА_ГР[]:s; -- найденная группа
var ВР_НФА_0[]:s;-- НФА по которым искали группу и всегда неудачно
var ВР_НФА_ГР_0[]:s;-- неудачные группы через пробел
Func НФАСоотвВР(nfa:s;ВР:s):s;-- возврат
 var p,wa,rs:i;
 var ll:l;
 var f:s;

   p=SearchInArray(ВР_НФА,nfa,true); -- поиск уже найденной группы
   if p>0:^ВР_НФА_ГР[p];--возврат найденной группы
    | true:
      p=SearchInArray(ВР_НФА_0,nfa,true); -- поиск в неудачниках
      if p>0:
         if pos(ВР,' '+ВР_НФА_ГР_0[p]+' ')>0:^'0';fi;-- уже искали для данной группы и неудачно
         -- еще не искали для данной группы
       | true: -- определяем по текущей группе - добавляем в неудачники
         p=insertinarraysort(ВР_НФА_0,nfa);
         insertinarray(ВР_НФА_ГР_0,p,'');
      fi;
--      Обрабатываем НФА для текущей группы - пока в неудачниках
      ll=false;
      if ВР='211' или ВР='213':-- вооружение (НЕСПИСЫВАТЬДО1000 и соотв(ГРНФА,'101.??')) or (ЕДИЗМ1=211)
         f=" and ((ЕДИЗМ1='211') or (ЕДИЗМ1='213'))";
--         f="and ((НЕСПИСЫВАТЬДО1000 and соотв(ГРНФА,'101.??')) or (ЕДИЗМ1='211') or (ЕДИЗМ1='213'))";
         if КартотекаПризнака(nfa,false)='РПО_НФА':
            wa=openworkarea('РПО_НФА','',"ukey="+Записьвстроку(Признаквзапись(nfa,false))+f);
            ll=records(wa)>0;
            CloseWorkArea(wa);
         fi;
--       | ВР='212':-- вооружение (НЕСПИСЫВАТЬДО1000 и соотв(ГРНФА,'101.??')) or (ЕДИЗМ1=212)
--         f="and ((НЕСПИСЫВАТЬДО1000 and соотв(ГРНФА,'101.??')) or (ЕДИЗМ1='"+ВР+"'))";
--         if КартотекаПризнака(nfa,false)='РПО_НФА':
--            wa=openworkarea('РПО_НФА','',"ukey="+Записьвстроку(Признаквзапись(nfa,false))+f);
--            ll=records(wa)>0;
--            CloseWorkArea(wa);
--         fi;
--       | ВР='213':-- вооружение (НЕСПИСЫВАТЬДО1000 и соотв(ГРНФА,'101.??')) or (ЕДИЗМ1=213)
--         f="and ((НЕСПИСЫВАТЬДО1000 and соотв(ГРНФА,'101.??')) or (ЕДИЗМ1='"+ВР+"'))";
--         if КартотекаПризнака(nfa,false)='РПО_НФА':
--            wa=openworkarea('РПО_НФА','',"ukey="+Записьвстроку(Признаквзапись(nfa,false))+f);
--            ll=records(wa)>0;
--            CloseWorkArea(wa);
--         fi;
       | ВР='221':-- ГСМ  (ГРНФА='105.03' or ЕДИЗМ1=221)
         if соотв(nfa,'НФА.105.03.*'):ll=true;fi;
         if not ll:
            if соотв(nfa,'НФА.105.06.*') or соотв(nfa,'НФА.106.04.*'):
               f=" and (ЕДИЗМ1='"+ВР+"')";
               if КартотекаПризнака(nfa,false)='РПО_НФА':
                  wa=openworkarea('РПО_НФА','',"ukey="+Записьвстроку(Признаквзапись(nfa,false))+f);
                  ll=records(wa)>0;
                  CloseWorkArea(wa);
               fi;
            fi;
         fi;
--       | ВР='222':-- ГСМ  (ГРНФА='105.03' or ЕДИЗМ1=222)
--         if соотв(nfa,'НФА.105.03.*') or соотв(nfa,'НФА.105.06.*') or соотв(nfa,'НФА.106.04.*'):
--            f="and (ЕДИЗМ1='"+ВР+"')";
--            if КартотекаПризнака(nfa,false)='РПО_НФА':
--               wa=openworkarea('РПО_НФА','',"ukey="+Записьвстроку(Признаквзапись(nfa,false))+f);
--               ll=records(wa)>0;
--               CloseWorkArea(wa);
--            fi;
--         fi;
       | ВР='223':-- ПРОД (ГРНФА='105.02' or ЕДИЗМ1=223)
         if соотв(nfa,'НФА.105.02.*'):ll=true;fi;
         if not ll:
            if соотв(nfa,'НФА.106.04.*'):
               f=" and (ЕДИЗМ1='"+ВР+"')";
               if КартотекаПризнака(nfa,false)='РПО_НФА':
                  wa=openworkarea('РПО_НФА','',"ukey="+Записьвстроку(Признаквзапись(nfa,false))+f);
                  ll=records(wa)>0;
                  CloseWorkArea(wa);
               fi;
            fi;
         fi;
--       | ВР='224':-- ПРОД (ГРНФА='105.02' or ЕДИЗМ1=224)
--         if соотв(nfa,'НФА.105.02.*') or соотв(nfa,'НФА.106.04.*'):
--            f="and (ЕДИЗМ1='"+ВР+"')";
--            if КартотекаПризнака(nfa,false)='РПО_НФА':
--               wa=openworkarea('РПО_НФА','',"ukey="+Записьвстроку(Признаквзапись(nfa,false))+f);
--               ll=records(wa)>0;
--               CloseWorkArea(wa);
--            fi;
--         fi;
       | ВР='225':-- ВЕЩ  (ГРНФА='105.05' or ЕДИЗМ1=225)
         if соотв(nfa,'НФА.105.05.*'):ll=true;fi;
         if not ll:
            if соотв(nfa,'НФА.106.04.*'):
               f=" and (ЕДИЗМ1='"+ВР+"')";
               if КартотекаПризнака(nfa,false)='РПО_НФА':
                  wa=openworkarea('РПО_НФА','',"ukey="+Записьвстроку(Признаквзапись(nfa,false))+f);
                  ll=records(wa)>0;
                  CloseWorkArea(wa);
               fi;
            fi;
         fi;
--       | ВР='226':-- ВЕЩ  (ГРНФА='105.05' or ЕДИЗМ1=226)
--         if соотв(nfa,'НФА.105.05.*') or соотв(nfa,'НФА.106.04.*'):
--            f="and (ЕДИЗМ1='"+ВР+"')";
--            if КартотекаПризнака(nfa,false)='РПО_НФА':
--               wa=openworkarea('РПО_НФА','',"ukey="+Записьвстроку(Признаквзапись(nfa,false))+f);
--               ll=records(wa)>0;
--               CloseWorkArea(wa);
--            fi;
--         fi;
       | ВР='242':-- оргтехн и связь  ((ГРНФА='101.04' or ГРНФА='101.06' or ГРНФА='105.06') and ЕДИЗМ1=242)
         if соотв(nfa,'НФА.101.04.*') or соотв(nfa,'НФА.101.06.*') or соотв(nfa,'НФА.105.06.*') or соотв(nfa,'НФА.102.*') or соотв(nfa,'НФА.106.??.*'):
            f=" and (ЕДИЗМ1='"+ВР+"')";
            if КартотекаПризнака(nfa,false)='РПО_НФА':
               wa=openworkarea('РПО_НФА','',"ukey="+Записьвстроку(Признаквзапись(nfa,false))+f);
               ll=records(wa)>0;
               CloseWorkArea(wa);
            fi;
         fi;
       | ВР='243':-- кап рем  (ГРНФА='105.04' or ЕДИЗМ1=243)
         if соотв(nfa,'НФА.105.04.*'):ll=true;fi; -- строймат
         if not ll:
            if соотв(nfa,'НФА.106.04.*'):
               f=" and (ЕДИЗМ1='"+ВР+"')";
               if КартотекаПризнака(nfa,false)='РПО_НФА':
                  wa=openworkarea('РПО_НФА','',"ukey="+Записьвстроку(Признаквзапись(nfa,false))+f);
                  ll=records(wa)>0;
                  CloseWorkArea(wa);
               fi;
            fi;
         fi;
       | ВР='244':-- прочее
         ll=true;
      fi;
      if not ll: -- неопределено для текущей группы - добавляем группу в неудачники для данного НФА
         ВР_НФА_ГР_0[p]=ВР_НФА_ГР_0[p]+' '+ВР;
         ^'0';
       | true: -- нашли группу - переносим в удачные с найденной группой
         deletefromarray(ВР_НФА_ГР_0,p);
         deletefromarray(ВР_НФА_0,p);
         p=insertinarraysort(ВР_НФА,nfa);
         insertinarray(ВР_НФА_ГР,p,ВР);
         if ВР_НФА_ГР[p]<>ВР:
            ВР_НФА_ГР[p]=ВР;
         fi;
         ^ВР;
      fi;
   fi;

end;

Func ЗаменитьСчета2011_field(ss:s;ksgu:s;typ:i;dv_im:l;lzam106_01_410_prih:l;lzam109_61_271:l;nfa:s):s; --замена счетов в строке по подстрокам
 var z,lenss,lenksgu,p1,p2,t:i;
 var ss0,ss1,sshistory,ss2,ss3,ss4:s;
 var ll_gr:l;
   ss0=trim(ss);
   lenss  =length(ss0);
   lenksgu=length(ksgu);
   lastfkr='';
   if ФлКонвФКР11 and lenss>19 and lenksgu>2:
      if typ<2 or typ=10:-- содержит счет, или аналитику
         for z=1..ПозицииЗаменаФКР2011 do
           if КОСГУ2011до[z]=ksgu:-- замена по косгу
              if match(ФКР2011[z],'???.????.???????.???'):
                ss2=ФКР2011до[z]+КОСГУ2011до[z];
                if ПозицииЗаменаФКР2011=1:ll_gr=false;
                 | true:ll_gr=false;
                   if not ll_gr:
                     if z<ПозицииЗаменаФКР2011:
                        ll_gr=ss2=ФКР2011до[z+1]+КОСГУ2011до[z+1];
                     fi;
                   fi;
--                   if not ll_gr:
--                     if z>1:
--                        ll_gr=ss2=ФКР2011до[z-1]+КОСГУ2011до[z-1];
--                     fi;
--                   fi;
                fi;

                if not ll_gr:-- стандартная замена 1 к 1
                   ss=ЗаменаПодстроки_маска(ss,ФКР2011до[z],ФКР2011[z]);
                   if ss<>ss0:lastfkr=ФКР2011до[z];endkosgu=ksgu;kolrepl=kolrepl+1; -- прошла замена
                      break; -- только если в проводке аналитика ФКР всегда совпадает с ФКР в счете
                   fi;
                 | true: -- обработка группы одинаковых фкр_косгу
                   p1=z;
                   for t=p1+1..ПозицииЗаменаФКР2011 do
                     if ss2<>ФКР2011до[t]+КОСГУ2011до[t] or t=ПозицииЗаменаФКР2011:--нашли конец группы
                        p2=t;
                        break;
                     fi;
                   od;
                   ss3='0';
                   for t=p1..p2 do -- обработка найденной группы
                       ss2=SubStr(ФКР2011[t],18,3);--нашли вид расходов
                       if ss3='0':ss3=НФАСоотвВР(nfa,if(ss2='213','211',ss2));fi;
                       if ss2=ss3 or (ss2='213' and ss3='211'):
                          ss=ЗаменаПодстроки_маска(ss,ФКР2011до[t],ФКР2011[t]);
                          if ss<>ss0:lastfkr=ФКР2011до[t];endkosgu=ksgu;kolrepl=kolrepl+1; -- прошла замена
                             break; -- только если в проводке аналитика ФКР всегда совпадает с ФКР в счете
                          fi;
                       fi;
                   od;
                   z=p2;-- проскочили отработанную группу
                fi;
              fi;
           fi;
         od;
   --      if ss=ss0 and typ=0: --нет замены для счета
   --   --      if pos('.0000.0000000.000.2',ss0)<>4:-- бюджет!, должна быть замена!
   --            if match(ss,'???.????.???????.???.?.???.??.???'):
   --              ss0=SubStr(ss0,1,20)+'.'+ksgu;
   --              if ПоискВмассиве(sortacckosgu1,ss0,true)<1:-- нет в уже сконвертированных счетах!
   --                 if ПоискВмассиве(sortacckosgu,ss0,true)<1:-- нет в счетах для конвертации!
   --                   addinarray(addaccnil,true,false,ss0);--добавляем в список счетов без настройки!
   --                 fi;
   --              fi;
   --            fi;
   --   --         if ПоискВмассиве(addacc,ss0,true)<1:-- нет в уже сконвертированных и отсутствующих в плане счетах!
   --   --            if Name_S(ss)=' ':addinarray(addacc,true,false,ss);fi;
   --   --         fi;
   --   --      fi;
      fi;  -- содержит счет, или аналитику
   fi;
   if ФлКонвДопАн :
      if typ=-1 or typ=1:-- содержит счет, или аналитику
         for z=1..ПозицииЗаменаПризнаков2011 do
             if УслНФА_ЗаменаПризн[z]='' or match(nfa,УслНФА_ЗаменаПризн[z]):
                ss=ЗаменаПризнака(ss,Признаки2011до[z],Признаки2011[z],'|\/()&~{} ');
                if ss<>ss0:kolrepl=kolrepl+1; -- прошла замена
                fi;
             fi;
         od;
      fi;  -- содержит счет, или аналитику
   fi;
   if ФлКонвДопСч:
      if typ<1:-- содержит счет, или аналитику
         for z=1..ПозицииЗаменаСчетов do
           if trim(Счетадо[z])<>'':
             if УслНФА_ЗаменаСч[z]='' or match(nfa,УслНФА_ЗаменаСч[z]):
                ss=ЗаменаПодстроки_маска_граница(ss,Счетадо[z],Счетапосле[z],'|\/()&~{} ');
                if ss<>ss0:kolrepl=kolrepl+1; -- прошла замена
                fi;
             fi;
           fi;
         od;
      fi;  -- содержит счет, или аналитику
   fi;
   if ФлКонвСчета11:
      if typ<1: -- для счетов и условий
         for z=1..ПозицииЗаменаСчетов2011 do
             if lzam106_01_410_prih:
                 if sortacc[z]='???.????.???????.???.?.106.01.4??':
                    ss=ЗаменаПодстроки_маска(ss,sortacc[z],if(dv_im,'???.????.???????.???.?.106.31.3??','???.????.???????.???.?.106.11.3??'));
                  | true:
                     ss=ЗаменаПодстроки_маска(ss,sortacc[z],if(dv_im,sortacc1[z],sortacc2[z]));
                 fi;

              | true:
                 ss=ЗаменаПодстроки_маска(ss,sortacc[z],if(dv_im,sortacc1[z],sortacc2[z]));
             fi;
             if ss<>ss0:kolrepl=kolrepl+1; -- прошла замена
               break;
             fi;
         od;
      fi;
      if typ=1 or typ=-1  or typ=10: -- для аналитики
         ss1=trim(ss);
         for z=1..ПозицииЗаменаАналитики2011 do -- замена аналитики по всему списку без досрочного выхода
             ss=Раб.СТР.ЗаменаПодстроки(ss,sortan[z],sortan1[z]);
--             ss=ЗаменаПодстроки(ss,sortan[z],sortan1[z]);
             if ss<>ss1:kolrepl=kolrepl+1; -- прошла замена
             fi;
         od;
       | typ=3:
         ss1=trim(ss);
         ss=Раб.СТР.ЗаменаПодстроки(ss,'&~(НФА.101.07.*|НФА.101.08.*)','');
         ss=Раб.СТР.ЗаменаПодстроки(ss,'&~(НФА.101.08.*)','');
         ss=Раб.СТР.ЗаменаПодстроки(ss,'&~НФА.101.08.*','');
         ss=Раб.СТР.ЗаменаПодстроки(ss,'&~(НФА.101.07.*)','');
         ss=Раб.СТР.ЗаменаПодстроки(ss,'&~НФА.101.07.*','');
--         ss=Раб.НФА.B01.ЗаменаПодстроки(ss,'(НФА.101.*|НФА.102.*)&~(НФА.101.07.*|НФА.101.08.*)','(НФА.101.*|НФА.102.*)');
         ss=Раб.СТР.ЗаменаПодстроки(ss,'101.09','101.08');
         ss=Раб.СТР.ЗаменаПодстроки(ss,'102.01','102.00');
         if ss<>ss1:kolrepl=kolrepl+1; -- прошла замена
         fi;
       | typ=2: -- ГРНФА
         ss1=trim(ss);
         ss=Раб.СТР.ЗаменаПодстроки(ss,'101.09','101.08');
         ss=Раб.СТР.ЗаменаПодстроки(ss,'102.01','102.00');
         if ss<>ss1:kolrepl=kolrepl+1; -- прошла замена
         fi;
      fi;
      if typ=10: -- post обработка видов движения по приходу
         ss1=trim(ss);
         typ=pos('.106.',ss1);
         if typ>0:
           if pos('.106.',substr(ss1,typ+7,255))<1:
--            if length(ss1)<15:-- не более 1 условия на 106-е
              p1=pos('106.?1.4',ss1);-- только ОС
              p2=pos('106.??.41',ss1);-- только ОС
              if p1>0 or p2>0:
                 p1=max(p1,p2)+6;
                 ss=SubStr(ss1,1,p1)+'3'+SubStr(ss1,p1+2,255);
               | true:
                 p1=pos('106.??.4',ss1);-- только ОС
                 p2=pos('106.??.44',ss1);-- только ОС
                 if p1>0 and p2<1:
                    p1=p1+6;
                    p2=Раб.НФА.B01.ГраничныйСимволСлева(ss1,p1-6,'~&|(');
                    ss=SubStr(ss1,1,p2)+'(';
                    ss=ss+SubStr(ss1,p2+1,p1-p2)+'31'+SubStr(ss1,p1+3,1);
                    ss=ss+'|';
                    ss=ss+SubStr(ss1,p2+1,p1-p2)+'44'+SubStr(ss1,p1+3,1)+')';
                    ss=ss+SubStr(ss1,p1+4,255);

                 fi;
              fi;
              if ss<>ss1:kolrepl=kolrepl+1; -- прошла замена
              fi;
--            fi;
           fi;
         fi;
         typ=10;
      fi;

--          dv_im
--         ПозицииЗаменаСчетов2011
--         sortacc1
   fi;
   ss=trim(ss);
---------------- поиск новых счетов после замены ------------------
   if typ=0: --проверка на замену в счете
      if ss<>ss0: -- была замена для счета
          if match(ss,'???.????.???????.???.?.???.??.???'):
            if Name_S(ss)=' ':addinarray(addacc,true,false,ss);fi;
          fi;
       | true: -- нет замены для счета
          if ФлКонвФКР11:
             if match(ss,'???.????.???????.???.?.???.??.???'):
               ss0=SubStr(ss0,1,20)+'.'+ksgu;
               if ПоискВмассиве(sortacckosgu1,ss0,true)<1:-- нет в уже сконвертированных счетах!
                  if ПоискВмассиве(sortacckosgu,ss0,true)<1:-- нет в счетах для конвертации!
                    addinarray(addaccnil,true,false,ss0);--добавляем в список счетов без настройки!
                  fi;
               fi;
             fi;
          fi;
      fi;
   fi;
   if match(ss,'???.????.???????.???.?.10?.??.???'):
--               123456789012345678901234567890
      if pos(SubStr(ss,24,3),'101 102 103 105 106')>0:
         ss1=SubStr(ss,1,27);
         if SubStr(ss,28,1)='1' or not dv_im :ss1=ss1+'1';
          | SubStr(ss,28,1)='2' and  dv_im   :ss1=ss1+'2';
          | true                              :ss1=ss1+'3';
         fi;
         ss1=ss1+SubStr(ss,29,5);
         if lzam109_61_271 and (match(ss1,'???.????.???????.???.2.106.34.340') or match(ss1,'???.????.???????.???.2.106.04.340') or match(ss1,'???.????.???????.???.4.106.04.340') or match(ss1,'???.????.???????.???.4.106.04.340')):
               if ksgu='310':ss1=SubStr(ss1,1,22)+'.109.60.271';
                | ksgu='320':ss1=SubStr(ss1,1,22)+'.109.60.271';
                | ksgu='340':ss1=SubStr(ss1,1,22)+'.109.60.272';
               fi;
         fi;
         AddInArray(addforacc,true,false,ss1);
         if ss1<>ss:ss=ss1;endkosgu=ksgu;kolrepl=kolrepl+1;fi;
      fi;
   fi;

   ^ss;
end;

Proc ЗаменитьСчета2011_war(wa:i;stab:s;fnfa:s;fHistory:s;fcrd:s;DNFA:l;crd_name:s); -- замена по подтаблице
 var war,rs,rs1,z,lf,lf0,t,x,i,kolrepl0,new_typ:i;
 var nfa,ss,ksgu,ss0,ss1,sshistory:s;
 var lhistorynil:l;
 var zam106_01_410_prih:l;
 var lzam109_61_271:l;
 var dv_im:l;
 dv_im=true;
 lf=LengthOfArray(fields);
 lf0=LengthOfArray(fields0);
 rs=Records(wa);
   if stab<>'':war=OpenArray(wa,1,stab,'');fi;
     for t=1..rs do
      zam106_01_410_prih=false;
      lzam109_61_271    =false;
      if DNFA:
         zam106_01_410_prih=pos('ПРИХ.',up(trim(GetFieldS(wa,t,'АН_ДНФА'))))=1;
         lzam109_61_271    =pos('РАСХ.КВ.',up(trim(GetFieldS(wa,t,'АН_ДНФА'))))<1 and not zam106_01_410_prih;
      fi;
      if crd_name='РПО_НФА_СПРАВКА_ПРОВОДКИ' or crd_name='РПО_НАЧ_АМОРТ_TR' or crd_name='РПО_НАЧ_АМОРТ':
         lzam109_61_271=true;
      fi;
      ProgressPos(t);
      if stab<>'':
        ss=GetFieldS(wa,t,fcrd);-- автокурсор на запись при чтении
        rs1=records(war);
        if rs1>0:-- подтаблица не пустая - работаем...
  --        endkosgu='';
          if crd_name='РПО_ДНФА' and stab='ЗАПРОС':
             zam106_01_410_prih=pos('ПРИХ.',up(trim(GetFieldS(wa,t,'ДНФА'))))=1;
             lzam109_61_271    =pos('РАСХ.КВ.',up(trim(GetFieldS(wa,t,'ДНФА'))))<1 and not zam106_01_410_prih;
          fi;

          for z=1..rs1 do
           nfa=GetFieldS(war,z,fnfa);
           ksgu='';
           if pos('НФА.101.',nfa)=1:ksgu='310';
            | pos('НФА.102.',nfa)=1:ksgu='320';
            | pos('НФА.103.',nfa)=1:ksgu='330';
            | pos('НФА.105.',nfa)=1:ksgu='340';
            | pos('НФА.106.01',nfa)=1:ksgu='310';
            | pos('НФА.106.02',nfa)=1:ksgu='320';
            | pos('НФА.106.04',nfa)=1:ksgu='340';
            | true:nfa='';dv_im=true; -- Просто замена в картотеке как движ им
           fi;
           if ksgu<>'':
              dv_im=SearchInArray(not_dv_im_nfa,nfa,true)<1;
           fi;
           if ksgu<>'' or nfa='':
             lhistorynil=false;
             if fHistory<>'':sshistory=trim(GetFieldS(war,z,fHistory));lhistorynil=Length(sshistory)<20;fi;
             for x=1..lf do -- замена по каждому полю
               ss0=up(GetFieldS(war,z,fields[x]));
               if length(trim(ss0))>2: -- не пусто
--              Флаг_ЗАБ21
--              if length(ss0)>32 or (Флаг_ЗАБ21 and fields_[x]<1 and pos('ЗАБ.00.',ss0)>0)  :-- проверка на возможность наличия ФКР или замены ЗАБ.00 на ЗАБ.21
--              if length(ss0)>30  and fields_[x]<1:-- проверка на возможность наличия счета
--              if (length(ss0)>19 and fields_[x]=0) or fields_[x]<>0:-- проверка на возможность наличия ФКР в счете или нестандартной замены
                kolrepl0=kolrepl;
                new_typ=fields_[x];
                if new_typ=4: --нужна доп проверка на преобразование типа
                   if crd_name='РПО_ДНФА':
                      if stab='ЗАПРОС':
                         ss1=up(trim(GetFieldS(war,z,'ПОЛЕПОДТАБЛИЦЫ')));
                         if ss1='НФА':new_typ=3;
                          | pos('СЧ',ss1)>0:new_typ=1; if zam106_01_410_prih:new_typ=10;fi;
                         fi;
                      fi;
                   fi;
                fi;
                ss=ЗаменитьСчета2011_field(ss0,ksgu,new_typ,dv_im,zam106_01_410_prih,lzam109_61_271,nfa);
--                if (Флаг_ЗАБ21 and fields_[x]<1 and pos('ЗАБ.00.',ss0)>0):
--                    ss=ЗаменитьЗАБ00_field(ss,fields_[x]);
--                fi;
                if lastfkr<>'' or kolrepl>kolrepl0:--прошла замена
                   i=PutFieldS(war,z,fields[x],ss);
--                   if lhistorynil:-- требуется запись истории ФКР
--                      i=PutFieldS(war,z,fHistory,lastfkr);
--                      lhistorynil=false;
--                   fi;
                   --trace(fields[x]+'='+ss0+'='+ss);
                fi;
               fi;
             od;
           fi;
          od;
        fi;
      fi;
      -------- замена полей картотеки ----------
      if stab    ='':-- в картотеке плановая замена
         nfa=GetFieldS(wa,t,fnfa);
         ksgu='';
         if pos('НФА.101.',nfa)=1:ksgu='310';
          | pos('НФА.102.',nfa)=1:ksgu='320';
          | pos('НФА.103.',nfa)=1:ksgu='330';
          | pos('НФА.105.',nfa)=1:ksgu='340';
          | pos('НФА.106.01',nfa)=1:ksgu='310';
          | pos('НФА.106.02',nfa)=1:ksgu='320';
          | pos('НФА.106.04',nfa)=1:ksgu='340';
          | true:nfa='';dv_im=true; -- Просто замена в картотеке
         fi;
           if ksgu<>'':
           dv_im=SearchInArray(not_dv_im_nfa,nfa,true)<1;
           fi;
         if ksgu<>'' or nfa='':
           for x=1..lf0 do -- замена по каждому полю
            ss0=up(GetFieldS(wa,t,fields0[x]));
            if length(trim(ss0))>2: -- не пусто
--            if length(ss0)>32 or (Флаг_ЗАБ21 and fields0_[x]<1 and pos('ЗАБ.00.',ss0)>0)  :-- проверка на возможность наличия ФКР или замены ЗАБ.00 на ЗАБ.21
--            if length(ss0)>30 and fields0_[x]<1:-- проверка на возможность наличия счета
--            if length(ss0)>19 :-- проверка на наличие ФКР
                kolrepl0=kolrepl;
              new_typ=fields0_[x];
              ss=ЗаменитьСчета2011_field(ss0,ksgu,new_typ,dv_im,zam106_01_410_prih,lzam109_61_271,nfa);
--              if (Флаг_ЗАБ21 and fields0_[x]<1 and pos('ЗАБ.00.',ss0)>0):
--                 ss=ЗаменитьЗАБ00_field(ss,fields0_[x]);
--              fi;
              if lastfkr<>'' or kolrepl>kolrepl0:--прошла замена
                 i=PutFieldS(wa,t,fields0[x],ss);
              fi;
            fi;
           od;
         fi;

--            stab    ='';
--            fnfa    =fieldskosgu[i1];
--            fHistory='';
            ---------------------------------------------------
            --ЗаменитьФКР_war(wa,stab,fnfa,fHistory,fieldscur);
       | true:
         if endkosgu<>'':
           for x=1..lf0 do -- замена по каждому полю
            ss0=up(GetFieldS(wa,t,fields0[x]));
            if length(trim(ss0))>2: -- не пусто
--            if length(ss0)>19 or (Флаг_ЗАБ21 and fields0_[x]<1 and pos('ЗАБ.00.',ss0)>0)  :-- проверка на возможность наличия ФКР или замены ЗАБ.00 на ЗАБ.21
--            if length(ss0)>30 and fields0_[x]<1 :-- проверка на возможность наличия счета
--            if length(ss0)>19 :-- проверка на наличие ФКР
              new_typ=fields0_[x];
              ss=ЗаменитьСчета2011_field(ss0,endkosgu,new_typ,dv_im,zam106_01_410_prih,lzam109_61_271,nfa);
--              if (Флаг_ЗАБ21 and fields0_[x]<1 and pos('ЗАБ.00.',ss0)>0):
--                  ss=ЗаменитьЗАБ00_field(ss,fields0_[x]);
--              fi;
              if lastfkr<>'' or kolrepl>kolrepl0:--прошла замена
                 i=PutFieldS(wa,t,fields0[x],ss);
              fi;
            fi;
           od;
         fi;
      fi;
     od;
   if stab<>'':CloseWorkArea(war);fi;
end;

Proc ЗаменитьСчета2011(crd:s);
 var wa,war,rs,larray1,larray2,larray3,history,i1,j,p:i;
 var stab,fnfa,fHistory,ss:s;
 var DNFA:l;
 showprogress(1,'Замена счетов ['+crd+']');
-- ClearVariable(subtab);
 ClearVariable(fields);
 ClearVariable(fields_);
 larray1=LengthOfArray(fieldskosgu);
 larray2=LengthOfArray(inicrdfield);
 larray3=LengthOfArray(fieldshistory);
 history=1;
 wa=OpenWorkArea(crd,''); DNFA=crd='РПО_ОПЕРАЦИИДНФА';
 rs=Records(wa);
 if rs>0:--есть записи для конвертации
   showprogress(rs,'Замена счетов ['+crd+']');
   try
     endkosgu='';
     --- заполняем массив полей для обработки ----------
     ClearVariable(fields0);
     ClearVariable(fields0_);
     p=0;
     for j=1..larray2 do
       if pos('@',inicrdfield[j])<1:p=p+1;
             fields0[p]=inicrdfield[j];fields0_[p]=inicrdfield_[j];
       fi;
     od;
     ---------------------------------------------------
     BeginChanging(wa);
       for i1=1..larray1 do
         if pos('@',fieldskosgu[i1])>0:-- поле НФА находится в подтаблице => работаем с этой подтаблицей
            stab    =ВыделитьСлово(1,fieldskosgu[i1],'@');
            fnfa    =ВыделитьСлово(2,fieldskosgu[i1],'@');
            fHistory='';
            if larray3>0:
               ss=ВыделитьСлово(1,fieldshistory[history],'@');
               if ss=stab:fHistory=ВыделитьСлово(2,fieldshistory[history],'@');history=history+1;fi;
            fi;
            --- заполняем массив полей для обработки ----------
            ClearVariable(fields);
            ClearVariable(fields_);
            p=0;
            for j=1..larray2 do
              if pos('@',inicrdfield[j])>0:
                 if ВыделитьСлово(1,inicrdfield[j],'@')=stab:p=p+1;
                    fields[p]=ВыделитьСлово(2,inicrdfield[j],'@');
                    fields_[p]=inicrdfield_[j];
                 fi;
              fi;
            od;
            ---------------------------------------------------
            ЗаменитьСчета2011_war(wa,stab,fnfa,fHistory,fieldscur,DNFA,crd);
          | true:-- поле НФА находится в таблице => работаем с этой таблицей
            stab    ='';
            fnfa    =fieldskosgu[i1];
            fHistory='';
            ---------------------------------------------------
            ЗаменитьСчета2011_war(wa,stab,fnfa,fHistory,fieldscur,DNFA,crd);

         fi;
       od;
     EndChanging(wa);
   except
     CancelChanging(wa);
     Message('Невозможно сконвертировать картотеку:'+crd+'^MВозможно нет прав для работы с заблокированными флагом ClosedModFob записями,^Mили картотека недоступна для записи',mtWarning);
   end;
 fi;
 CloseWorkArea(wa);
end;
Proc addacc_ALL(foracc:s);
  var t,z:i;
  var fkr0,vd0,acc0,acc_,ss:s;
   acc_='';
--                  123456789012345678901234567890
   if match(foracc,'???.????.???????.???.?.10?.??*'):
      fkr0=SubStr(foracc,1,20);
      vd0 =SubStr(foracc,22,1);
      acc0=SubStr(foracc,24,6);
   fi;
   if acc0<>'':
      if acc0='101.31':acc_='101.31.310|101.31.410|104.31.410|106.31.310|106.31.410|106.34.340|106.34.440|208.31.560|208.31.660|302.31.730|302.31.830|304.04.310|401.20.271|401.20.273|401.20.241|401.20.242|401.20.251|401.30.000';
       | acc0='101.32':acc_='101.32.310|101.32.410|104.32.410|106.31.310|106.31.410|106.34.340|106.34.440|208.31.560|208.31.660|302.31.730|302.31.830|304.04.310|401.20.271|401.20.273|401.20.241|401.20.242|401.20.251|401.30.000';
       | acc0='101.33':acc_='101.33.310|101.33.410|104.33.410|106.31.310|106.31.410|106.34.340|106.34.440|208.31.560|208.31.660|302.31.730|302.31.830|304.04.310|401.20.271|401.20.273|401.20.241|401.20.242|401.20.251|401.30.000';
       | acc0='101.34':acc_='101.34.310|101.34.410|104.34.410|106.31.310|106.31.410|106.34.340|106.34.440|208.31.560|208.31.660|302.31.730|302.31.830|304.04.310|401.20.271|401.20.273|401.20.241|401.20.242|401.20.251|401.30.000';
       | acc0='101.35':acc_='101.35.310|101.35.410|104.35.410|106.31.310|106.31.410|106.34.340|106.34.440|208.31.560|208.31.660|302.31.730|302.31.830|304.04.310|401.20.271|401.20.273|401.20.241|401.20.242|401.20.251|401.30.000';
       | acc0='101.36':acc_='101.36.310|101.36.410|104.36.410|106.31.310|106.31.410|106.34.340|106.34.440|208.31.560|208.31.660|302.31.730|302.31.830|304.04.310|401.20.271|401.20.273|401.20.241|401.20.242|401.20.251|401.30.000';
       | acc0='101.37':acc_='101.37.310|101.37.410|104.37.410|106.31.310|106.31.410|106.34.340|106.34.440|208.31.560|208.31.660|302.31.730|302.31.830|304.04.310|401.20.271|401.20.273|401.20.241|401.20.242|401.20.251|401.30.000';
       | acc0='101.38':acc_='101.38.310|101.38.410|104.38.410|106.31.310|106.31.410|106.34.340|106.34.440|208.31.560|208.31.660|302.31.730|302.31.830|304.04.310|401.20.271|401.20.273|401.20.241|401.20.242|401.20.251|401.30.000';
       | acc0='102.30':acc_='102.30.320|101.30.420|104.39.420|106.32.320|106.32.420|106.34.340|106.34.440|208.32.560|208.32.660|302.32.730|302.32.830|304.04.320|401.20.271|401.20.273|401.20.241|401.20.242|401.20.251|401.30.000';

       | acc0='105.31':acc_='105.31.340|105.31.440|106.31.310|106.31.410|106.34.340|106.34.440|208.34.560|208.34.660|302.34.730|302.34.830|304.04.340|401.20.272|401.20.273|401.20.241|401.20.242|401.20.251|401.30.000';
       | acc0='105.32':acc_='105.32.340|105.32.440|106.31.310|106.31.410|106.34.340|106.34.440|208.34.560|208.34.660|302.34.730|302.34.830|304.04.340|401.20.272|401.20.273|401.20.241|401.20.242|401.20.251|401.30.000';
       | acc0='105.33':acc_='105.33.340|105.33.440|106.31.310|106.31.410|106.34.340|106.34.440|208.34.560|208.34.660|302.34.730|302.34.830|304.04.340|401.20.272|401.20.273|401.20.241|401.20.242|401.20.251|401.30.000';
       | acc0='105.34':acc_='105.34.340|105.34.440|106.31.310|106.31.410|106.34.340|106.34.440|208.34.560|208.34.660|302.34.730|302.34.830|304.04.340|401.20.272|401.20.273|401.20.241|401.20.242|401.20.251|401.30.000';
       | acc0='105.35':acc_='105.35.340|105.35.440|106.31.310|106.31.410|106.34.340|106.34.440|208.34.560|208.34.660|302.34.730|302.34.830|304.04.340|401.20.272|401.20.273|401.20.241|401.20.242|401.20.251|401.30.000';
       | acc0='105.36':acc_='105.36.340|105.36.440|106.31.310|106.31.410|106.34.340|106.34.440|208.34.560|208.34.660|302.34.730|302.34.830|304.04.340|401.20.272|401.20.273|401.20.241|401.20.242|401.20.251|401.30.000';
       | acc0='105.37':acc_='105.37.340|105.37.440|106.31.310|106.31.410|106.34.340|106.34.440|208.34.560|208.34.660|302.34.730|302.34.830|304.04.340|401.20.272|401.20.273|401.20.241|401.20.242|401.20.251|401.30.000';

       | acc0='106.31':acc_='106.31.310|106.31.410|304.04.340|401.20.273|401.20.241|401.20.242|401.20.251|401.30.000';
       | acc0='106.32':acc_='106.32.320|106.32.420|304.04.340|401.20.273|401.20.241|401.20.242|401.20.251|401.30.000';
       | acc0='106.34':acc_='106.34.340|106.34.440|304.04.340|401.20.273|401.20.241|401.20.242|401.20.251|401.30.000';

       | acc0='101.11':acc_='101.11.310|101.11.410|104.11.410|106.11.310|106.11.410|106.34.340|106.34.440|208.31.560|208.31.660|302.31.730|302.31.830|304.04.310|401.20.271|401.20.273|401.20.241|401.20.242|401.20.251|401.30.000';
       | acc0='101.12':acc_='101.12.310|101.12.410|104.12.410|106.11.310|106.11.410|106.34.340|106.34.440|208.31.560|208.31.660|302.31.730|302.31.830|304.04.310|401.20.271|401.20.273|401.20.241|401.20.242|401.20.251|401.30.000';
       | acc0='101.13':acc_='101.13.310|101.13.410|104.13.410|106.11.310|106.11.410|106.34.340|106.34.440|208.31.560|208.31.660|302.31.730|302.31.830|304.04.310|401.20.271|401.20.273|401.20.241|401.20.242|401.20.251|401.30.000';
       | acc0='101.15':acc_='101.15.310|101.15.410|104.15.410|106.11.310|106.11.410|106.34.340|106.34.440|208.31.560|208.31.660|302.31.730|302.31.830|304.04.310|401.20.271|401.20.273|401.20.241|401.20.242|401.20.251|401.30.000';
       | acc0='101.18':acc_='101.18.310|101.18.410|104.18.410|106.11.310|106.11.410|106.34.340|106.34.440|208.31.560|208.31.660|302.31.730|302.31.830|304.04.310|401.20.271|401.20.273|401.20.241|401.20.242|401.20.251|401.30.000';

       | acc0='106.11':acc_='106.11.310|106.11.410|304.04.340|401.20.273|401.20.241|401.20.242|401.20.251|401.30.000';
      fi;
   fi;
   if acc_<>'': --добавляем счета по фкр

          z=КоличествоСлов(acc_,'|');
          for t=1..z do
            ss=fkr0+'.'+vd0+'.'+ВыделитьСлово(t,acc_,'|');
            if Name_S(ss)=' ':
              addinarray(addacc,true,false,ss);
            fi;
          od;

      if vd0='2' or vd0='4':  -- добавляем счета 2.109.61.271 фкр
            ss=fkr0+'.'+vd0+'.109.60.271';
            if Name_S(ss)=' ':
              addinarray(addacc,true,false,ss);
            fi;
      fi;
   -- добавляем счета КД
      ss=SubStr(fkr0,1,3)+'.1.17.05010.01.0000.'+vd0+'.401.10.180';
      if Name_S(ss)=' ':
        addinarray(addacc,true,false,ss);
      fi;
      ss=SubStr(fkr0,1,3)+'.1.17.05010.01.0000.'+vd0+'.401.10.172';
      if Name_S(ss)=' ':
        addinarray(addacc,true,false,ss);
      fi;
   fi;
end;

Proc ЗаменитьСчета2011_ПриНажатии(Стр: Целое; Кол: Целое; Двойной: Логич);
 var time0,t,z,j,k,wa,war,rs:i;
 var ss,ss0:s;
 var ll:l;
 var autoref:l;
--  message('---------========********========-------');
--  exit;
  refreshana;
  autoref=Autorefresh;
  ToggleAutorefresh(false);
  time0=time;
  kolrepl=0;
  ClearVariable(addacc);
  ClearVariable(addforacc);
  ClearVariable(notconvacc);

  ClearVariable(ВР_НФА);     -- НФА с найденной группой
  ClearVariable(ВР_НФА_ГР);  -- найденная группа
  ClearVariable(ВР_НФА_0);   -- НФА по которым искали группу и всегда неудачно
  ClearVariable(ВР_НФА_ГР_0);-- неудачные группы через пробел
  createsortacckosgu('2011');
  createsortacc     ('2011');
  createsortan      ('2011');
  createnot_dv_im_nfa;
  showprogress(1,'Замена счетов...');
  if Флаг_КртОст     :ss='РПО_ОСТ_НФА'              ;inicrdФКР(ss);ЗаменитьСчета2011(ss);fi;
  if Флаг_КртДвиж    :ss='РПО_ОПЕРАЦИИДНФА'         ;inicrdФКР(ss);ЗаменитьСчета2011(ss);fi;
  if Флаг_КртАморт   :ss='РПО_НАЧ_АМОРТ'            ;inicrdФКР(ss);ЗаменитьСчета2011(ss);ss='РПО_НАЧ_АМОРТ_TR';inicrdФКР(ss);ЗаменитьСчета2011(ss);fi;
  if Флаг_КртИнв     :ss='РПО_ИНВКАРТ_ОС'           ;inicrdФКР(ss);ЗаменитьСчета2011(ss);fi;
  if Флаг_КртМОЛМОЛ  :ss='РПО_ВНУТР_ПЕРЕМ_МОЛ'      ;inicrdФКР(ss);ЗаменитьСчета2011(ss);fi;
  if Флаг_КртСПРАВКА :ss='РПО_НФА_СПРАВКА_ПРОВОДКИ' ;inicrdФКР(ss);ЗаменитьСчета2011(ss);fi;
  if Флаг_ДНФА       :ss='РПО_ДНФА'                 ;inicrdФКР(ss);
                      createsortacc     ('2011ДНФА_СЧЕТ');
                      createsortan      ('2011ДНФА_СЧЕТ');
                      ЗаменитьСчета2011(ss);
                      ss='РПО_ОКЕИ_ГРУППЫ'          ;inicrdФКР(ss);ЗаменитьСчета2011(ss);
                      ss='РПО_НФА'                  ;inicrdФКР(ss);ЗаменитьСчета2011(ss);
  fi;
--  if Флаг_КртСПРАВКА :ss='РПО_НФА_СПРАВКА'     ;inicrdФКР(ss);ЗаменитьФКР(ss);ss='РПО_НФА_СПРАВКА_ПРОВОДКИ';inicrdФКР(ss);ЗаменитьФКР(ss);fi;
  CloseProgress;
  k=ПозицииЗаменаФКР2011;
  ll=false;
  for j=1..k do
    if pos('?',ФКР2011до[j])>0:ll=true;
       break;
    fi;
  od;
  if ll:
     t=ДлинаМассива(addaccnil);
     copyarray(addaccnil,ForSelect);
     ClearVariable(addaccnil);
     for z=1..t do
       ll=false;
       for j=1..k do
         ll=match(ForSelect[z],ФКР2011до[j]+'.'+КОСГУ2011до[j]);
         if ll:break;fi;
       od;
       if not ll:
          for j=1..k do
            ll=match(ForSelect[z],ФКР2011[j]+'.'+КОСГУ2011[j]);
            if ll:break;fi;
          od;
       fi;
       if not ll:addinarray(addaccnil,true,false,ForSelect[z]);
       fi;
     od;
  fi;
  ----------------------------------------------------------------------------------------------------
  ----------------- работа с операцией ДНФА.ВНПР.ХЭ --------------------------------------------------
--  if Name_A('ДНФА.ВНПР.ХЭ')<>' ':-- проверка ЗАБ.00 в ДНФА.ВНПР.ХЭ
--     if SignCardFile('ДНФА.ВНПР.ХЭ',false)='РПО_ДНФА':
--        wa=openworkarea('РПО_ДНФА','','UKEY='+recordtostring(signtorecord('ДНФА.ВНПР.ХЭ',false)) );
--        if records(wa)=1:

--           war=OpenArray(wa,1,'ЗАПРОС','','pos("ЗАБ.00.",ОТВЕТ)>0');
--              rs=records(war);
--              if rs>0:
--                 if not GetFieldL(wa,1,'CLOSEDMODFOB') or trim(ВзятьСхему)='':
--                    try
--                      BeginChanging(war,false);
--                        for j=1..rs do
--                            ss0=GetFieldS(war,j,'ОТВЕТ');
--                            ss=ЗаменитьЗАБ00_field(ss0,0);
--                            if ss0<>ss:
--                               k=PutFieldS(war,j,'ОТВЕТ',ss);
--                            fi;
--                        od;
--                      EndChanging(war);
--                    except
--                      CancelChanging(war);
--                    end;
--                  | true: message('Запись ДНФА.ВНПР.ХЭ заблокирована!^MИсправление ЗАБ.00 на ЗАБ.21 невозможно!');
--                 fi;
--              fi;
--           CloseWorkArea(war);
--           war=OpenArray(wa,1,'ЗАПРОС','','pos("КОСГУ",СПР)>0');
--              rs=records(war);
--              if rs=2:
--                 if not GetFieldL(wa,1,'CLOSEDMODFOB') or trim(ВзятьСхему)='':
--                    try
--                      BeginChanging(war,false);
--                        j=0;k=0;
--                        if trim(GetFieldS(war,1,'ОТВЕТ'))='КОСГУ.4??*':j=1;
--                         | trim(GetFieldS(war,1,'ОТВЕТ'))='КОСГУ.271*':k=1;
--                        fi;
--                        if trim(GetFieldS(war,2,'ОТВЕТ'))='КОСГУ.4??*':j=2;
--                         | trim(GetFieldS(war,2,'ОТВЕТ'))='КОСГУ.271*':k=2;
--                        fi;
--                        if  j>0 and k>0:
--                            ss0=trim(GetFieldS(war,k,'НОМПРОВОДКИ'));
--                            ss =trim(GetFieldS(war,j,'НОМПРОВОДКИ'));
--                            if match(ss0,'1?2о3-4?5?*') and
--                               match(ss ,'1?2-3о4?5?*')   :
--                                 DeleteRecord(war,j);
--                                 ss=SubStr(ss0,1,5)+'о'+SubStr(ss0,7,255);
--                                 j=PutFieldS(war,1,'НОМПРОВОДКИ',ss);
--                                 j=PutFieldS(war,1,'СПР','');
--                            fi;
--                        fi;
--                      EndChanging(war);
--                    except
--                      CancelChanging(war);
--                    end;
--                  | true: message('Запись ДНФА.ВНПР.ХЭ заблокирована!^MИсправление ЗАБ.00 на ЗАБ.21 невозможно!');
--                 fi;
--              fi;
--           CloseWorkArea(war);
--           war=OpenArray(wa,1,'ЗАПРОС','','pos("1001",ЗАГОЛОВОК)>0 or pos("1001",Подсказка)>0');
--              rs=records(war);
--              if rs>0:
--                 if not GetFieldL(wa,1,'CLOSEDMODFOB') or trim(ВзятьСхему)='':
--                    try
--                      BeginChanging(war,false);
--                        rs=records(war);
--                        for j=1..rs do
--                            ss0=GetFieldS(war,rs-j+1,'ЗАГОЛОВОК');
--                            ss=ЗаменаПодстроки(ss0,'1001','3001');
--                            if ss0<>ss:
--                               k=PutFieldS(war,rs-j+1,'ЗАГОЛОВОК',ss);
--                            fi;
--                            ss0=GetFieldS(war,rs-j+1,'Подсказка');
--                            ss=ЗаменаПодстроки(ss0,'1001','3001');
--                            if ss0<>ss:
--                               k=PutFieldS(war,rs-j+1,'Подсказка',ss);
--                            fi;
--                            ss0=GetFieldS(war,1,'ЗАГОЛОВОК');
--                        od;
--                      EndChanging(war);
--                    except
--                      CancelChanging(war);
--                    end;
--                  | true: message('Запись ДНФА.ВНПР.ХЭ заблокирована!^MИсправление ЗАБ.00 на ЗАБ.21 невозможно!');
--                 fi;
--              fi;
--           CloseWorkArea(war);

--        fi;
--        CloseWorkArea(wa);
--     fi;
--  fi;
  ----------------- работа с операцией ДНФА.ВНПР.ХЭ --------------------------------------------------
  ----------------------------------------------------------------------------------------------------

  t=ДлинаМассива(addaccnil);
  if t>0: --  есть счета по которым нет стандартной таблицы конвертации!!!
     if ВопрДаОтказ("Найдены счета, которых нет^Mв стандартной таблице конвертации!!!^MДобавить в таблицу?")=кмдВерно:
        for z=1..t do
          ПозицииЗаменаФКР2011=ПозицииЗаменаФКР2011+1;
          ФКР2011до[ПозицииЗаменаФКР2011]  =SubStr(addaccnil[z],1,20);
          КОСГУ2011до[ПозицииЗаменаФКР2011]=SubStr(addaccnil[z],22,3);
        od;
     fi;
  fi;
  t=ДлинаМассива(addforacc);
  for z=1..t do
      addacc_ALL(addforacc[z]);
  od;
  t=ДлинаМассива(addacc);
  if t>0:
    РАБ.КСА.НАЧАТЬ;
    for z=1..t do
      РАБ.КСА.ДобавитьСч(addacc[z],if(match(addacc[z],'ЗАБ.*'),'ЗАБ','БАЛ'),false);
    od;
    if Раб.КСА.Закончить(True):Message('Счета успешно добавлены');fi;
  fi;
  ToggleAutorefresh(autoref);
  ClearVariable(ВР_НФА);     -- НФА с найденной группой
  ClearVariable(ВР_НФА_ГР);  -- найденная группа
  ClearVariable(ВР_НФА_0);   -- НФА по которым искали группу и всегда неудачно
  ClearVariable(ВР_НФА_ГР_0);-- неудачные группы через пробел

  РАБ.НФА.B01.РасчетЗавершен('Замена счетов завершена^MКоличество замен: '+str(kolrepl)+'^MЗатрачено время:',time-time0);
end;


Proc ЗаменитьСчАм2009_war(wa:i;stab:s;fnfa:s;fHistory:s;fcrd:s); -- замена по подтаблице
 var war,rs,rs1,z,lf,lf0,t,x,i:i;
 var nfa,ss,ksgu,ss0,ss1,sshistory:s;
 var lhistorynil:l;
 lf=LengthOfArray(fields);
 lf0=LengthOfArray(fields0);
 rs=Records(wa);
   if stab<>'':war=OpenArray(wa,1,stab,'','match('+fnfa+',"НФА.101.09.*") or match('+fnfa+',"НФА.102.0?.*")');fi;
     for t=1..rs do
      ProgressPos(t);
      if stab<>'':
        ss=GetFieldS(wa,t,fcrd);-- автокурсор на запись при чтении
        rs1=records(war);
        if rs1>0:-- подтаблица не пустая - работаем...
          for z=1..rs1 do
           nfa=SubStr(GetFieldS(war,z,fnfa),1,7);
             for x=1..lf do -- замена по каждому полю
              ss0=GetFieldS(war,z,fields[x]);
              ss='';
              if match(ss0,'???.????.???????.???.?.104.08.???') and nfa='НФА.102':ss=SubStr(ss0,1,27)+'09.'+SubStr(ss0,31,3);ss1=SubStr(ss0,1,27)+'09.420';
               | match(ss0,'???.????.???????.???.?.104.07.???') and nfa='НФА.101':ss=SubStr(ss0,1,27)+'08.'+SubStr(ss0,31,3);ss1=SubStr(ss0,1,27)+'08.410';
              fi;
              if ss<>'':--прошла замена
                 i=PutFieldS(war,z,fields[x],ss);
                 kolrepl=kolrepl+1;
                 addinarray(addacc,true,false,ss1);
              fi;
             od;
          od;
        fi;
      fi;
      -------- замена полей картотеки ----------
      if stab    ='':-- в картотеке плановая замена
         nfa=SubStr(GetFieldS(wa,t,fnfa),1,7);
           for x=1..lf0 do -- замена по каждому полю
            ss0=SubStr(GetFieldS(wa,t,fields0[x]),1,7);
            ss='';
            if match(ss0,'???.????.???????.???.?.104.08.???') and nfa='НФА.102':ss=SubStr(ss0,1,27)+'09.'+SubStr(ss0,31,3);ss1=SubStr(ss0,1,27)+'09.420';
             | match(ss0,'???.????.???????.???.?.104.07.???') and nfa='НФА.101':ss=SubStr(ss0,1,27)+'08.'+SubStr(ss0,31,3);ss1=SubStr(ss0,1,27)+'08.410';
            fi;
            if ss<>'':--прошла замена
               i=PutFieldS(wa,t,fields0[x],ss);
               kolrepl=kolrepl+1;
               addinarray(addacc,true,false,ss1);
            fi;
           od;
       | true:--после замены в подтаблице - замена в текущей записи таблицы
--           for x=1..lf0 do -- замена по каждому полю
--            ss0=GetFieldS(wa,t,fields0[x]);
--            if length(ss0)>19:-- проверка на возможность наличия ФКР
--              ss=ЗаменитьФКР_field(ss0,endkosgu,fields0_[x]);
--              if lastfkr<>'':--прошла замена
--                 i=PutFieldS(wa,t,fields0[x],ss);
--              fi;
--            fi;
--           od;

         if endkosgu<>'':
           for x=1..lf0 do -- замена по каждому полю
            ss0=SubStr(GetFieldS(wa,t,fields0[x]),1,7);
            ss='';
            if match(ss0,'???.????.???????.???.?.104.08.420'):ss=SubStr(ss0,1,27)+'09.'+SubStr(ss0,31,3);ss1=SubStr(ss0,1,27)+'09.420';
             | match(ss0,'???.????.???????.???.?.104.07.410'):ss=SubStr(ss0,1,27)+'08.'+SubStr(ss0,31,3);ss1=SubStr(ss0,1,27)+'08.410';
            fi;
            if ss<>'':--прошла замена
               i=PutFieldS(wa,t,fields0[x],ss);
               kolrepl=kolrepl+1;
               addinarray(addacc,true,false,ss1);
            fi;
           od;
         fi;
      fi;
     od;
   if stab<>'':CloseWorkArea(war);fi;
end;

Proc ЗаменитьСчАм2009(crd:s);
 var wa,war,rs,larray1,larray2,larray3,history,i1,j,p:i;
 var stab,fnfa,fHistory,ss:s;
 showprogress(1,'Замена счетов ['+crd+']');
-- ClearVariable(subtab);
 ClearVariable(fields);
 ClearVariable(fields_);
 larray1=LengthOfArray(fieldskosgu);
 larray2=LengthOfArray(inicrdfield);
 larray3=LengthOfArray(fieldshistory);
 history=1;
 wa=OpenWorkArea(crd,'');
 rs=Records(wa);
 if rs>0:--есть записи для конвертации
   showprogress(rs,'Замена счетов ['+crd+']');
   try
     endkosgu='';
     --- заполняем массив полей для обработки ----------
     ClearVariable(fields0);
     ClearVariable(fields0_);
     p=0;
     for j=1..larray2 do
       if pos('@',inicrdfield[j])<1:p=p+1;
             fields0[p]=inicrdfield[j];fields0_[p]=inicrdfield_[j];
       fi;
     od;
     ---------------------------------------------------
     BeginChanging(wa);
       for i1=1..larray1 do
         if pos('@',fieldskosgu[i1])>0:-- поле НФА находится в подтаблице => работаем с этой подтаблицей
            stab    =ВыделитьСлово(1,fieldskosgu[i1],'@');
            fnfa    =ВыделитьСлово(2,fieldskosgu[i1],'@');
            fHistory='';
            if larray3>0:
               ss=ВыделитьСлово(1,fieldshistory[history],'@');
               if ss=stab:fHistory=ВыделитьСлово(2,fieldshistory[history],'@');history=history+1;fi;
            fi;
            --- заполняем массив полей для обработки ----------
            ClearVariable(fields);
            ClearVariable(fields_);
            p=0;
            for j=1..larray2 do
              if pos('@',inicrdfield[j])>0:
                 if ВыделитьСлово(1,inicrdfield[j],'@')=stab:p=p+1;
                    fields[p]=ВыделитьСлово(2,inicrdfield[j],'@');
                    fields_[p]=inicrdfield_[j];
                 fi;
              fi;
            od;
            ---------------------------------------------------
            ЗаменитьСчАм2009_war(wa,stab,fnfa,fHistory,fieldscur);
          | true:-- поле НФА находится в таблице => работаем с этой таблицей
            stab    ='';
            fnfa    =fieldskosgu[i1];
            fHistory='';
            ---------------------------------------------------
            ЗаменитьСчАм2009_war(wa,stab,fnfa,fHistory,fieldscur);

         fi;
       od;
     EndChanging(wa);
   except
     CancelChanging(wa);
   end;
 fi;
 CloseWorkArea(wa);
end;

Proc ЗаменитьСчетаАморт2009_ПриНажатии(Стр: Целое; Кол: Целое; Двойной: Логич);
 var time0,t,z:i;
 var ss:s;
 var ll:l;
 var autoref:l;
  autoref=Autorefresh;
  time0=time;
  kolrepl=0;
  ClearVariable(addacc);
  ClearVariable(notconvacc);
  createsortacckosgu('2010');
  showprogress(1,'Замена счетов...');
  if Флаг_КртОст  :ss='РПО_ОСТ_НФА'     ;inicrdСчАм2009(ss);ЗаменитьСчАм2009(ss);fi;
  if Флаг_КртДвиж :ss='РПО_ОПЕРАЦИИДНФА';inicrdСчАм2009(ss);ЗаменитьСчАм2009(ss);fi;
  if Флаг_КртАморт:ss='РПО_НАЧ_АМОРТ';inicrdСчАм2009(ss);ЗаменитьСчАм2009(ss);ss='РПО_НАЧ_АМОРТ_TR';inicrdСчАм2009(ss);ЗаменитьСчАм2009(ss);fi;
  if Флаг_КртИнв  :ss='РПО_ИНВКАРТ_ОС';inicrdСчАм2009(ss);ЗаменитьСчАм2009(ss);fi;
  CloseProgress;
--  t=ДлинаМассива(addaccnil);
--  if t>0: --  есть счета по которым нет стандартной таблицы конвертации!!!
--     if ВопрДаОтказ("Найдены счета, которых нет^Mв стандартной таблице конвертации!!!^MДобавить в таблицу?")=кмдВерно:
--        for z=1..t do
--          ПозицииЗаменаФКР=ПозицииЗаменаФКР+1;
--          ФКР2007[ПозицииЗаменаФКР]  =SubStr(addaccnil[z],1,20);
--          КОСГУ2007[ПозицииЗаменаФКР]=SubStr(addaccnil[z],22,3);
--        od;
--     fi;
--  fi;
  t=ДлинаМассива(addacc);
  if t>0:
    РАБ.КСА.НАЧАТЬ;
    for z=1..t do
      РАБ.КСА.ДобавитьСч(addacc[z],'БАЛ',false);
    od;
    if Раб.КСА.Закончить(True):Message('Счета успешно добавлены');fi;
  fi;
  ToggleAutorefresh(autoref);
  РАБ.НФА.B01.РасчетЗавершен('Замена счетов завершена^MКоличество замен: '+str(kolrepl)+'^MЗатрачено время:',time-time0);
end;

func ПриВходеФлаг(Поле: Строка; Итер: Целое): Логич;
 if Поле='Флаг_КртОст'     or Поле='ФлОст_'        :Флаг_КртОст     =not Флаг_КртОст     ;
  | Поле='Флаг_КртДвиж'    or Поле='ФлДвиж_'       :Флаг_КртДвиж    =not Флаг_КртДвиж    ;
  | Поле='Флаг_КртАморт'   or Поле='ФлАморт_'      :Флаг_КртАморт   =not Флаг_КртАморт   ;
  | Поле='Флаг_КртИнв'     or Поле='ФлИнвКарт_'    :Флаг_КртИнв     =not Флаг_КртИнв     ;
  | Поле='Флаг_КртМОЛМОЛ'  or Поле='ФлМОЛМОЛ_'     :Флаг_КртМОЛМОЛ  =not Флаг_КртМОЛМОЛ  ;
  | Поле='Флаг_КртСПРАВКА' or Поле='ФлСПРАВКА_'    :Флаг_КртСПРАВКА =not Флаг_КртСПРАВКА ;
  | Поле='Флаг_ЗАБ21'      or Поле='ФлЗАБ21_'      :Флаг_ЗАБ21      =not Флаг_ЗАБ21      ;
  | Поле='Флаг_ДНФА'       or Поле='ФлДНФА_'       :Флаг_ДНФА       =not Флаг_ДНФА       ;
  | Поле='ФлКонвСчета11'   or Поле='ФлКонвСчета11_':ФлКонвСчета11   =not ФлКонвСчета11   ;
  | Поле='ФлКонвФКР11'     or Поле='ФлКонвФКР11_'  :ФлКонвФКР11     =not ФлКонвФКР11     ;
  | Поле='ФлКонвДопАн'     or Поле='ФлКонвДопАн_'  :ФлКонвДопАн     =not ФлКонвДопАн     ;
  | Поле='ФлКонвДопСч'     or Поле='ФлКонвДопСч_'  :ФлКонвДопСч     =not ФлКонвДопСч     ;
 fi;
  ^false;
end;

func ПриВходеФКР(Поле: Строка; Итер: Целое): Логич;
  var ss:s;
  if Поле='ФКР2009':^true;
   | Поле='ФКР2010':^true;
   | Поле='КОСГУ2009':^true;
   | Поле='КОСГУ2010':^true;
   | Поле='кнФКР2009':ss=ВыборПризнака('ФКР.*');if length(ss)>10:ФКР2009[Итер]=Delete(ss,1,4);fi;
   | Поле='кнФКР2010':ss=ВыборПризнака('ФКР.*');if length(ss)>10:ФКР2010[Итер]=Delete(ss,1,4);fi;
   | Поле='кнКОСГУ2009':ss=ВыборПризнака('КОСГУ.3*');if length(ss)>8:КОСГУ2009[Итер]=Delete(ss,1,6);fi;
   | Поле='кнКОСГУ2010':ss=ВыборПризнака('КОСГУ.3*');if length(ss)>8:КОСГУ2010[Итер]=Delete(ss,1,6);fi;

   | Поле='ФКР2011до':^true;
   | Поле='ФКР2011':^true;
   | Поле='КОСГУ2011до':^true;
   | Поле='КОСГУ2011':^true;
   | Поле='кнФКР2011до'  :ss=ВыборПризнака('ФКР.*')   ;if length(ss)>10:ФКР2011до  [Итер]=Delete(ss,1,4);fi;
   | Поле='кнФКР2011'    :ss=ВыборПризнака('ФКР.*')   ;if length(ss)>10:ФКР2011    [Итер]=Delete(ss,1,4);fi;
   | Поле='кнКОСГУ2011до':ss=ВыборПризнака('КОСГУ.3*');if length(ss)>8 :КОСГУ2011до[Итер]=Delete(ss,1,6);fi;
   | Поле='кнКОСГУ2011'  :ss=ВыборПризнака('КОСГУ.3*');if length(ss)>8 :КОСГУ2011  [Итер]=Delete(ss,1,6);fi;
  fi;
  ^false;
end;

func ПриПроверкеФКР(Поле: Строка; Итер: Целое; Знач: Строка): Логич;

  ^true;
  ^false;
end;

var ПОЛЕПОДТАБЛИЦЫ_ []:s;
var ОСТАТОК_        []:l;
var ДЛЯВСЕХ_        []:l;
var НОМПРОВОДКИ_    []:s;
var МАКСКОЛПРОВ_    []:i;
var КОНВ_           []:i;
var NДНФА           []:i;-- номер строки с описанием контрольных значений полей
var KДНФА           []:s;-- код операции
var INI_            []:s;-- способ вывода столбцов
var Т_СООТВ_АН[]:s; -- итоговое соответствие строковых полей куда грузить
var З_СООТВ_АН[]:s; -- итоговое соответствие строковых полей откуда грузить
var Т_СООТВ_Ч []:s; -- итоговое соответствие числовых полей куда грузить
var З_СООТВ_Ч []:s; -- итоговое соответствие числовых полей откуда грузить
--НФА;ИМЯНФА;СЧНФА;КОРСЧНФА;АМСЧНФА;ОСТНФА;АН01;АН02;АН03;АН04;АН05;АН06;АН07;АН08;АН09;АН10;АН11;АН12;АН13;АН14;АН15;АН16;АН17;АН18;АН19;АН20;АН21;АН22;АН23;АН24;АН25;СЧ02;СЧ03;СЧ04;СЧ05;СЧ06;СЧ07;СЧ08;СЧ09;СЧ10;СЧ11;КМНТ
--КОЛНФА;СУМНФА;АМСУМНФА;Ч01;Ч02;Ч03;Ч04;Ч05;СЧ01;

Префикс      []:s;
Карт         []:s;
фильтркарт   []:s;
фильтрподтабл[]:s;
УслНаПроводки[]:s;
СекцВыгрКартФильтр:section;
Упр_ФильтрыКарт:Упр;
УпрВыгрКартФильтр:l;

МестоВыгрузкиНФА:s;
ДатаОстатковДляВыгрузкиНФА:d;
ДатаНовыхОстатковНФА:d;
н25НФА:i;
ВыгрузкаКартотекСаналитикойНФА:l;
ЗагрАнКарт :l;
ЗагрАнТекст:l;
ДопУслСч:s;
ДопУслАн:s;

Lo[]:l;
var ЗагрузженыОписанияОпераций:l;-- проверка на загрузку операций в данной сессии


УпрКонвОпер:l;
Секция_ТаблицаСоответствииОпераций_позици:i;
Секция_ТаблицаСоответствииОпераций_позиции:section;

Путь_РПО_ОПЕРАЦИИДНФА_CRD    :s;
Путь_РПО_ДНФА_CRD            :s;
Путь_СоответствиеОпераций_ini:s;
ДатаНачалаЗагрузки           :d;
ДатаКонцаЗагрузкиНеВключая   :d;
var КолОперДляЗагрузки:i;
var Т[]:s;
var Т_[]:s=Name_A('ДНФА.'+Т[$]);


var З_NN[]:i;
var З_N []:i;

var З_КОД[]:s;
var З_СООТВ[]:s;-- строка соответствий вида x;т1=з5;т2=з2;т3=з7 ,
        -- где х- 0,1,2 (0=ни разу не вызывалась таблица соответствий,
        --       1=вызывалась, но не утверждена,
        --       2=вызывалась и утверждена т.е готова к конвертации)
        -- т1,т2,т3... = номера строк операции под которую будут конвертироваться данные
        -- з5,з2,з7... = номера строк операции которая будет конвертироваться
var З_ИМЯ[]:s;
var З_КОД_ИМЯ[]:s;
var З_ИСКЛСПР[]:s;
var З_РАБОПЕР[]:s; -- список рабочих операций, берется из РПО_ОПЕРАЦИИДНФА.crd


var З []:s=З_КОД[З_NN[$]];
var З_[]:s=З_ИМЯ[З_NN[$]];


func СЧЕТ104поСЧНФА(СЧНФА:s):s;
  var фкр:s;
  if не соотв(СЧНФА,'???.????.???????.???.?.10?.??.???'):^'';fi;
  фкр=SubStr(СЧНФА,1,23);
  if соотв(СЧНФА,'???.????.???????.???.?.101.01.???'):^фкр+'104.01.410';
   | соотв(СЧНФА,'???.????.???????.???.?.101.02.???'):^фкр+'104.02.410';
   | соотв(СЧНФА,'???.????.???????.???.?.101.03.???'):^фкр+'104.03.410';
   | соотв(СЧНФА,'???.????.???????.???.?.101.04.???'):^фкр+'104.04.410';
   | соотв(СЧНФА,'???.????.???????.???.?.101.05.???'):^фкр+'104.05.410';
   | соотв(СЧНФА,'???.????.???????.???.?.101.06.???'):^фкр+'104.06.410';
   | соотв(СЧНФА,'???.????.???????.???.?.101.07.???'):^фкр+'104.07.410';
   | соотв(СЧНФА,'???.????.???????.???.?.101.09.???'):^фкр+'104.08.410';
   | соотв(СЧНФА,'???.????.???????.???.?.102.01.???'):^фкр+'104.09.420';
   | true:^'';
  fi;
end;

var СписокКартотек[]:s;
Proc ЗаполнитьСписокКартотек;
 var ii:i;
 ii=ВзятьИменаКартотек('',СписокКартотек,false,false,'');
-- ii=ВзятьИменаКартотек('РПО_*',СписокКартотек,false,false,'');
end;
Proc ПриОткрытии(Откр:Logical);
 BlnName=РАБ.НФА.B01.БланкИмя;
 ЗаполнитьСписокКартотек;
 ЗагрузженыОписанияОпераций=false;
 Секция_ТаблицаСоответствииОпераций_позиции.visible=УпрКонвОпер;
 СекцВыгрКартФильтр.visible=УпрВыгрКартФильтр;
 СекцЗаменаФКР.visible=УпрЗаменаФКР;
 СекцНастройкаНИ.visible=УпрЗаменаСч162н;
 СекцЗаменаФКР2011.visible=УпрЗаменаСч162н;
 СекцЗаменаПризнаков2011.visible=УпрЗаменаСч162н;
 СекцЗаменаСчетов.visible=УпрЗаменаСч162н;
 БРО_НФА    =ПеремПБ('НФА')+'\Картотеки\';
 БРО_НФА_лок=ПеремПБ('LocalData')+'\Картотеки\';
end;

Func ЗагрузкаКартотеки(CardName:s;CardFileName:s):l;
 var ii:i;
 if CardName='':
    ii=ВзятьИменаКартотек('',ForSelect,False,False,'');
    ii=Alternate('Выберите картотеку в которую будет произведена загрузка...', ForSelect);
    if ii>0:CardName=ForSelect[ii];
     | true:^false;
    fi;
 fi;
 if CardFileName='':
    if ВыборФайла(CardFileName,"Выбор файла с данными для картотеки "+CardName, "Данные картотек(*.Crd)|*.Crd")<>cmOk:^false;fi;
 fi;
 CardFileName=SubStr(CardFileName,1,Length(CardFileName)-4);
 --if 1=Вопрос('Подтверждение загрузки...','Загрузка картотеки '+CardName,'Загрузить;Пропустить',mtConfirmation):^false;fi;
-- try
--  ImportCard(ieCRD,CardName,cdf+CardFileName,Ложь,Ложь,Ложь,Ложь,дублЗаменить,Ложь,Ложь,Ложь);
  ImportCard(ieCRD,CardName,CardFileName,Ложь,Ложь,Ложь,Ложь,дублЗаменить,Ложь,Ложь,Ложь);
-- except
--  ^false;
-- end;
 ^true;
end;
--варианты:
--а первая проводка в журнале остатков
--   1 +М.Х.*:ДУЧЕТ=пусто(обязательно для ввода для правильного начисления переоценки) ДЭКСПЛ=ВзятьДЭКСПЛ из картотеки
--   2 +М.Э.*:ДУЧЕТ=пусто(обязательно для ввода для правильного начисления переоценки) ДЭКСПЛ=ВзятьДЭКСПЛ из картотеки если не нашли пишем 01.01.2999(чтобы не давать проводить при проверке)
--б первая проводка не в журнале остатков
--   1 пришло новое(106,302,208)               :ДУЧЕТ=дата проводки, ДЭКСПЛ=ВзятьДЭКСПЛ(+М.Э.*) из проводок
--   2 пришло б\у(304.04,401.01.180,401.01.15?):ДУЧЕТ=дата проводки, ДЭКСПЛ=? пишем 01.01.2999(чтобы не давать проводить при проверке)
2func0 ВзятьДУЧЕТ_ДЭКСПЛ(НФА:s;ИНВ:s;dk:d):s;
 var t,t1,war,wa:i;
 var dd :d;--ДЭКСПЛ
 var dd1:d;--ДУЧЕТ
 var услсч,МЕСТО,ss:s;
 -- ^'';
  if ИНВ='':^'';fi;
  услсч='*.?.'+SubStr(НФА,5,7)+'3??';
  for transaction t='+'+услсч+'/*&~'+услсч+'{'+НФА+'&'+ИНВ+'}',1.1.100,dk+1 do
--    кмнт=trim(ПроводКоммент(t));
--    кмнт=ВыделитьСлово(1,кмнт,'/');
--    if Соотв(кмнт,'??.??.????'):
--      if StringToDate(кмнт)>1.1.100:^кмнт;fi;
--    fi;
--    кмнт='';
    if ПроводКартотека(t)='РПО_ОСТ_НФА':
       МЕСТО='';
       wa=OpenWorkArea('РПО_ОСТ_НФА','','UKEY='+ЗаписьВстроку(ПроводЗапись(t)));
         МЕСТО=trim(GetFieldS(wa,1,'М'));
         war=OpenArray(wa,1,'ПОЗИЦИИ','','НФА="'+НФА+'" and ИНВ="'+ИНВ+'"');
           if records(war)>0:
              dd=GetFieldD(war,1,'ДЭКСПЛ');
           fi;
         CloseWorkArea(war);
       CloseWorkArea(wa);
       if pos('М.Х.',МЕСТО)=1:dd1=1.1.100;
          if dd<1.1.1800:-- попытка найти проводку с +М.Э.* -М.Х.*
            for transaction t1='+'+услсч+'/*&~'+услсч+'{'+НФА+'&'+ИНВ+'&(+М.Э.*)&(-М.Х.*)}',1.1.100,dk+1 do
              dd=ПроводДата(t1);
            od;
          fi;
        | pos('М.Э.',МЕСТО)=1:dd1=1.1.100;if dd<1.1.1800:dd=01.01.2999;fi;
       fi;
     | true:
       dd1=ПроводДата(t);
       ss=ПроводКре(t);
       if соотв(ss,'*.304.04.???') or соотв(ss,'*.401.01.180') or соотв(ss,'*.401.01.15?') or ss='00' or соотв(ss,'*.401.03.000'):dd=1.1.100;
        | true:-- новое!
            for transaction t1='+'+услсч+'/*&~'+услсч+'{'+НФА+'&'+ИНВ+'&(+М.Э.*)}',1.1.100,dk+1 do
              dd=ПроводДата(t1);
            od;
       fi;
    fi;

  od;
  ^ДатуВстроку(dd1)+'#'+ДатуВстроку(dd);
2end0;
var УСЛНФА:s;
var ДОПАН:s;
var НФА:s;
var КБК:s;
var СЧНФА:s;

var ЗаписиАнаКвыгрузке[]:s;
var ЗаписиАнаКвыгрузке0[]:s;
var СписокКартАна[]:s;
var СписокСвертка[]:s;
var ПризнакиКвыгрузке[]:s;

var М_МОЛ_ОС           []:s;

2_-- Остатки НФА в разрезе ананлитики+инв карточки+[счета+аналитика+картаналитика(в т.ч. список НФА)]
2func0 2ОстаткиНФА0(2_МестоВыгрузки:s;0.ДатаОстатков:d;ДатаНовыхОстатков:d;ИтогМассив:S;н25:i;ВыгрузкаКартотекСаналитикой:l;ДУслСч:s;ДУслАн:s):i;
-- СпОб='НФА&ИНВ&РСБ|ПД&МОЛ' Через & идут группы справочников(или отдельные справочники),
-- через | идут справочники одной группы с условием обязательности любого справочника из группы.
-- СпДоп='РСБ|ПД|ЦС|М|МОЛ' список необязательных справочников через |
-- ИсклСпр='ДНФА' исключеные справочники или аналитические группы (пока только одного)справочника 'ДНФА.ПРИХ.*|ДНФА.РАСХ.*'
-- ИтогМассив= [короткое имя массива бланка] в который будут копироваться данные из результирующего массива [АНДОП], если это имя не пустая строка
-- УслЦена='Ц>1000' или '(Ц>1000)&(Ц<10001)' или 'Ц<1001' - условие на цену
-- УслСум
-- УслКол
-- УслВал
--

  var УчитыватьМОЛ:l;
  var КОЛНФА,СУМНФА:n;
  var ii,jj,j,t,k,iiCRD,ПОЗИЦИИ_ukey,ПОЗИЦИИ_ОС_ukey,ВремяРасчета,pp:i;
  var ss,sst,s0,sssubtab,sstab,ИНВ,ДЭКСПЛ,ДУЧЕТ:s;
  var услсч70_ОС,услсч25_ОС,услсч70_неОС,услсч25_неОС,услсч_ОС,услсч_неОС,услсчам25_ОС,услсчам70_ОС:s;
  var услан70_ОС,услан25_ОС,услан70_неОС,услан25_неОС,услан_ОС,услан_неОС,услсчам_ОС:s;
  var ЗначениеАвтообработка,ll:l;
  var nn:n;
  ВремяРасчета=time;
--  УчитыватьМОЛ=false;
  УчитыватьМОЛ=true;
  if длина(ДУслСч)>0:if Удалить(ДУслСч,2,длина(ДУслСч)-2)<>'()':ДУслСч='('+ДУслСч+')';fi;ДУслСч=ДУслСч+'&';fi;
  if длина(ДУслАн)>0:if Удалить(ДУслАн,2,длина(ДУслАн)-2)<>'()':ДУслАн='('+ДУслАн+')';fi;ДУслАн=ДУслАн+'&';fi;
  услсч70_ОС  ='('+ДУслСч+'(*.?.10?.??.???&~*.?.104.??.???)|ЗАБ.??.???.??)';
  услсч25_ОС  ='('+ДУслСч+'(*.?.101.??.???|*.?.102.??.???)|ЗАБ.??.???.??)';
  услсчам70_ОС='*.?.101.01.???|*.?.101.02.???|*.?.101.03.???|*.?.101.04.???|*.?.101.05.???|*.?.101.06.???|*.?.101.10.???|*.?.103.??.???';
  услсчам25_ОС='*.?.101.01.???|*.?.101.02.???|*.?.101.03.???|*.?.101.04.???|*.?.101.05.???|*.?.101.06.???|*.?.101.09.???|*.?.102.??.???';
  услан70_ОС  =ДУслАн+'(НФА.101.01.*|НФА.101.02.*|НФА.101.03.*|НФА.101.04.*|НФА.101.05.*|НФА.101.06.*|НФА.101.10.*|НФА.103.*)';
  услан25_ОС  =ДУслАн+'(НФА.101.??.*|НФА.102.*)';
  услсч70_неОС='('+ДУслСч+'(*.?.10?.??.???&~*.?.104.??.???)|ЗАБ.??.???.??)';
  услсч25_неОС='('+ДУслСч+'(*.?.10?.??.???&~(*.?.104.??.???|*.?.101.??.???|*.?.102.??.???))|ЗАБ.??.???.??)';
  услан70_неОС=ДУслАн+'(НФА.105.*|НФА.101.07.*|НФА.101.08.*|НФА.101.09.*|НФА.102.*)';
  услан25_неОС=ДУслАн+'(НФА.105.*)';
  if н25=2:
    услсч_ОС  =услсч25_ОС  ;
    услсч_неОС=услсч25_неОС;
    услан_ОС  =услан25_ОС  ;
    услан_неОС=услан25_неОС;
    услсчам_ОС=услсчам25_ОС;
   | true:
    услсч_ОС  =услсч70_ОС  ;
    услсч_неОС=услсч70_неОС;
    услан_ОС  =услан70_ОС  ;
    услан_неОС=услан70_неОС;
    услсчам_ОС=услсчам70_ОС;
  fi;
  ЗначениеАвтообработка=Автообработка;
  ЗадатьАвтообработку(false);
  ОбработатьАналит;
  ОчиститьПеременную(ЗаписиАнаКвыгрузке);
  ОчиститьПеременную(СписокКартАна);
  ОчиститьПеременную(СписокСвертка);
  ОчиститьПеременную(ПризнакиКвыгрузке);
  ОчиститьПеременную(М_МОЛ_ОС);
  ОчиститьПеременную(forselect1);
  ОчиститьПеременную(forselect2);
  ОчиститьПеременную(forselect3);
  ОчиститьПеременную(РАБ.НФА.B03.ВыгрузитьКартотекуФильтр);
  ОчиститьПеременную(РАБ.НФА.B03.СоздатьCRD_VAR);
  ОчиститьПеременную(РАБ.НФА.B03.СоздатьCRD_VAL);
  ОчиститьПеременную(Раб.НФА.Свертка.tempSError);


--  ii=Раб.НФА.Свертка.ОстаткиВразрезеСчетовИаналитики('(*.?.10?.??.???&~*.?.104.??.???)|ЗАБ.??.???.??','',ДатаОстатков,'М&МОЛ&НФА','ИНВ|К|Ф|РБС|ГГ|ММДД','ДНФА','','','','','');

  -- Работаем с остатками по которым возможно начисление амортизации при соответствующей цене
  ss='Выделение остатков по ОС принятых к учету';
  if не УчитыватьМОЛ:
    ii=Раб.НФА.Свертка.ОстаткиВразрезеСчетовИаналитики(ss,услсч_ОС,услан_ОС,ДатаОстатков,'М&НФА'    ,'ИНВ|МОЛ|П|К|КВ|Ф|КТ|ВКЛ|ГГ|Ц|ПРТ|ПГР|БО|ВД|ММДД','ДНФА',ИтогМассив,'','С>=0','К>0','','');
--    ii=Раб.НФА.Свертка.ОстаткиВразрезеСчетовИаналитики(ss,услсч_ОС,услан_ОС,ДатаОстатков,'М&НФА'    ,'УЧН|МОЛ|П|К|КВ|Ф|РБС|КТ|ВКЛ|ГГ|Ц|ПРТ|ПГР|БО|ВД|ММДД','ДНФА',ИтогМассив,'','С>0','К>0','');
   | true:
    ii=Раб.НФА.Свертка.ОстаткиВразрезеСчетовИаналитики(ss,услсч_ОС,услан_ОС,ДатаОстатков,'М&МОЛ&НФА','ИНВ|П|К|КВ|Ф|КТ|ВКЛ|ГГ|Ц|ПРТ|ПГР|БО|ВД|ММДД'    ,'ДНФА',ИтогМассив,'','С>=0','К>0','','');
--    ii=Раб.НФА.Свертка.ОстаткиВразрезеСчетовИаналитики(ss,услсч_ОС,услан_ОС,ДатаОстатков,'М&МОЛ&НФА','УЧН|П|К|КВ|Ф|РБС|КТ|ВКЛ|ГГ|Ц|ПРТ|ПГР|БО|ВД|ММДД'    ,'ДНФА',ИтогМассив,'','С>0','К>0','');
  fi;
  КопироватьМассив(Раб.НФА.Свертка.АНДОП,ForSelect1);
  ii=ДлинаМассива(ForSelect1);
  pp=ii;
  -- формируем ЗаписиАнаКвыгрузке и СписокКартАна
  ОкноВыполненияПоказать(ii,'подготовка к выгрузке...');

  For j=1..ii do
   ОкноВыполненияПоложение(j);
   ss=Раб.НФА.Свертка.УслОстВстр(ForSelect1[j]);
   t=КоличествоСлов(ss,'&');
   if не УчитыватьМОЛ:
1 0  1  ДобавитьВмассив(М_МОЛ_ОС,true,false,ВыделитьСлова(2,1,ss,'&')); -- собираем комбинации М для ОС
    | true:
  2   ДобавитьВмассив(М_МОЛ_ОС,true,false,ВыделитьСлова(2,2,ss,'&')); -- собираем комбинации М и МОЛ для ОС
   fi;
   if ВыгрузкаКартотекСаналитикой:
     for k=2..t do
       sst=ВыделитьСлово(k,ss,'&');
       s0=Раб.НФА.B03.ПризнакВЗаписьКартСтр(sst,false);
       if s0<>'':
          ДобавитьВмассив(ЗаписиАнаКвыгрузке,true,false,s0);
          ДобавитьВмассив(СписокКартАна,true,false,ВыделитьСлово(1,s0,'#'));

        | true:ДобавитьВмассив(ПризнакиКвыгрузке,true,false,sst+' --'+Name_A(sst));
       fi;
     od;
   fi;
  od;
  -----------------  формируем записи для картотеки остатков без галочки [ НФА с амортизацией] -----------------------

  ss='Выделение остатков по материалам и не принятым к учету ОС';
  if не УчитыватьМОЛ:
    ii=Раб.НФА.Свертка.ОстаткиВразрезеСчетовИаналитики(ss,услсч_неОС,услан_неОС,ДатаОстатков,'М&НФА'    ,'ИНВ|МОЛ|П|К|КВ|Ф|РБС|КТ|ВКЛ|ГГ|Ц|ПРТ|ПГР|БО|ВД|ММДД','ДНФА',ИтогМассив,'','С>=0','К>0','','');
--    ii=Раб.НФА.Свертка.ОстаткиВразрезеСчетовИаналитики(ss,услсч_неОС,услан_неОС,ДатаОстатков,'М&НФА'    ,'УЧН|МОЛ|П|К|КВ|Ф|РБС|КТ|ВКЛ|ГГ|Ц|ПРТ|ПГР|БО|ВД|ММДД','ДНФА',ИтогМассив,'','С>0','К>0','');
   | true:
    ii=Раб.НФА.Свертка.ОстаткиВразрезеСчетовИаналитики(ss,услсч_неОС,услан_неОС,ДатаОстатков,'М&МОЛ&НФА','ИНВ|П|К|КВ|Ф|РБС|КТ|ВКЛ|ГГ|Ц|ПРТ|ПГР|БО|ВД|ММДД'    ,'ДНФА',ИтогМассив,'','С>=0','К>0','','');
--    ii=Раб.НФА.Свертка.ОстаткиВразрезеСчетовИаналитики(ss,услсч_неОС,услан_неОС,ДатаОстатков,'М&МОЛ&НФА','УЧН|П|К|КВ|Ф|РБС|КТ|ВКЛ|ГГ|Ц|ПРТ|ПГР|БО|ВД|ММДД'    ,'ДНФА',ИтогМассив,'','С>0','К>0','');
  fi;
  КопироватьМассив(Раб.НФА.Свертка.АНДОП,ForSelect2);
  ii=ДлинаМассива(ForSelect2);
  -- формируем ЗаписиАнаКвыгрузке и СписокКартАна
  ОкноВыполненияПоказать(ii,'подготовка к выгрузке...');

  For j=1..ii do
   ОкноВыполненияПоложение(j);
   ss=Раб.НФА.Свертка.УслОстВстр(ForSelect2[j]);
   t=КоличествоСлов(ss,'&');
   if не УчитыватьМОЛ:
1 0  1  ДобавитьВмассив(0М_МОЛ_ОС1,true,false,ВыделитьСлова(2,1,ss,'&')); -- собираем комбинации М для ОС
    | true:
  2   ДобавитьВмассив(0М_МОЛ_ОС2,true,false,ВыделитьСлова(2,2,ss,'&')); -- собираем комбинации М и МОЛ для ОС
   fi;
   if ВыгрузкаКартотекСаналитикой:
     for k=2..t do
       sst=ВыделитьСлово(k,ss,'&');
       s0=Раб.НФА.B03.ПризнакВЗаписьКартСтр(sst,false);
       if s0<>'':
          ДобавитьВмассив(ЗаписиАнаКвыгрузке,true,false,s0);
          ДобавитьВмассив(СписокКартАна,true,false,ВыделитьСлово(1,s0,'#'));

        | true:ДобавитьВмассив(ПризнакиКвыгрузке,true,false,sst+' --'+Name_A(sst));
       fi;
     od;
   fi;
  od;
  --------------------------------------------------------------------------
--  КопироватьМассив(ЗаписиАнаКвыгрузке,РАБ.НФА.B03.ВыгрузитьКартотекуФильтр,1,ДлинаМассива(РАБ.НФА.B03.ВыгрузитьКартотекуФильтр)+1);

  --------------------------------------------------------------------------
  -----------------  формируем записи для картотеки остатков подтаблица ПОЗИЦИИ_ОС -----------------------
  iiCRD=1;
  ii=ДлинаМассива(forselect1);
  ОкноВыполненияПоказать(ii+ДлинаМассива(forselect2)+ДлинаМассива(М_МОЛ_ОС),'Формирование выгрузки...');
  For j=1..ii do
    ОкноВыполненияПоложение(j);
    ss=Раб.НФА.Свертка.УслОстВстр(forselect1[j]);
    if не УчитыватьМОЛ:
1  0  1  k=ПоискВмассиве(М_МОЛ_ОС,ВыделитьСлова(2,1,ss,'&'),true);
     | true:
  2    k=ПоискВмассиве(М_МОЛ_ОС,ВыделитьСлова(2,2,ss,'&'),true);
    fi;
    sstab       ='РПО_ОСТ_НФА@'+format('%.6d',k)+']'; --'РПО_ОСТ_НФА@000017]
    ПОЗИЦИИ_ОС_ukey=ПОЗИЦИИ_ОС_ukey+1;
    sssubtab=sstab+'ПОЗИЦИИОС@'+format('%.6d',ПОЗИЦИИ_ОС_ukey)+']';--'РПО_ОСТ_НФА@000017]ПОЗИЦИИ@000004]
    -------------------------------- собираем данные ------------------------------------

    if не УчитыватьМОЛ:
1      НФА=ВыделитьСлово(3,ss,'&');
     | true:
2      НФА=ВыделитьСлово(4,ss,'&');
    fi;

    СЧНФА=ВыделитьСлово(1,ss,'&');
    СУМНФА=Остаток(forselect1[j],ДатаОстатков+1);
    КОЛНФА=Остаток(forselect1[j],ДатаОстатков+1,'КОЛ');

    if не УчитыватьМОЛ:
1      0ИНВ1=ВыделитьСлово(4,ss,'&');
     | true:
2      0ИНВ2=ВыделитьСлово(5,ss,'&');
    fi;
--    if КОЛНФА=1:ДЭКСПЛ=ВзятьДЭКСПЛ(НФА,ИНВ,ДатаОстатков);fi;
    if КОЛНФА=1:ДУЧЕТ=ВзятьДУЧЕТ_ДЭКСПЛ(НФА,ИНВ,ДатаОстатков);
       ДЭКСПЛ=trim(ВыделитьСлово(2,ДУЧЕТ,'#'));
       ДУЧЕТ =trim(ВыделитьСлово(1,ДУЧЕТ,'#'));
    fi;

    if не УчитыватьМОЛ:
 1     0ДОПАН1=0' '+trim(1РАБ.НФА.B01.ФорматСтрокиАн(ВыделитьСлова(5,КоличествоСлов(ss,'&')-4,ss,'&'),'&',' ',2)0)1;
     | true:
2      0ДОПАН2=0' '+trim(2РАБ.НФА.B01.ФорматСтрокиАн(ВыделитьСлова(6,КоличествоСлов(ss,'&')-5,ss,'&'),'&',' ',2)0)2;
    fi;
    if длина(ИНВ)>4:if not (Соотв(ИНВ,'ИНВ.*')or Соотв(ИНВ,'УЧН.*')):ДОПАН=' '+ИНВ+ДОПАН;ИНВ='';fi;fi;

    if Соотв(СЧНФА,'*.???'):СЧНФА=Удалить(СЧНФА,длина(СЧНФА)-2,3);
       if pos('НФА.101.',НФА)=1:СЧНФА=СЧНФА+'310';
        | pos('НФА.105.',НФА)=1:СЧНФА=СЧНФА+'340';
        | pos('НФА.102.',НФА)=1:СЧНФА=СЧНФА+'320';
        | true:СЧНФА=СЧНФА+'330';
       fi;
    fi;
    -------------------------------- окончание сбора данных ------------------------------------
    ------------------------------------------------------------------------------------

    --------------------------------- доп обработка данных -----------------------------
    -------------------------------- окончание доп обработки данных --------------------
    ------------------------------------------------------------------------------------
      if СУМНФА<>0:
        РАБ.НФА.B03.СоздатьCRD_VAR[iiCRD]=sssubtab+'#СУМНФА#'+str(iiCRD);-- СУМНФА
        РАБ.НФА.B03.СоздатьCRD_VAL[iiCRD]=str(СУМНФА,3);
        iiCRD=iiCRD+1;
      fi;
      if КОЛНФА<>0:
        РАБ.НФА.B03.СоздатьCRD_VAR[iiCRD]=sssubtab+'#КОЛНФА#'+str(iiCRD);-- КОЛНФА
        РАБ.НФА.B03.СоздатьCRD_VAL[iiCRD]=str(КОЛНФА,точность(НФА));
        iiCRD=iiCRD+1;
      fi;

      СЧНФА=trim(СЧНФА);
      РАБ.НФА.B03.СоздатьCRD_VAR[iiCRD]=sssubtab+'#СЧНФА#'+str(iiCRD);-- СЧНФА
      РАБ.НФА.B03.СоздатьCRD_VAL[iiCRD]=СЧНФА;
      iiCRD=iiCRD+1;

      РАБ.НФА.B03.СоздатьCRD_VAR[iiCRD]=sssubtab+'#ДЕБАМОРТ00#'+str(iiCRD);-- ДЕБАМОРТ00
      РАБ.НФА.B03.СоздатьCRD_VAL[iiCRD]='00';
      iiCRD=iiCRD+1;

      РАБ.НФА.B03.СоздатьCRD_VAR[iiCRD]=sssubtab+'#СЧ00#'+str(iiCRD);-- СЧ00
      РАБ.НФА.B03.СоздатьCRD_VAL[iiCRD]='00';
      iiCRD=iiCRD+1;



      РАБ.НФА.B03.СоздатьCRD_VAR[iiCRD]=sssubtab+'#НФА#'+str(iiCRD);-- НФА
      РАБ.НФА.B03.СоздатьCRD_VAL[iiCRD]=trim(НФА);
      iiCRD=iiCRD+1;

--      РАБ.НФА.B03.СоздатьCRD_VAR[iiCRD]=sssubtab+'#КБК#'+str(iiCRD);-- КБК
--      РАБ.НФА.B03.СоздатьCRD_VAL[iiCRD]=КБК;
--      iiCRD=iiCRD+1;

      if длина(ИНВ)>4:
        ИНВ=trim(ИНВ);
        if Соотв(ИНВ,'ИНВ.*') or Соотв(ИНВ,'УЧН.*'):
          if Соотв(ИНВ,'ИНВ.*'):
            ИНВ='УЧН.'+Удалить(ИНВ,1,4);
          fi;
          РАБ.НФА.B03.СоздатьCRD_VAR[iiCRD]=sssubtab+'#УЧНОМ#'+str(iiCRD);-- ИНВ
          РАБ.НФА.B03.СоздатьCRD_VAL[iiCRD]=trim(ИНВ);ИНВ='';
          iiCRD=iiCRD+1;
        fi;
      fi;
      if длина(ДОПАН)>2:
        РАБ.НФА.B03.СоздатьCRD_VAR[iiCRD]=sssubtab+'#ДОПАН#'+str(iiCRD);-- ДОПАН
        РАБ.НФА.B03.СоздатьCRD_VAL[iiCRD]=trim(ДОПАН);
        iiCRD=iiCRD+1;
      fi;

      if СУМНФА/КОЛНФА>1000:-- должна быть амортизация
        if РАБ.НФА.B01.СоотвСчета(СЧНФА,услсчам_ОС):
          if не УчитыватьМОЛ:
    1        nn=-Остаток('*.?.104.??.???{'+ВыделитьСлова(3,2,ss,'&')+'}',ДатаОстатков+1);
           | true:
    2        nn=-Остаток('*.?.104.??.???{'+ВыделитьСлова(4,2,ss,'&')+'}',ДатаОстатков+1);
          fi;
          if nn<>0:
             if nn>СУМНФА:
                ДобавитьВмассив(forselect3,true,false,'Коррекция излишков амортизации='+str(СУМНФА-nn,2)+' [было='+str(nn,2)+' ,стало='+str(СУМНФА,2)+' ,стоимость='+str(СУМНФА,2)+']'+forselect1[j]);
                nn=СУМНФА;
             fi;
             if СУМНФА/КОЛНФА<10001:
               if Соотв(ВыделитьСлово(2,ss,'&'),'М.Э.*') or СтрокуВдату(ДЭКСПЛ)>1.1.100:-- в эксплуатации
                  if nn<СУМНФА:
                    ДобавитьВмассив(forselect3,true,false,'Доначислена амортизация до 100%='+str(СУМНФА-nn,2)+' [было='+str(nn,2)+' ,стало='+str(СУМНФА,2)+' ,стоимость='+str(СУМНФА,2)+']'+forselect1[j]);
                    nn=СУМНФА;-- 100% в эксплуатации при цене от 1000 и до 10001руб
                  fi;
               fi;
             fi;
            РАБ.НФА.B03.СоздатьCRD_VAR[iiCRD]=sssubtab+'#СУМАМ00#'+str(iiCRD);-- СУМАМ00
            РАБ.НФА.B03.СоздатьCRD_VAL[iiCRD]=str(nn,3);
            iiCRD=iiCRD+1;
            РАБ.НФА.B03.СоздатьCRD_VAR[iiCRD]=sssubtab+'#СЧЕТАМОРТ#'+str(iiCRD);-- СЧЕТАМОРТ
            РАБ.НФА.B03.СоздатьCRD_VAL[iiCRD]=СЧЕТ104поСЧНФА(СЧНФА);
            iiCRD=iiCRD+1;

          fi;
        fi;
      fi;
        if длина(ДЭКСПЛ)>5:
          РАБ.НФА.B03.СоздатьCRD_VAR[iiCRD]=sssubtab+'#ДЭКСПЛ#'+str(iiCRD);-- ДЭКСПЛ
          РАБ.НФА.B03.СоздатьCRD_VAL[iiCRD]=ДЭКСПЛ;
          iiCRD=iiCRD+1;
        fi;
        if длина(ДУЧЕТ)>5:
          РАБ.НФА.B03.СоздатьCRD_VAR[iiCRD]=sssubtab+'#ДУЧЕТ#'+str(iiCRD);-- ДУЧЕТ
          РАБ.НФА.B03.СоздатьCRD_VAL[iiCRD]=ДУЧЕТ;
          iiCRD=iiCRD+1;
        fi;
      -- НЕХВАТАЕТ МЕСНОРМ
  od;


  -----------------  формируем записи для картотеки остатков подтаблица ПОЗИЦИИ -----------------------
  --iiCRD=1;
  ii=ДлинаМассива(forselect2);
  For j=1..ii do
    ОкноВыполненияПоложение(j+pp);
    ss=Раб.НФА.Свертка.УслОстВстр(forselect2[j]);
    if не УчитыватьМОЛ:
1  0  1  k=ПоискВмассиве(0М_МОЛ_ОС1,ВыделитьСлова(2,1,ss,'&'),true);
     | true:
  2    k=ПоискВмассиве(0М_МОЛ_ОС2,ВыделитьСлова(2,2,ss,'&'),true);
    fi;
    sstab   ='РПО_ОСТ_НФА@'+format('%.6d',k)+']'; --'РПО_ОСТ_НФА@000017]
    ПОЗИЦИИ_ukey=ПОЗИЦИИ_ukey+1;
    sssubtab=sstab+'ПОЗИЦИИ@'+format('%.6d',ПОЗИЦИИ_ukey)+']';--'РПО_ОСТ_НФА@000017]ПОЗИЦИИ@000004]
    -------------------------------- собираем данные ------------------------------------

    if не УчитыватьМОЛ:
1      НФА=ВыделитьСлово(3,ss,'&');
     | true:
2      НФА=ВыделитьСлово(4,ss,'&');
    fi;



--    КБК=РАБ.НФА.B01.ВзятьКБКСчета(ВыделитьСлово(1,ss,'&'));
    СУМНФА=Остаток(forselect2[j],ДатаОстатков+1);
    КОЛНФА=Остаток(forselect2[j],ДатаОстатков+1,'КОЛ');
--    if не УчитыватьМОЛ:
--1      0ИНВ1=ВыделитьСлово(4,ss,'&');
--     | true:
--2      0ИНВ2=ВыделитьСлово(5,ss,'&');
--    fi;
    if не УчитыватьМОЛ:
 1     0ДОПАН1=0' '+trim(1РАБ.НФА.B01.ФорматСтрокиАн(ВыделитьСлова(5,КоличествоСлов(ss,'&')-4,ss,'&'),'&',' ',2)0)1;
     | true:
2      0ДОПАН2=0' '+trim(2РАБ.НФА.B01.ФорматСтрокиАн(ВыделитьСлова(062,КоличествоСлов(ss,'&')-5,ss,'&'),'&',' ',2)0)2;
    fi;
--    if длина(ИНВ)>4:ДОПАН=' '+ИНВ+ДОПАН;ИНВ='';fi;

    СЧНФА=ВыделитьСлово(1,ss,'&');
    if Соотв(СЧНФА,'*.???'):СЧНФА=Удалить(СЧНФА,длина(СЧНФА)-2,3);
       if pos('НФА.101.',НФА)=1:СЧНФА=СЧНФА+'310';
        | pos('НФА.105.',НФА)=1:СЧНФА=СЧНФА+'340';
        | pos('НФА.102.',НФА)=1:СЧНФА=СЧНФА+'320';
        | true:СЧНФА=СЧНФА+'330';
       fi;
    fi;

    -------------------------------- окончание сбора данных ------------------------------------
    ------------------------------------------------------------------------------------

    --------------------------------- доп обработка данных -----------------------------
    -------------------------------- окончание доп обработки данных --------------------
    ------------------------------------------------------------------------------------
      if СУМНФА<>0:
        РАБ.НФА.B03.СоздатьCRD_VAR[iiCRD]=sssubtab+'#СУМНФА#'+str(iiCRD);-- СУМНФА
        РАБ.НФА.B03.СоздатьCRD_VAL[iiCRD]=str(СУМНФА,3);
        iiCRD=iiCRD+1;
      fi;
      if КОЛНФА<>0:
        РАБ.НФА.B03.СоздатьCRD_VAR[iiCRD]=sssubtab+'#КОЛНФА#'+str(iiCRD);-- КОЛНФА
        РАБ.НФА.B03.СоздатьCRD_VAL[iiCRD]=str(КОЛНФА,точность(НФА));
        iiCRD=iiCRD+1;
      fi;
      РАБ.НФА.B03.СоздатьCRD_VAR[iiCRD]=sssubtab+'#НФА#'+str(iiCRD);-- НФА
      РАБ.НФА.B03.СоздатьCRD_VAL[iiCRD]=trim(НФА);
      iiCRD=iiCRD+1;

      СЧНФА=trim(СЧНФА);
      РАБ.НФА.B03.СоздатьCRD_VAR[iiCRD]=sssubtab+'#СЧНФА#'+str(iiCRD);-- СЧНФА
      РАБ.НФА.B03.СоздатьCRD_VAL[iiCRD]=СЧНФА;
      iiCRD=iiCRD+1;


      РАБ.НФА.B03.СоздатьCRD_VAR[iiCRD]=sssubtab+'#СЧ00#'+str(iiCRD);-- СЧ00
      if pos('ЗАБ',СЧНФА)=1:РАБ.НФА.B03.СоздатьCRD_VAL[iiCRD]='00Z';
       |true:РАБ.НФА.B03.СоздатьCRD_VAL[iiCRD]='00';
      fi;
      iiCRD=iiCRD+1;


      if длина(ДОПАН)>2:
        РАБ.НФА.B03.СоздатьCRD_VAR[iiCRD]=sssubtab+'#ДОПАН#'+str(iiCRD);-- ДОПАН
        РАБ.НФА.B03.СоздатьCRD_VAL[iiCRD]=trim(ДОПАН);
        iiCRD=iiCRD+1;
      fi;

  od;
  -- Формируем записи по М_МОЛ_ОС
  pp=pp+ii;
  jj=ДлинаМассива(М_МОЛ_ОС);
  For j=1..jj do
        ОкноВыполненияПоложение(j+pp);
        sstab ='РПО_ОСТ_НФА@'+format('%.6d',j)+']'; --'РПО_ОСТ_НФА@000017]
        РАБ.НФА.B03.СоздатьCRD_VAR[iiCRD]=sstab+'#М#'+str(iiCRD);-- М
        РАБ.НФА.B03.СоздатьCRD_VAL[iiCRD]=ВыделитьСлово(1,М_МОЛ_ОС[j],'&');
        iiCRD=iiCRD+1;
        if УчитыватьМОЛ:
          РАБ.НФА.B03.СоздатьCRD_VAR[iiCRD]=sstab+'#МОЛ#'+str(iiCRD);-- МОЛ
          РАБ.НФА.B03.СоздатьCRD_VAL[iiCRD]=ВыделитьСлово(2,М_МОЛ_ОС[j],'&');
          iiCRD=iiCRD+1;
        fi;
        РАБ.НФА.B03.СоздатьCRD_VAR[iiCRD]=sstab+'#НОМЕР#'+str(iiCRD);-- НОМЕР
        РАБ.НФА.B03.СоздатьCRD_VAL[iiCRD]=format('%.4d',j);
        iiCRD=iiCRD+1;
        РАБ.НФА.B03.СоздатьCRD_VAR[iiCRD]=sstab+'#ПРОВОДИТЬ#'+str(iiCRD);-- ПРОВОДИТЬ
        РАБ.НФА.B03.СоздатьCRD_VAL[iiCRD]='T';
        iiCRD=iiCRD+1;
        РАБ.НФА.B03.СоздатьCRD_VAR[iiCRD]=sstab+'#ДАТОПЕР#'+str(iiCRD);-- ДАТОПЕР
        РАБ.НФА.B03.СоздатьCRD_VAL[iiCRD]=ДатуВСтроку(ДатаНовыхОстатков);
        iiCRD=iiCRD+1;
        РАБ.НФА.B03.СоздатьCRD_VAR[iiCRD]=sstab+'#НОВЫЙОТЧЕТНЫЙПЕРИОДНАЧАЛО#'+str(iiCRD);-- НОВЫЙОТЧЕТНЫЙПЕРИОДНАЧАЛО
        РАБ.НФА.B03.СоздатьCRD_VAL[iiCRD]=ДатуВСтроку(СтрокуВдату('1.1.'+str(год(ДатаНовыхОстатков)+1)));
        iiCRD=iiCRD+1;
        РАБ.НФА.B03.СоздатьCRD_VAR[iiCRD]=sstab+'#ГОДОСТ#'+str(iiCRD);-- ГОДОСТ
        РАБ.НФА.B03.СоздатьCRD_VAL[iiCRD]=str(год(ДатаНовыхОстатков));
        iiCRD=iiCRD+1;
  od;


ОкноВыполненияЗакрыть;
if ВыгрузкаКартотекСаналитикой:
  КопироватьМассив(ЗаписиАнаКвыгрузке,РАБ.НФА.B03.ВыгрузитьКартотекуФильтр);
  ss='ВыгрузкаКартотекСаналитикой';
  j=РАБ.НФА.B03.ВыгрузитьКартотеку(МестоВыгрузки,ss,false,false,false,false);
  ll=РАБ.НФА.B03.Выгрузить_СтрМассив_Вфайл(BlnName+'.ПризнакиКвыгрузке','',1,ДлинаМассива(ПризнакиКвыгрузке),МестоВыгрузки+'ВыгрузкаАналитики.sig',false);
fi;

  ЗадатьАвтообработку(ЗначениеАвтообработка);
  ss=PlanVar('НФА');
  ss=ss+'\Бланки\Сервис\РПО_ОСТ_НФА_2007СТРУКТУРА.txt';
  ll=РАБ.НФА.B03._СоздатьCDF.(МестоВыгрузки+'РПО_ОСТ_НФА.CDF',ss,false,false,false,false);
  ll=РАБ.НФА.B03.2_СоздатьCRD0.(МестоВыгрузки+'РПО_ОСТ_НФА.CRD',ss,false,true,true,false)>0;
  ВремяРасчета=time-ВремяРасчета;
  jj=ДлинаМассива(Раб.НФА.Свертка.tempSError);
  pp=ДлинаМассива(forselect3);
  if jj>0 or pp>0:
     j=Вопрос('Выгрузка завершена','Общее время выгрузки:'+Раб.НФА.B01.TimeToString(ВремяРасчета),'Ok;Отчет по ошибкам',mtWarning);
     if j=2:
        if jj>0:
         ВставитьВмассив(Раб.НФА.Свертка.tempSError,1,'');
         ВставитьВмассив(Раб.НФА.Свертка.tempSError,1,'Эти данные не попали в выгрузку остатков!!!');
         ВставитьВмассив(Раб.НФА.Свертка.tempSError,1,'Отчет по ошибочным данным в остатках (количество меньше или равно 0, сумма меньше 0)');
        fi;
        if pp>0:
         ВставитьВмассив(forselect3,1,'');
         ВставитьВмассив(forselect3,1,'коррекция превышения амортизации над стоимостью ОС и доначисление амортизации до 100% для ОС до 10000 включительно в эксплуатации или б/у');
         ВставитьВмассив(forselect3,1,'Отчет по исправленным суммам амортизации');
         ВставитьВмассив(forselect3,1,'');
         КопироватьМассив(forselect3,Раб.НФА.Свертка.tempSError,1,ДлинаМассива(Раб.НФА.Свертка.tempSError)+1);
        fi;
         ll=РАБ.НФА.B03.Выгрузить_СтрМассив_Вфайл('Раб.НФА.Свертка.tempSError','',1,ДлинаМассива(Раб.НФА.Свертка.tempSError),МестоВыгрузки+'Отчет_по_ошибкам.txt',false);
         OpenEditor(МестоВыгрузки+'Отчет_по_ошибкам.txt');
     fi;
   | true:Message('Выгрузка завершена.^MОбщее время выгрузки:'+Раб.НФА.B01.TimeToString(ВремяРасчета));
  fi;
  ClearVariable(Раб.НФА.Свертка.tempSError);

^-1;
end;
--func ПодготовкаКопироватьПосуду_0(wa:i;НЗ:i):i; -- копирует запись НЗ возвращает номер рабочей области подтаблицы
--  КопироватьЗапись

--end;




Proc ЗаменаВкартотекеНФА(чтозаменить:s;начтозаменить:s;filtr:s);
 var wa,rs,НЗ,kkk:i;
  if filtr<>'':filtr=' and '+filtr;fi;
  wa=OpenWorkArea('РПО_НФА','');
  setfilter(wa,'(КОНВ<>1 and (ГРНФА="'+чтозаменить+'")'+filtr+')');
    rs=Records(wa);
    НачатьИзменения(wa,true);
    Попытка
      for НЗ=1..rs do
        kkk=ЗаписатьПолеС(wa,НЗ,'ГРНФА',начтозаменить);
      od;
    ЗакончитьИзменения(wa);
    Исключение
      ОтменитьИзменения(wa);
    Возбудить;
    Конец;
  CloseWorkArea(wa);
end;



Proc кнЗакрыть_ПриНажатии(Row: Integer; Col: Integer; Double: Logical);
  close;
end;

Func МестоВыгрузкиНФА_OnLookup(Sect: String; Row: Integer; Col: Integer; Cur: String): String;
  var ss:s;
   if ВыборПапки(ss,'Выбор места выгрузки остатков НФА')=cmOk:МестоВыгрузкиНФА=ss;Шаблон.СкрытьРедактор(false);fi;
  ^Cur;
end;
Func ДопУслСч_OnLookup(Sect: String; Row: Integer; Col: Integer; Cur: String): String;
 var ss:s;
 ss=ВыборСчета('*',true,'');
 if длина(ss)>0:
    if substr(ss,длина(ss),1)='.':ss=ss+'*';fi;
 fi;
  if длина(Cur)>0 и длина(ss)>0:^Cur+'&'+ss;fi;
  ^Cur+ss;
end;


Func ДопУслАн_OnLookup(Sect: String; Row: Integer; Col: Integer; Cur: String): String;
 var ss:s;
 ss=ВыборПризнака('*',false,true);
 if длина(ss)>0:
    if substr(ss,длина(ss),1)='.':ss=ss+'*';fi;
 fi;
  if длина(Cur)>0 и длина(ss)>0:^Cur+'&'+ss;fi;
  ^Cur+ss;
end;


Func н25НФА_OnEnter(FieldName: String; Iter: Integer): logical;
  if FieldName='н25НФА':н25НФА=2;
--     Вопрос('Выбор инструкции','С учетом кокой инструкции сформированы текущие проводки?^MЕсли нужно сконвертировать выгруженные данные из 70н в 25н, выберите пункт из 70н+[70н=>25н]^MВо всех случаях текущая база останется неизменной','из 70н;из 70н+[70н=>25н];из 25н',mtInformation)-1;
   | FieldName='ВыгрузкаКартотекСаналитикойНФА':
     ВыгрузкаКартотекСаналитикойНФА=(Вопрос('Выбор выгрузки аналитики','Можно выгрузить аналитику используемую в остатках^MВ том числе и аналитику хранящуюся в картотеках','Выгружать;Не выгружать',mtInformation)=1);
   | FieldName='ЗагрАнКарт':ЗагрАнКарт=(Вопрос('Выбор загрузки картотечной аналитики','Загрузить аналитику хранимую в картотеках?','Загружать;Не загружать',mtInformation)=1);
   | FieldName='ЗагрАнТекст':ЗагрАнТекст=(Вопрос('Выбор загрузки текстовой аналитики','Загрузить аналитику хранимую в тексте?','Загружать;Не загружать',mtInformation)=1);
  fi;
  ^false;
end;


Proc ВыгрузкаостатковНФА_OnClick(Row: Integer; Col: Integer; Double: Logical);
 ОстаткиНФА(МестоВыгрузкиНФА,ДатаОстатковДляВыгрузкиНФА,ДатаНовыхОстатковНФА,'',н25НФА,ВыгрузкаКартотекСаналитикойНФА,ДопУслСч,ДопУслАн);
end;


Proc ЗагрузкаостатковНФА_OnClick(Row: Integer; Col: Integer; Double: Logical);
 var i,ii,j:i;
 var ss:s;
 var ll:l;
   if ЗагрАнКарт:
--      ss=РАБ.НФА.B03.ЗагрузкаСправочников(МестоВыгрузкиНФА+'ВыгрузкаКартотекСаналитикой',false,false);
      ss=РАБ.НФА.B03.ЗагрузкаСправочников(МестоВыгрузкиНФА+'ВыгрузкаКартотекСаналитикой.CRD',false,false,true,'',true);
      if ss<>'':message(ss);fi;
   fi;
   if ЗагрАнТекст:  -- загрузка текстовой недостающей аналитики
     ОчиститьПеременную(ПризнакиКвыгрузке);
     if РАБ.НФА.B03.Загрузить_СтрМассив_ИзФайла(BlnName+'.ПризнакиКвыгрузке','',0,МестоВыгрузкиНФА+'ВыгрузкаАналитики.sig'):beep;fi;
     ii=ДлинаМассива(ПризнакиКвыгрузке);
     j=1;
     for i=1..ii do
       if Name_A(ПризнакиКвыгрузке[j])=' ':УдалитьИзМассива(ПризнакиКвыгрузке,j);
        | true:j=j+1;
       fi;
     od;
     ss=ПеремПБ('Бух');
     if ss='.':ss='';
      | true:if SubStr(ss,длина(ss),1)<>'\':ss=ss+'\';fi;
     fi;
     ss=ss+'Аналитика\ДопАналитика.Sig';
     if не ЕстьФайл(ss):Message('не найден файл:'+ss,тсОшибка);exit;fi;
     if ДлинаМассива(ПризнакиКвыгрузке)>0:--Загружаем отсутствующие текстовые признаки в допаналитику
       ll=РАБ.НФА.B03.Выгрузить_СтрМассив_Вфайл(BlnName+'.ПризнакиКвыгрузке','',1,ДлинаМассива(ПризнакиКвыгрузке),ss,true);
     fi;
     ОчиститьПеременную(ПризнакиКвыгрузке);
   fi;
   ss=РАБ.НФА.B03.ЗагрузкаСправочников(МестоВыгрузкиНФА+'РПО_ОСТ_НФА.CRD',false,false,true,'',true);
end;


Proc Обязательные_OnClick(Row: Integer; Col: Integer; Double: Logical);
  var sln:LongString;
  sln=sln+'^M  обязательные справочники=М|МОЛ|НФА, дополнительные=ИНВ|МОЛ|П|К|КВ|Ф|РБС|КТ|ВКЛ|ГГ|Ц|ПРТ|ПГР|БО|ВД|ММДД^M';
  sln=sln+'^M  для получения верных остатков необходима привязка вышеописанных справочников к счетам НФА';
  sln=sln+'^M  пример:МОЛ {*.?.208.??.*\*.?.10?.??.*|ЗАБ.??.???.??}';
  sln=sln+'^M  пример:М   {\*.?.10?.??.*|ЗАБ.??.???.??}';
  sln=sln+'^M  пример:НФА {\*.?.10?.??.*|ЗАБ.??.???.??}';
  sln=sln+'^M  пример:П   {\*.?.10?.??.*|ЗАБ.??.???.??}^M';
  sln=sln+'^M1)  усл по счетам 25_ОС  =*.?.10?.??.???&~*.?.104.??.???)|ЗАБ.??.???.??^M';
  sln=sln+'^M2)  усл по счетам для начисления амортизации 70_ОС=*.?.101.01.???|*.?.101.02.???|*.?.101.03.???|*.?.101.04.???|*.?.101.05.???|*.?.101.06.???|*.?.101.10.???|*.?.103.??.???^M';
  sln=sln+'^M3)  усл по счетам для начисления амортизации 25_ОС=*.?.101.01.???|*.?.101.02.???|*.?.101.03.???|*.?.101.04.???|*.?.101.05.???|*.?.101.06.???|*.?.101.09.???|*.?.102.??.???^M';
  sln=sln+'^M4)  усл по аналитике 70_ОС=НФА.101.01.*|НФА.101.02.*|НФА.101.03.*|НФА.101.04.*|НФА.101.05.*|НФА.101.06.*|НФА.101.10.*|НФА.103.*^M';
  sln=sln+'^M5)  усл по аналитике 25_ОС=НФА.101.01.*|НФА.101.02.*|НФА.101.03.*|НФА.101.04.*|НФА.101.05.*|НФА.101.06.*|НФА.101.09.*|НФА.102.*^M';
  sln=sln+'^M6)  усл по счетам 70_неОС=*.?.10?.??.???&~*.?.104.??.???)|ЗАБ.??.???.??^M';
  sln=sln+'^M7)  усл по счетам 25_неОС=*.?.10?.??.???&~*.?.104.??.???)|ЗАБ.??.???.??^M';
  sln=sln+'^M8)  услан70_неОС=НФА.105.*|НФА.101.07.*|НФА.101.08.*|НФА.101.09.*|НФА.102.*^M';
  sln=sln+'^M9)  услан25_неОС=НФА.105.*|НФА.101.07.*|НФА.101.08.*|НФА.103.*^M';
  message(sln);
end;


3Proc1 0ПОМОЩЬ = 'ПОМОЩЬ'1;
1 var Sect0,Kmnt1:s; -- имя текущей секции
1 var Obj  :s; -- имя текущего объекта
1 var Field:s; -- имя текущего поля
1 var row,col,iter0,ii,t1:i; -- Строка, столбец и итерация
1  Sect =AsString (Template.Name  );
1  Obj  =AsString (Template.Object);
1  Field=AsString (Template.Field );
1  Row  =AsInteger(Template.Row   );
1  Col  =AsInteger(Template.Column);
1  Iter =AsInteger(Template.Frame );
  if 1Row0<15:
     Kmnt='-- ';
     ОчиститьПеременную(ForSelect);
     t=0;
     ForSelect[01]='Выход'+Kmnt+'Выход';
     ForSelect[02]='I.#'       +Kmnt+'===========[КОНВЕРТАЦИЯ ОПЕРАЦИЙ]==============';
     t=t+1;ForSelect[t+2]='I.#I.'+format('%.2d',t)+'.'  +Kmnt+'ОПИСАНИЕ КОНВЕРТАЦИИ ОПЕРАЦИЙ                                                                   ';
     t=t+1;ForSelect[t+2]='I.#I.'+format('%.2d',t)+'.'  +Kmnt+'';
     t=t+1;ForSelect[t+2]='I.#I.'+format('%.2d',t)+'.'  +Kmnt+'1. выгрузка данных из "старой базы"                                                             ';
     t=t+1;ForSelect[t+2]='I.#I.'+format('%.2d',t)+'.'  +Kmnt+'   выгрузке подлежит 2 картотеки:                                                               ';
     t=t+1;ForSelect[t+2]='I.#I.'+format('%.2d',t)+'.'  +Kmnt+'   1-РПО_ОПЕРАЦИИДНФА.CRD                                                                       ';
     t=t+1;ForSelect[t+2]='I.#I.'+format('%.2d',t)+'.'  +Kmnt+'   2-РПО_ДНФА.CRD                                                                               ';
     t=t+1;ForSelect[t+2]='I.#I.'+format('%.2d',t)+'.'  +Kmnt+'   путь к 1 картотеке+выгрузка                                                                  ';
     t=t+1;ForSelect[t+2]='I.#I.'+format('%.2d',t)+'.'  +Kmnt+'    =>[ЦЕНТР УПРАВЛЕНИЯ УНФА]                                                                   ';
     t=t+1;ForSelect[t+2]='I.#I.'+format('%.2d',t)+'.'  +Kmnt+'    =>[Движение НФА]                                                                            ';
     t=t+1;ForSelect[t+2]='I.#I.'+format('%.2d',t)+'.'  +Kmnt+'    =>[Журнал операций НФА]                                                                     ';
     t=t+1;ForSelect[t+2]='I.#I.'+format('%.2d',t)+'.'  +Kmnt+'    =>правой кнопкой мыши (пункт импорт/экспорт)                                                ';
     t=t+1;ForSelect[t+2]='I.#I.'+format('%.2d',t)+'.'  +Kmnt+'    =>выставить только параметры:[выгрузка],[текст],[только значения]                           ';
     t=t+1;ForSelect[t+2]='I.#I.'+format('%.2d',t)+'.'  +Kmnt+'    =>[Выполнить]                                                                               ';
     t=t+1;ForSelect[t+2]='I.#I.'+format('%.2d',t)+'.'  +Kmnt+'   путь к 2 картотеке+выгрузка                                                                  ';
     t=t+1;ForSelect[t+2]='I.#I.'+format('%.2d',t)+'.'  +Kmnt+'    =>[ЦЕНТР УПРАВЛЕНИЯ УНФА]                                                                   ';
     t=t+1;ForSelect[t+2]='I.#I.'+format('%.2d',t)+'.'  +Kmnt+'    =>[Справочники]                                                                             ';
     t=t+1;ForSelect[t+2]='I.#I.'+format('%.2d',t)+'.'  +Kmnt+'    =>[Виды движения НФА]                                                                       ';
     t=t+1;ForSelect[t+2]='I.#I.'+format('%.2d',t)+'.'  +Kmnt+'    =>правой кнопкой мыши (пункт импорт/экспорт)                                                ';
     t=t+1;ForSelect[t+2]='I.#I.'+format('%.2d',t)+'.'  +Kmnt+'    =>выставить только параметры:[выгрузка],[текст],[только значения]                           ';
     t=t+1;ForSelect[t+2]='I.#I.'+format('%.2d',t)+'.'  +Kmnt+'    =>[Выполнить]                                                                               ';
     t=t+1;ForSelect[t+2]='I.#I.'+format('%.2d',t)+'.'  +Kmnt+'';
     t=t+1;ForSelect[t+2]='I.#I.'+format('%.2d',t)+'.'  +Kmnt+'2. конвертация в новой базе                                                                     ';
     t=t+1;ForSelect[t+2]='I.#I.'+format('%.2d',t)+'.'  +Kmnt+'   I. бланк конвертера:                                                                         ';
     t=t+1;ForSelect[t+2]='I.#I.'+format('%.2d',t)+'.'  +Kmnt+'    =>[ЦЕНТР УПРАВЛЕНИЯ УНФА]                                                                   ';
     t=t+1;ForSelect[t+2]='I.#I.'+format('%.2d',t)+'.'  +Kmnt+'    =>[СЕРВИС]                                                                                  ';
     t=t+1;ForSelect[t+2]='I.#I.'+format('%.2d',t)+'.'  +Kmnt+'    =>[Конвертеры УНФА]                                                                         ';
     t=t+1;ForSelect[t+2]='I.#I.'+format('%.2d',t)+'.'  +Kmnt+'    =>Выставить флаг [конвертация операций]                                                     ';
     t=t+1;ForSelect[t+2]='I.#I.'+format('%.2d',t)+'.'  +Kmnt+'                                                                                                ';
     t=t+1;ForSelect[t+2]='I.#I.'+format('%.2d',t)+'.'  +Kmnt+'   а) клетка[Файил с данными операций с движением НФА РПО_ОПЕРАЦИИДНФА.CRD (загружаемые данные)]';
     t=t+1;ForSelect[t+2]='I.#I.'+format('%.2d',t)+'.'  +Kmnt+'      для указания пути к файлу РПО_ОПЕРАЦИИДНФА.CRD выгруженному из старой базы                ';
     t=t+1;ForSelect[t+2]='I.#I.'+format('%.2d',t)+'.'  +Kmnt+'                                                                                                ';
     t=t+1;ForSelect[t+2]='I.#I.'+format('%.2d',t)+'.'  +Kmnt+'   б) клетка[Файл с описанием операций РПО_ДНФА.CRD (загружаемые данные)]                       ';
     t=t+1;ForSelect[t+2]='I.#I.'+format('%.2d',t)+'.'  +Kmnt+'      для указания пути к файлу РПО_ДНФА.CRD выгруженному из старой базы                        ';
     t=t+1;ForSelect[t+2]='I.#I.'+format('%.2d',t)+'.'  +Kmnt+'                                                                                                ';
     t=t+1;ForSelect[t+2]='I.#I.'+format('%.2d',t)+'.'  +Kmnt+'   в) клетка[начинать загрузку с даты]                                                          ';
     t=t+1;ForSelect[t+2]='I.#I.'+format('%.2d',t)+'.'  +Kmnt+'      условие на дату операции для загрузки операций из "старой базы"                           ';
     t=t+1;ForSelect[t+2]='I.#I.'+format('%.2d',t)+'.'  +Kmnt+'                                                                                                ';
     t=t+1;ForSelect[t+2]='I.#I.'+format('%.2d',t)+'.'  +Kmnt+'   г) клетка[закончить загрузку до даты (не включая)]                                           ';
     t=t+1;ForSelect[t+2]='I.#I.'+format('%.2d',t)+'.'  +Kmnt+'      условие на дату операции для загрузки операций из "старой базы"                           ';
     t=t+1;ForSelect[t+2]='I.#I.'+format('%.2d',t)+'.'  +Kmnt+'                                                                                                ';
     t=t+1;ForSelect[t+2]='I.#I.'+format('%.2d',t)+'.'  +Kmnt+'   д) клетка[Файл соответствий текущих операций с загружаемыми операциями РПО_ДНФА.CRD]         ';
     t=t+1;ForSelect[t+2]='I.#I.'+format('%.2d',t)+'.'  +Kmnt+'      работа данной функции не реализованна, для сохранения данных по настройке операций        ';
     t=t+1;ForSelect[t+2]='I.#I.'+format('%.2d',t)+'.'  +Kmnt+'      можно пользоваться кнопкой[F2],                                                           ';
     t=t+1;ForSelect[t+2]='I.#I.'+format('%.2d',t)+'.'  +Kmnt+'      для чтения пунктом меню[документ/импорт-экспорт]=>переменный бланка в формат DBT+[чтение] ';
     t=t+1;ForSelect[t+2]='I.#I.'+format('%.2d',t)+'.'  +Kmnt+'                                                                                                ';
     t=t+1;ForSelect[t+2]='I.#I.'+format('%.2d',t)+'.'  +Kmnt+'   Обязательно должны быть выполнены пункты а), б).                                             ';
     t=t+1;ForSelect[t+2]='I.#I.'+format('%.2d',t)+'.'  +Kmnt+'                                                                                                ';
     t=t+1;ForSelect[t+2]='I.#I.'+format('%.2d',t)+'.'  +Kmnt+'   II. в правой нижней части в разделе "Загружаемые операции"  в столбце "код операции"         ';
     t=t+1;ForSelect[t+2]='I.#I.'+format('%.2d',t)+'.'  +Kmnt+'       необходимо нажать на кнопку [...]                                                        ';
     t=t+1;ForSelect[t+2]='I.#I.'+format('%.2d',t)+'.'  +Kmnt+'       для инициализации таблицы описания соответствий операций.                                ';
     t=t+1;ForSelect[t+2]='I.#I.'+format('%.2d',t)+'.'  +Kmnt+'       после инициализации появляется окно со списком операций из "старой базы"                 ';
     t=t+1;ForSelect[t+2]='I.#I.'+format('%.2d',t)+'.'  +Kmnt+'       добавляем строки для каждой операции и выставляем им соответствие в левой                ';
     t=t+1;ForSelect[t+2]='I.#I.'+format('%.2d',t)+'.'  +Kmnt+'       части в разделе "Текущие операции" столбце "код операции"                                ';
     t=t+1;ForSelect[t+2]='I.#I.'+format('%.2d',t)+'.'  +Kmnt+'';
     t=t+1;ForSelect[t+2]='I.#I.'+format('%.2d',t)+'.'  +Kmnt+'  III. в каждой строке необходимо выставить соответствие операции                               ';
     t=t+1;ForSelect[t+2]='I.#I.'+format('%.2d',t)+'.'  +Kmnt+'       нажав на кнопку выбора в столбце "Соответствие операций"                                 ';
     t=t+1;ForSelect[t+2]='I.#I.'+format('%.2d',t)+'.'  +Kmnt+'                                                                                                ';
     t=t+1;ForSelect[t+2]='I.#I.'+format('%.2d',t)+'.'  +Kmnt+'  3. соответствие операций                                                                      ';
     t=t+1;ForSelect[t+2]='I.#I.'+format('%.2d',t)+'.'  +Kmnt+'     а) кнопка авторасчет позволяет выставить соответствие большинству строк                    ';
     t=t+1;ForSelect[t+2]='I.#I.'+format('%.2d',t)+'.'  +Kmnt+'     б) способ ручного обмена строк:                                                            ';
     t=t+1;ForSelect[t+2]='I.#I.'+format('%.2d',t)+'.'  +Kmnt+'       в табличке "Режим выбора" выбираем откуда или куда переносится строка                    ';
     t=t+1;ForSelect[t+2]='I.#I.'+format('%.2d',t)+'.'  +Kmnt+'       в столбце номера щелкаем мышкой, тем самым заполняя                                      ';
     t=t+1;ForSelect[t+2]='I.#I.'+format('%.2d',t)+'.'  +Kmnt+'       в таблице "Режим выбора" соответствующую строчку,                                        ';
     t=t+1;ForSelect[t+2]='I.#I.'+format('%.2d',t)+'.'  +Kmnt+'       затем  в табличке "Режим выбора" меняем откуда на куда (или наооборот)                   ';
     t=t+1;ForSelect[t+2]='I.#I.'+format('%.2d',t)+'.'  +Kmnt+'       и выбираем строчку для этого пункта.                                                     ';
     t=t+1;ForSelect[t+2]='I.#I.'+format('%.2d',t)+'.'  +Kmnt+'       жмем кнопку [обменять]                                                                   ';
     t=t+1;ForSelect[t+2]='I.#I.'+format('%.2d',t)+'.'  +Kmnt+'       и так пока все соответствующие строчки из нижней части таблицы                           ';
     t=t+1;ForSelect[t+2]='I.#I.'+format('%.2d',t)+'.'  +Kmnt+'       (строки Данные "откуда загружаем")не встанут на соответствующие места                    ';
     t=t+1;ForSelect[t+2]='I.#I.'+format('%.2d',t)+'.'  +Kmnt+'       в верхней части (строки Данные "куда загружаем")                                         ';
     t=t+1;ForSelect[t+2]='I.#I.'+format('%.2d',t)+'.'  +Kmnt+'     в) ставим флаг [утвердить соответствие] и жмем кнопку [сохранить]                          ';
     t=t+1;ForSelect[t+2]='I.#I.'+format('%.2d',t)+'.'  +Kmnt+'';
     t=t+1;ForSelect[t+2]='I.#I.'+format('%.2d',t)+'.'  +Kmnt+'  4. После выставления всех соответствий жмем кнопку [Загрузить движение]                       ';
     t=t+1;ForSelect[t+2]='I.#I.'+format('%.2d',t)+'.'  +Kmnt+'================================================================================================';
--     ForSelect[29]='I.#I.**.'  +Kmnt+'';
--     ForSelect[30]='II.#'      +Kmnt+'===========[Загрузка остатков]=============';
--     ForSelect[31]='II.#II.01.'+Kmnt+'Загрузка остатков';
--     ForSelect[32]='II.#II.02.'+Kmnt+'После загрузки остатков не забудьте нажать [Конвертировать для 25н]';
--     ForSelect[33]='II.#II.03.'+Kmnt+'';
--     ForSelect[34]='II.#II.04.'+Kmnt+'';
--     ForSelect[35]='II.#II.05.'+Kmnt+'';
--     ForSelect[36]='II.#II.06.'+Kmnt+'';
--     ForSelect[37]='II.#II.07.'+Kmnt+'';
--     ForSelect[38]='II.#II.08.'+Kmnt+'';
--     ForSelect[49]='II.#II.09.'+Kmnt+'';
--     ForSelect[40]='II.#II.10.'+Kmnt+'';
--     ForSelect[41]='II.#II.11.'+Kmnt+'';
--     ForSelect[42]='II.#II.12.'+Kmnt+'';
     ii=1;
     ii=AlternateTree('ПОМОЩЬ Описание работы конвертера 25н и выгрузки остатков НФА:',ForSelect,70,ii,10,'#','Оглавление','Описание',9,true);
     While ii>1 do
       ii=AlternateTree('ПОМОЩЬ Описание работы конвертера 25н и выгрузки остатков НФА:',ForSelect,70,ii,10,'#','Оглавление','Описание',9,true);
     od;
   | true:
  КонтекстнаяСправка('tb69', 3, 5);
  fi;
3end1;



Proc Помощь_OnClick(Row: Integer; Col: Integer; Double: Logical);
   ПОМОЩЬ;
end;

Функ Картотека_ПриОбзоре(Сек: Строка; Стр: Целое; Столб: Целое; Тек: Строка): Строка;
  var ii:i;
--  var s0:s;
  ii=Alternate('',СписокКартотек,-1,1,12);
  if ii>0:
    if Тек<>СписокКартотек[ii]:^СписокКартотек[ii];fi;
  fi;
  Шаблон.СкрытьРедактор(false);
end;

Функ фильтркарт_ПриОбзоре(Сек: Строка; Стр: Целое; Столб: Целое; Тек: Строка): Строка;
  var ii:i;
1 var Sect :s; -- имя текущей секции
1 var Obj  :s; -- имя текущего объекта
1 var Field:s; -- имя текущего поля
1 var row,col,iter:i; -- Строка, столбец и итерация
--1 var 0i,j,k1:i;
1  Sect =AsString (Template.Name  );
1  Obj  =AsString (Template.Object);
1  Field=AsString (Template.Field );
1  Row  =AsInteger(Template.Row   );
1  Col  =AsInteger(Template.Column);
1  Iter =AsInteger(Template.Frame );
  ii=ВзятьПоляКартотеки(Карт[1Iter0],ForSelect,mtlAll);
  ii=Alternate('',ForSelect,-1,1,12);
  if ii>0:
    ^Тек+ForSelect[ii];
  fi;
  Шаблон.СкрытьРедактор(false);
end;


Функ фильтрподтабл_ПриОбзоре(Сек: Строка; Стр: Целое; Столб: Целое; Тек: Строка): Строка;

  Возврат '' ;
end;

Проц Выгрузка_ПриНажатии(Стр: Целое; Кол: Целое; Двойной: Логич);
--  var ss,ss0,ss1:s;
  var ii,t:i;
--  var wa,war:i;
--  for ii=1..Упр_ФильтрыКарт do
  t=time;
  for ii=30..30 do
--  for ii=18..Упр_ФильтрыКарт do
--    РАБ.НФА.B03.ВыгрузитьКартВфайлФильтр(Префикс[ii],Карт[ii],фильтркарт[ii],фильтрподтабл[ii],МестоВыгрузкиНФА,'');
    РАБ.НФА.B03.ВыгрузитьКартВфайлФильтр(Префикс[ii],Карт[ii],фильтркарт[ii],фильтрподтабл[ii],МестоВыгрузкиНФА,УслНаПроводки[ii]);
  od;
  message('выгрузка завершена за '+РАБ.НФА.B01.TimeToString(time-t));
end;


Proc Del_OnClick(Row: Integer; Col: Integer; Double: Logical);
 var cursection:s;
 cursection=AsString(Шаблон.Имя);
 if cursection='СекцВыгрКартФильтр'     :refreshana;DeleteFrame(Упр_ФильтрыКарт,Row);
  | cursection='СекцЗаменаФКР'          :DeleteFrame(ПозицииЗаменаФКР,Row);
  | cursection='СекцЗаменаФКР2011'      :DeleteFrame(ПозицииЗаменаФКР2011,Row);
  | cursection='СекцЗаменаПризнаков2011':DeleteFrame(ПозицииЗаменаПризнаков2011,Row);
  | cursection='СекцНастройкаНИ'        :DeleteFrame(ПозицииНастройкаНИ,Row);
  | cursection='СекцЗаменаСчетов'       :DeleteFrame(ПозицииЗаменаСчетов,Row);
 fi;
end;


Proc Add_OnClick(Row: Integer; Col: Integer; Double: Logical);
 var cursection:s;
 cursection=AsString(Шаблон.Имя);
 if cursection='СекцВыгрКартФильтр'      :InsertFrame(Упр_ФильтрыКарт,Row);
  | cursection='СекцЗаменаФКР'           :InsertFrame(ПозицииЗаменаФКР,Row);
  | cursection='СекцЗаменаФКР2011'       :InsertFrame(ПозицииЗаменаФКР2011,Row);
  | cursection='СекцЗаменаПризнаков2011' :InsertFrame(ПозицииЗаменаПризнаков2011,Row);
  | cursection='СекцНастройкаНИ'         :InsertFrame(ПозицииНастройкаНИ,Row);
  | cursection='СекцЗаменаСчетов'        :InsertFrame(ПозицииЗаменаСчетов,Row);
 fi;
end;

Proc Del_OnClick1(Row: Integer; Col: Integer; Double: Logical);
 DeleteFrame(Секция_ТаблицаСоответствииОпераций_позици,Row);
end;
Proc Add_OnClick1(Row: Integer; Col: Integer; Double: Logical);
 InsertFrame(Секция_ТаблицаСоответствииОпераций_позици,Row);
end;

Функ Lo_ПриВходе(Поле: Строка; it: Целое): Логич;
  var wa,war,rs:i;
  var ii,j,k,n,ПОЗИЦИИ,itoper:i;
  var ss0,ss,ЗАГОЛОВОК1,ОТВЕТ1,СПР1,ПОЛЕПОДТАБЛИЦЫ1,КБКОТСЧЕТА1,АНОТСЧЕТА1,ОБЯЗАТЕЛЬНЫЙ1,НЕОБЯЗАТЕЛЬНЫЙ1,НОМПРОВОДКИ1,НЕДЕЙСТВСПР:s;
  var КБКНФА1,СЧЕТНФА1,ОСТАТОК1,ДЛЯВСЕХ1:l;
  if Длина(З[it])<4:message('Не выбрана загружаемая операция!');^false;fi;
  if Длина(т[it])<4:message('Не выбрана текущая операция!');^false;fi;
  itoper=ПоискВмассиве(З_КОД,з[it]);
  itoper=З_NN[it];
  wa=OpenWorkArea('РПО_ДНФА','','ДНФА="'+т[it]+'"');
    rs=records(wa);
    if rs<>1:CloseWorkArea(wa);message('Не найдена текущая операция в картотеке!');^false;fi;
    НЕДЕЙСТВСПР=GetFieldS(wa,1,'НЕДЕЙСТВСПР')+'|';
    war=OpenArray(wa,1,'ЗАПРОС','');
      rs=records(war);
      ПОЗИЦИИ=0;
      ClearVariable(РАБ.НФА.КОНВЕРТАЦИЯ_ОПЕРАЦИЙ_СООТВЕТСТВИЕ.ЗАГОЛОВОК     );
      ClearVariable(РАБ.НФА.КОНВЕРТАЦИЯ_ОПЕРАЦИЙ_СООТВЕТСТВИЕ.ОТВЕТ         );
      ClearVariable(РАБ.НФА.КОНВЕРТАЦИЯ_ОПЕРАЦИЙ_СООТВЕТСТВИЕ.СПР           );
      ClearVariable(РАБ.НФА.КОНВЕРТАЦИЯ_ОПЕРАЦИЙ_СООТВЕТСТВИЕ.КБКНФА        );
      ClearVariable(РАБ.НФА.КОНВЕРТАЦИЯ_ОПЕРАЦИЙ_СООТВЕТСТВИЕ.СЧЕТНФА       );
      ClearVariable(РАБ.НФА.КОНВЕРТАЦИЯ_ОПЕРАЦИЙ_СООТВЕТСТВИЕ.ПОЛЕПОДТАБЛИЦЫ);
      ClearVariable(РАБ.НФА.КОНВЕРТАЦИЯ_ОПЕРАЦИЙ_СООТВЕТСТВИЕ.КБКОТСЧЕТА    );
      ClearVariable(РАБ.НФА.КОНВЕРТАЦИЯ_ОПЕРАЦИЙ_СООТВЕТСТВИЕ.АНОТСЧЕТА     );
      ClearVariable(РАБ.НФА.КОНВЕРТАЦИЯ_ОПЕРАЦИЙ_СООТВЕТСТВИЕ.ОБЯЗАТЕЛЬНЫЙ  );
      ClearVariable(РАБ.НФА.КОНВЕРТАЦИЯ_ОПЕРАЦИЙ_СООТВЕТСТВИЕ.НЕОБЯЗАТЕЛЬНЫЙ);
      ClearVariable(РАБ.НФА.КОНВЕРТАЦИЯ_ОПЕРАЦИЙ_СООТВЕТСТВИЕ.ОСТАТОК       );
      ClearVariable(РАБ.НФА.КОНВЕРТАЦИЯ_ОПЕРАЦИЙ_СООТВЕТСТВИЕ.ДЛЯВСЕХ       );
      ClearVariable(РАБ.НФА.КОНВЕРТАЦИЯ_ОПЕРАЦИЙ_СООТВЕТСТВИЕ.НОМПРОВОДКИ   );

      ClearVariable(РАБ.НФА.КОНВЕРТАЦИЯ_ОПЕРАЦИЙ_СООТВЕТСТВИЕ.ЗАГОЛОВОК1     );
      ClearVariable(РАБ.НФА.КОНВЕРТАЦИЯ_ОПЕРАЦИЙ_СООТВЕТСТВИЕ.ОТВЕТ1         );
      ClearVariable(РАБ.НФА.КОНВЕРТАЦИЯ_ОПЕРАЦИЙ_СООТВЕТСТВИЕ.СПР1           );
      ClearVariable(РАБ.НФА.КОНВЕРТАЦИЯ_ОПЕРАЦИЙ_СООТВЕТСТВИЕ.КБКНФА1        );
      ClearVariable(РАБ.НФА.КОНВЕРТАЦИЯ_ОПЕРАЦИЙ_СООТВЕТСТВИЕ.СЧЕТНФА1       );
      ClearVariable(РАБ.НФА.КОНВЕРТАЦИЯ_ОПЕРАЦИЙ_СООТВЕТСТВИЕ.ПОЛЕПОДТАБЛИЦЫ1);
      ClearVariable(РАБ.НФА.КОНВЕРТАЦИЯ_ОПЕРАЦИЙ_СООТВЕТСТВИЕ.КБКОТСЧЕТА1    );
      ClearVariable(РАБ.НФА.КОНВЕРТАЦИЯ_ОПЕРАЦИЙ_СООТВЕТСТВИЕ.АНОТСЧЕТА1     );
      ClearVariable(РАБ.НФА.КОНВЕРТАЦИЯ_ОПЕРАЦИЙ_СООТВЕТСТВИЕ.ОБЯЗАТЕЛЬНЫЙ1  );
      ClearVariable(РАБ.НФА.КОНВЕРТАЦИЯ_ОПЕРАЦИЙ_СООТВЕТСТВИЕ.НЕОБЯЗАТЕЛЬНЫЙ1);
      ClearVariable(РАБ.НФА.КОНВЕРТАЦИЯ_ОПЕРАЦИЙ_СООТВЕТСТВИЕ.ОСТАТОК1       );
      ClearVariable(РАБ.НФА.КОНВЕРТАЦИЯ_ОПЕРАЦИЙ_СООТВЕТСТВИЕ.ДЛЯВСЕХ1       );
      ClearVariable(РАБ.НФА.КОНВЕРТАЦИЯ_ОПЕРАЦИЙ_СООТВЕТСТВИЕ.НОМПРОВОДКИ1   );
      ClearVariable(РАБ.НФА.КОНВЕРТАЦИЯ_ОПЕРАЦИЙ_СООТВЕТСТВИЕ.nn1            );





      for j=1..rs do -- заполняем РАБ.НФА.КОНВЕРТАЦИЯ_ОПЕРАЦИЙ_СООТВЕТСТВИЕ только рабочими строками текущей операции
        ПОЛЕПОДТАБЛИЦЫ1=GetFieldS(war,j,'ПОЛЕПОДТАБЛИЦЫ');
        СПР1           =GetFieldS(war,j,'СПР'           );
--      if (Длина(СПР)>2 и pos(up(СПР)+'|',НЕДЕЙСТВСПР+'|')>0 и длина(ПОЛЕПОДТАБЛИЦЫ)>1) или длина(ПОЛЕПОДТАБЛИЦЫ)<2:--не копируем не используемую запись
--        if не((Длина(СПР1)>2 и pos(up(СПР1)+'|',НЕДЕЙСТВСПР)>0 и Длина(ПОЛЕПОДТАБЛИЦЫ1)>2) или Длина(ПОЛЕПОДТАБЛИЦЫ1)<2):-- строка рабочая, надо копировать!
        if (Длина(ПОЛЕПОДТАБЛИЦЫ1)>0 и Длина(СПР1)<1) или (Длина(ПОЛЕПОДТАБЛИЦЫ1)>0 и Длина(СПР1)>0 и pos('|'+up(СПР1)+'|','|'+НЕДЕЙСТВСПР)<1):
           ПОЗИЦИИ=ПОЗИЦИИ+1;
           РАБ.НФА.КОНВЕРТАЦИЯ_ОПЕРАЦИЙ_СООТВЕТСТВИЕ.ЗАГОЛОВОК     [ПОЗИЦИИ]=GetFieldS(war,j,'ЗАГОЛОВОК'     );
           РАБ.НФА.КОНВЕРТАЦИЯ_ОПЕРАЦИЙ_СООТВЕТСТВИЕ.ОТВЕТ         [ПОЗИЦИИ]=GetFieldS(war,j,'ОТВЕТ'         );
           РАБ.НФА.КОНВЕРТАЦИЯ_ОПЕРАЦИЙ_СООТВЕТСТВИЕ.СПР           [ПОЗИЦИИ]=СПР1                     ;
           РАБ.НФА.КОНВЕРТАЦИЯ_ОПЕРАЦИЙ_СООТВЕТСТВИЕ.КБКНФА        [ПОЗИЦИИ]=GetFieldL(war,j,'КБКНФА'        );
           РАБ.НФА.КОНВЕРТАЦИЯ_ОПЕРАЦИЙ_СООТВЕТСТВИЕ.СЧЕТНФА       [ПОЗИЦИИ]=GetFieldL(war,j,'СЧЕТНФА'       );
           РАБ.НФА.КОНВЕРТАЦИЯ_ОПЕРАЦИЙ_СООТВЕТСТВИЕ.ПОЛЕПОДТАБЛИЦЫ[ПОЗИЦИИ]=ПОЛЕПОДТАБЛИЦЫ1;
           РАБ.НФА.КОНВЕРТАЦИЯ_ОПЕРАЦИЙ_СООТВЕТСТВИЕ.КБКОТСЧЕТА    [ПОЗИЦИИ]=GetFieldS(war,j,'КБКОТСЧЕТА'    );
           РАБ.НФА.КОНВЕРТАЦИЯ_ОПЕРАЦИЙ_СООТВЕТСТВИЕ.АНОТСЧЕТА     [ПОЗИЦИИ]=GetFieldS(war,j,'АНОТСЧЕТА'     );
           РАБ.НФА.КОНВЕРТАЦИЯ_ОПЕРАЦИЙ_СООТВЕТСТВИЕ.ОБЯЗАТЕЛЬНЫЙ  [ПОЗИЦИИ]=GetFieldS(war,j,'ОБЯЗАТЕЛЬНЫЙ'  );
           РАБ.НФА.КОНВЕРТАЦИЯ_ОПЕРАЦИЙ_СООТВЕТСТВИЕ.НЕОБЯЗАТЕЛЬНЫЙ[ПОЗИЦИИ]=GetFieldS(war,j,'НЕОБЯЗАТЕЛЬНЫЙ');
           РАБ.НФА.КОНВЕРТАЦИЯ_ОПЕРАЦИЙ_СООТВЕТСТВИЕ.ОСТАТОК       [ПОЗИЦИИ]=GetFieldL(war,j,'ОСТАТОК'       );
           РАБ.НФА.КОНВЕРТАЦИЯ_ОПЕРАЦИЙ_СООТВЕТСТВИЕ.ДЛЯВСЕХ       [ПОЗИЦИИ]=GetFieldL(war,j,'ДЛЯВСЕХ'       );
           РАБ.НФА.КОНВЕРТАЦИЯ_ОПЕРАЦИЙ_СООТВЕТСТВИЕ.НОМПРОВОДКИ   [ПОЗИЦИИ]=GetFieldS(war,j,'НОМПРОВОДКИ'   );
        fi;
      od;
      РАБ.НФА.КОНВЕРТАЦИЯ_ОПЕРАЦИЙ_СООТВЕТСТВИЕ.Строк1табл=ПОЗИЦИИ;
    CloseWorkArea(war);
  CloseWorkArea(wa);

  ii=ДлинаМассива(З_N);
  if itoper=ii:k=ДлинаМассива(ForSelect);-- Нашли конец последней операции
   | true :k=З_N[itoper+1]-1;            -- Нашли конец не последней операции
     if k<0:k=ДлинаМассива(ForSelect);fi;
  fi;
  n=З_N[itoper]; -- нашли начало операции
  --n - начало, k - конец описания операции в массиве ForSelect n="  (", k="  )"
  ss0=З_СООТВ[З_NN[it]];
  n=n+1;
  --k=k-1; -- исключаем скобки
    for j=n..k do
      ss=ForSelect[j];
      if pos('  (',ss)=1:ЗАГОЛОВОК1='';ОТВЕТ1='';СПР1='';ПОЛЕПОДТАБЛИЦЫ1='';КБКОТСЧЕТА1='';АНОТСЧЕТА1='';ОБЯЗАТЕЛЬНЫЙ1='';НЕОБЯЗАТЕЛЬНЫЙ1='';НОМПРОВОДКИ1='';КБКНФА1=false;СЧЕТНФА1=false;ОСТАТОК1=false;ДЛЯВСЕХ1=false;
       | pos('  ЗАГОЛОВОК='     ,ss)=1:ЗАГОЛОВОК1     =Удалить(ss,1,pos('=',ss));
       | pos('  ОТВЕТ=' ,ss)=1:ОТВЕТ1         =Удалить(ss,1,pos('=',ss));
       | pos('  СПР='   ,ss)=1:СПР1           =Удалить(ss,1,pos('=',ss));
       | pos('  КБКНФА='        ,ss)=1:КБКНФА1        =if(Удалить(ss,1,pos('=',ss))='T',true,false);
       | pos('  СЧЕТНФА='       ,ss)=1:СЧЕТНФА1       =if(Удалить(ss,1,pos('=',ss))='T',true,false);
       | pos('  ПОЛЕПОДТАБЛИЦЫ=',ss)=1:ПОЛЕПОДТАБЛИЦЫ1=Удалить(ss,1,pos('=',ss));
       | pos('  КБКОТСЧЕТА='    ,ss)=1:КБКОТСЧЕТА1    =Удалить(ss,1,pos('=',ss));
       | pos('  АНОТСЧЕТА='     ,ss)=1:АНОТСЧЕТА1     =Удалить(ss,1,pos('=',ss));
       | pos('  ОБЯЗАТЕЛЬНЫЙ='  ,ss)=1:ОБЯЗАТЕЛЬНЫЙ1  =Удалить(ss,1,pos('=',ss));
       | pos('  НЕОБЯЗАТЕЛЬНЫЙ=',ss)=1:НЕОБЯЗАТЕЛЬНЫЙ1=Удалить(ss,1,pos('=',ss));
       | pos('  ОСТАТОК='       ,ss)=1:ОСТАТОК1       =if(Удалить(ss,1,pos('=',ss))='T',true,false);
       | pos('  ДЛЯВСЕХ='       ,ss)=1:ДЛЯВСЕХ1       =if(Удалить(ss,1,pos('=',ss))='T',true,false);
       | pos('  НОМПРОВОДКИ='   ,ss)=1:НОМПРОВОДКИ1   =Удалить(ss,1,pos('=',ss));
       | pos('  )',ss)=1:-- добавляем строчку в бланк РАБ.НФА.КОНВЕРТАЦИЯ_ОПЕРАЦИЙ_СООТВЕТСТВИЕ
         ПОЗИЦИИ=ПОЗИЦИИ+1;
         РАБ.НФА.КОНВЕРТАЦИЯ_ОПЕРАЦИЙ_СООТВЕТСТВИЕ.ЗАГОЛОВОК1     [ПОЗИЦИИ]=ЗАГОЛОВОК1     ;
         РАБ.НФА.КОНВЕРТАЦИЯ_ОПЕРАЦИЙ_СООТВЕТСТВИЕ.ОТВЕТ1         [ПОЗИЦИИ]=ОТВЕТ1         ;
         РАБ.НФА.КОНВЕРТАЦИЯ_ОПЕРАЦИЙ_СООТВЕТСТВИЕ.СПР1   [ПОЗИЦИИ]=СПР1           ;
         РАБ.НФА.КОНВЕРТАЦИЯ_ОПЕРАЦИЙ_СООТВЕТСТВИЕ.КБКНФА1        [ПОЗИЦИИ]=КБКНФА1        ;
         РАБ.НФА.КОНВЕРТАЦИЯ_ОПЕРАЦИЙ_СООТВЕТСТВИЕ.СЧЕТНФА1       [ПОЗИЦИИ]=СЧЕТНФА1       ;
         РАБ.НФА.КОНВЕРТАЦИЯ_ОПЕРАЦИЙ_СООТВЕТСТВИЕ.ПОЛЕПОДТАБЛИЦЫ1[ПОЗИЦИИ]=ПОЛЕПОДТАБЛИЦЫ1;
         РАБ.НФА.КОНВЕРТАЦИЯ_ОПЕРАЦИЙ_СООТВЕТСТВИЕ.КБКОТСЧЕТА1    [ПОЗИЦИИ]=КБКОТСЧЕТА1    ;
         РАБ.НФА.КОНВЕРТАЦИЯ_ОПЕРАЦИЙ_СООТВЕТСТВИЕ.АНОТСЧЕТА1     [ПОЗИЦИИ]=АНОТСЧЕТА1     ;
         РАБ.НФА.КОНВЕРТАЦИЯ_ОПЕРАЦИЙ_СООТВЕТСТВИЕ.ОБЯЗАТЕЛЬНЫЙ1  [ПОЗИЦИИ]=ОБЯЗАТЕЛЬНЫЙ1  ;
         РАБ.НФА.КОНВЕРТАЦИЯ_ОПЕРАЦИЙ_СООТВЕТСТВИЕ.НЕОБЯЗАТЕЛЬНЫЙ1[ПОЗИЦИИ]=НЕОБЯЗАТЕЛЬНЫЙ1;
         РАБ.НФА.КОНВЕРТАЦИЯ_ОПЕРАЦИЙ_СООТВЕТСТВИЕ.ОСТАТОК1       [ПОЗИЦИИ]=ОСТАТОК1       ;
         РАБ.НФА.КОНВЕРТАЦИЯ_ОПЕРАЦИЙ_СООТВЕТСТВИЕ.ДЛЯВСЕХ1       [ПОЗИЦИИ]=ДЛЯВСЕХ1       ;
         РАБ.НФА.КОНВЕРТАЦИЯ_ОПЕРАЦИЙ_СООТВЕТСТВИЕ.НОМПРОВОДКИ1   [ПОЗИЦИИ]=НОМПРОВОДКИ1   ;
      fi;
--  trace(ForSelect[j]);
  od;
  РАБ.НФА.КОНВЕРТАЦИЯ_ОПЕРАЦИЙ_СООТВЕТСТВИЕ.ПОЗИЦИИ=ПОЗИЦИИ;
  ii=РАБ.НФА.КОНВЕРТАЦИЯ_ОПЕРАЦИЙ_СООТВЕТСТВИЕ.Строк1табл+1;
  for j=ii..ПОЗИЦИИ do
    РАБ.НФА.КОНВЕРТАЦИЯ_ОПЕРАЦИЙ_СООТВЕТСТВИЕ.NN1[j]=j-ii+1;
  od;
  РАБ.НФА.КОНВЕРТАЦИЯ_ОПЕРАЦИЙ_СООТВЕТСТВИЕ.КодОперКуда  =т[it];
  РАБ.НФА.КОНВЕРТАЦИЯ_ОПЕРАЦИЙ_СООТВЕТСТВИЕ.ИмяОперКуда  =т_[it];
  РАБ.НФА.КОНВЕРТАЦИЯ_ОПЕРАЦИЙ_СООТВЕТСТВИЕ.КодОперОткуда=з[it];
  РАБ.НФА.КОНВЕРТАЦИЯ_ОПЕРАЦИЙ_СООТВЕТСТВИЕ.ИмяОперОтКуда=з_[it];
  РАБ.НФА.КОНВЕРТАЦИЯ_ОПЕРАЦИЙ_СООТВЕТСТВИЕ.З_СООТВ=З_СООТВ[З_NN[it]];

--  OpenBlank('РАБ.НФА.КОНВЕРТАЦИЯ_ОПЕРАЦИЙ_СООТВЕТСТВИЕ',false);
  OpenBlank('РАБ.НФА.КОНВЕРТАЦИЯ_ОПЕРАЦИЙ_СООТВЕТСТВИЕ',true);
  З_СООТВ[З_NN[it]]=РАБ.НФА.КОНВЕРТАЦИЯ_ОПЕРАЦИЙ_СООТВЕТСТВИЕ.З_СООТВ;
  Т_СООТВ_АН[З_NN[it]]=РАБ.НФА.КОНВЕРТАЦИЯ_ОПЕРАЦИЙ_СООТВЕТСТВИЕ.Т_СООТВ_АН;
  З_СООТВ_АН[З_NN[it]]=РАБ.НФА.КОНВЕРТАЦИЯ_ОПЕРАЦИЙ_СООТВЕТСТВИЕ.З_СООТВ_АН;
  Т_СООТВ_Ч [З_NN[it]]=РАБ.НФА.КОНВЕРТАЦИЯ_ОПЕРАЦИЙ_СООТВЕТСТВИЕ.Т_СООТВ_Ч ;
  З_СООТВ_Ч [З_NN[it]]=РАБ.НФА.КОНВЕРТАЦИЯ_ОПЕРАЦИЙ_СООТВЕТСТВИЕ.З_СООТВ_Ч ;

  ss0=ВыделитьСлово(1,З_СООТВ[З_NN[it]],';');
  Lo[it]=ss0='2';
  ^false  ;
end;


Функ код_операции_Т_ПриВходе(Поле: Строка; Итер: Целое): Логич;
 var ss:s;
   ss=ВыборПризнака('ДНФА.*');
   if length(ss)<4:^false;fi;
   Т[Итер]=Удалить(ss,1,5);
  ^false  ;
end;

func ЗагрузитьОписанияОперацийЗ:l;
  var ll:l;
  var ss1,ss2,ss,ДНФА,ДНФАИМЯ,НЕДЕЙСТВСПР,СПР,ПОЛЕПОДТАБЛИЦЫ:s;
  var ii,j,k,z,z1,z2,z1_,z2_,нач1,нф,zzz:i;
  if не ЗагрузженыОписанияОпераций:
     ClearVariable(З_NN     );
     ClearVariable(З_N      );
     ClearVariable(З_КОД    );
     ClearVariable(З_ИМЯ    );
     ClearVariable(З_КОД_ИМЯ);
     ClearVariable(З_ИСКЛСПР);
     ClearVariable(З_СООТВ);
     ClearVariable(З_РАБОПЕР);
     --ClearVariable(З_ЗАПРОС_КОД );
     ClearVariable(З_ИМЯ    );

     if естьфайл(Путь_РПО_ОПЕРАЦИИДНФА_CRD):
        ОкноВыполненияПоказать(1,"Выборка задействованных операций...");
        КолОперДляЗагрузки=0;
        Попытка
         нф =ТекстФайлОткрытьНаЧтение(Путь_РПО_ОПЕРАЦИИДНФА_CRD);
         Пока не ТекстФайлКонецФайла(нф) do
           ss1=ТекстФайлПрочитатьСтроку(нф);
           if pos('АН_ДНФА=',ss1)=1:ДНФА=Удалить(ss1,1,pos('=',ss1));
              ДобавитьВмассив(З_РАБОПЕР,true,false,trim(ДНФА));
            | pos('(',ss1)=1:КолОперДляЗагрузки=КолОперДляЗагрузки+1;
           fi;
         od;
        Окончание
         ТекстФайлЗакрыть(нф);
        Конец;
     fi;
     if естьфайл(Путь_РПО_ДНФА_CRD):
        ОкноВыполненияПоказать(1,"Первичная загрузка файла описания операций...");
        ClearVariable(ForSelect);z=0;
        нач1=1;
        Попытка
         нф =ТекстФайлОткрытьНаЧтение(Путь_РПО_ДНФА_CRD);
         Пока не ТекстФайлКонецФайла(нф) do
           ss1=ТекстФайлПрочитатьСтроку(нф);
           if Длина(ss1)>0:
--               ll=true;
               if pos('(',ss1)=1:ДНФА='';ДНФАИМЯ='';НЕДЕЙСТВСПР='';ll=false;ClearVariable(ForSelect2);zzz=0;
                | pos('ДНФА=',ss1)=1:ДНФА=Удалить(ss1,1,pos('=',ss1));ll=true;
                | pos('ДНФАИМЯ=',ss1)=1:ДНФАИМЯ=Удалить(ss1,1,pos('=',ss1));ll=true;
                | pos('НЕДЕЙСТВСПР=',ss1)=1:НЕДЕЙСТВСПР=Удалить(ss1,1,pos('=',ss1));ll=true;
                | pos('  ЗАГОЛОВОК=',ss1)=1:     ll=false;
                | pos('  ОТВЕТ=',ss1)=1:         ll=false;
                | pos('  ПОЛЕПОДТАБЛИЦЫ=',ss1)=1:ll=false;
                | pos('  ОБЯЗАТЕЛЬНЫЙ=',ss1)=1:  ll=false;
                | pos('  НЕОБЯЗАТЕЛЬНЫЙ=',ss1)=1:ll=false;
                | pos('  ОСТАТОК=',ss1)=1:       ll=false;
                | pos('  ДЛЯВСЕХ=',ss1)=1:       ll=false;
                | pos('  НОМПРОВОДКИ=',ss1)=1:   ll=false;
                | pos('  КБКНФА=',ss1)=1:        ll=false;
                | pos('  СЧЕТНФА=',ss1)=1:       ll=false;
                | pos('  КБКОТСЧЕТА=',ss1)=1:    ll=false;
                | pos('  АНОТСЧЕТА=',ss1)=1:     ll=false;
                | pos('  СПР=',ss1)=1:   ll=false;
                | pos('  (',ss1)=1:      ll=false;
                | pos('  )',ss1)=1:      ll=false;
                | pos(')',ss1)=1:        ll=false;
                     if ПоискВмассиве(З_РАБОПЕР,ДНФА,true)>0:
                       z=z+1;
                       З_КОД    [z]=ДНФА;
                       З_ИМЯ    [z]=ДНФАИМЯ;
                       З_ИСКЛСПР[z]=НЕДЕЙСТВСПР;
                       З_КОД_ИМЯ[z]=ДНФА+'--'+ДНФАИМЯ;
                       КопироватьМассив(ForSelect2,ForSelect,1,нач1);
                       нач1=нач1+ДлинаМассива(ForSelect2);
                     fi;
                | true:ll=true;
               fi;
               if not ll:
                  zzz=zzz+1;
                  ForSelect2[zzz]=ss1;
--                  ForSelect[нач1]=ss1;
--                  нач1=нач1+1;
               fi;
           fi;
         od;
        Окончание
         ТекстФайлЗакрыть(нф);
        Конец;


        ClearVariable(ForSelect1);
        ii=ДлинаМассива(ForSelect);
        z1_=ii;z2_=0;
        ОкноВыполненияПоказать(z1_,"Удаление пустых строк...");
        for j=1..ii do -- второй проход - удаление пустых строк
          if pos('  (',ForSelect[j])=1 and pos('  )',ForSelect[j+1])=1:j=j+1;
           | true:z2_=z2_+1;ForSelect1[z2_]=ForSelect[j];
          fi;
          ОкноВыполненияПоложение(j);
        od;
        ClearVariable(ForSelect);
        ii=ДлинаМассива(ForSelect1);
        z=0;
        z1=0;z2=0; -- координаты начала и конца строки в подтаблице
        z1_=ii;z2_=0;
        ОкноВыполненияПоказать(z1_,"Удаление строк входящих в НЕДЕЙСТВСПР...");
        for j=1..ii do -- третий проход - удаление  строк входящих в НЕДЕЙСТВСПР и с пустым значением ПОЛЕПОДТАБЛИЦЫ
          ss1=ForSelect1[j];
          if pos('(',ss1)=1:z=z+1;НЕДЕЙСТВСПР=З_ИСКЛСПР[z];z2_=z2_+1;ForSelect[z2_]=ss1;
           | pos('  (',ss1)=1:z1=j;СПР='';ПОЛЕПОДТАБЛИЦЫ='';z2_=z2_+1;ForSelect[z2_]=ss1;
           | pos('  СПР=',ss1)=1:СПР=Удалить(ss1,1,pos('=',ss1));z2_=z2_+1;ForSelect[z2_]=ss1;
           | pos('  ПОЛЕПОДТАБЛИЦЫ=',ss1)=1:ПОЛЕПОДТАБЛИЦЫ=Удалить(ss1,1,pos('=',ss1));z2_=z2_+1;ForSelect[z2_]=ss1;
           | pos('  )',ss1)=1:z2=j;z2_=z2_+1;ForSelect[z2_]=ForSelect1[j];
             if (Длина(СПР)>0 и pos('|'+up(СПР)+'|','|'+НЕДЕЙСТВСПР+'|')>0 и длина(ПОЛЕПОДТАБЛИЦЫ)>0) или длина(ПОЛЕПОДТАБЛИЦЫ)<1:--не копируем не используемую запись
                z2_=z2_-(z2-z1)-1;
             fi;
           | true:z2_=z2_+1;ForSelect[z2_]=ss1;
          fi;
          ОкноВыполненияПоложение(j);
        od;

        ii=ДлинаМассива(ForSelect);
        for j=z2_+1..ii do -- третий проход - удаление хвоста
          УдалитьИзМассива(ForSelect,j);
        od;
        z=0;
        ii=ДлинаМассива(ForSelect);
        ClearVariable(З_N);
        for j=1..ii do -- четвертый проход - запоминание координат
          if pos('(',ForSelect[j])=1:
             z=z+1;
             З_N[z]=j;
          fi;
        od;

       ЗагрузженыОписанияОпераций=true;
     ОкноВыполненияЗакрыть;
     fi;

  fi;
  ^ЗагрузженыОписанияОпераций  ;
end;
var LastOper:i;
Функ код_операции_З_ПриВходе(Поле: Строка; Итер: Целое): Логич;
  var ii:i;
  var ss:s;
  if not ЗагрузитьОписанияОперацийЗ:^false;fi;
  СортироватьМассив(З_КОД_ИМЯ,false);
  ii=Alternate('',З_КОД_ИМЯ,-1,LastOper,10);
--  ii=AlternateTree('',З_КОД_ИМЯ,-1,0,0,'.','Код операции','Описание операции');
  if ii>0:
    LastOper=ii;
    ss=trim(Удалить(З_КОД_ИМЯ[ii],pos('--',З_КОД_ИМЯ[ii]),255));
    ii=ПоискВмассиве(З_КОД,ss);
    З_NN[Итер]=ii;
  fi;
  ^false  ;
end;


Функ Путь_РПО_ДНФА_CRD_ПриОбзоре(Сек: Строка; Стр: Целое; Столб: Целое; Тек: Строка): Строка;
  var ss:s;
  var ii:i;
  ss=Путь_РПО_ДНФА_CRD;
  ii=ВыборФайла(ss, "Открыть файл...", "Картотеки(*.crd)|РПО_ДНФА.crd");
  ^ss;
end;


Функ Путь_РПО_ОПЕРАЦИИДНФА_CRD_ПриОбзоре(Сек: Строка; Стр: Целое; Столб: Целое; Тек: Строка): Строка;
  var ss:s;
  var ii:i;
  ss=Путь_РПО_ОПЕРАЦИИДНФА_CRD;
  ii=ВыборФайла(ss, "Открыть файл...", "Картотеки(*.crd)|РПО_ОПЕРАЦИИДНФА.crd");
  ^ss;
end;

2Func РасчетМаксКолПров0:i;
 var i,j,k,maxt,p1,p2:i;
 var s:s;
 j=ДлинаМассива(НОМПРОВОДКИ_);
 maxt=0;
 for i=1..j do
  s=НомПроводки_[i];
  for k=maxt+1..9 do
   p1=pos(str(k),s);
   p2=pos(str(k)+'-',s);
   if p1>0 и p2=0 и p1<Length(s):maxt=k;fi;
  od;
 od;
 ^maxt;
2end0;

Проц Загрузитьдвижение_ПриНажатии(Стр: Целое; Кол: Целое; Двойной: Логич);
  var wa,war,rs,wa1,war1,rs1,ii,j,nr,nrr,nr1,Time_,KolRec,CurRec,Time_1:i;
  var zz,zzz,zzs,нф,k,Запрос,ПОЗИЦИИ,curДНФА,curДНФА0,p,itoper,z,tt,ii_,kk,iii:i;
  var ll,lzzs,autorefana:l;
  var ДАТОПЕР:d;
  var АН_ДНФА,НЕДЕЙСТВСПР,СПР,ПОЛЕПОДТАБЛИЦЫ,ОСТНФА,ss1,INI,ss,ss2,ss3,ssv,УслОст,msgtime:s;

     Time_1=Time;
     if естьфайл(Путь_РПО_ОПЕРАЦИИДНФА_CRD):
        autorefana=Автообработка;
        ЗадатьАвтообработку(false);
--        KolRec=640;CurRec=0;
        KolRec=0;CurRec=0;
        ОкноВыполненияПоказать(1,"Анализ загружаемых данных...");
        нф =ТекстФайлОткрытьНаЧтение(Путь_РПО_ОПЕРАЦИИДНФА_CRD);
        Пока не ТекстФайлКонецФайла(нф) do
          ss1=ТекстФайлПрочитатьСтроку(нф);
          if pos('(',ss1)=1:KolRec=KolRec+1;fi;
        od;
        ТекстФайлЗакрыть(нф);
        Time_1=Time-Time_1;
        Time_=Time;

        ОкноВыполненияПоказать(KolRec,"Загрузка и конвертация операций");
        ClearVariable(NДНФА);
        ClearVariable(KДНФА);
        ClearVariable(ПОЛЕПОДТАБЛИЦЫ_);
        ClearVariable(ОСТАТОК_       );
        ClearVariable(ДЛЯВСЕХ_       );
        ClearVariable(НОМПРОВОДКИ_   );
        ClearVariable(КОНВ_          );
        ClearVariable(INI_           );
        ClearVariable(МАКСКОЛПРОВ_   );

--        ОкноВыполненияПоказать(КолОперДляЗагрузки,"Загрузка и конвертация операций");
        zz=0;
        wa =OpenWorkArea('РПО_ОПЕРАЦИИДНФА','');
        wa1=OpenWorkArea('РПО_ДНФА','');
        Попытка
         BeginChanging(wa);
         нф =ТекстФайлОткрытьНаЧтение(Путь_РПО_ОПЕРАЦИИДНФА_CRD);
         Пока не ТекстФайлКонецФайла(нф) do
           ss1=ТекстФайлПрочитатьСтроку(нф);
           if pos('(',ss1)=1:-- выбираем текущую операцию по движению для обработки в forselect2
              ClearVariable(forselect2);ДАТОПЕР=1.1.100;АН_ДНФА='';zzz=0;lzzs=false;CurRec=CurRec+1;
              msgtime=Раб.НФА.B01.ВремяВстроку(Time_1+int(KolRec*(Time-Time_)/CurRec));
--              msgtime=Раб.НФА.B01.ВремяВстроку(int((CurRec/(Time-Time_))*(KolRec-CurRec)));
              ОкноВыполненияПоказать(KolRec,'Прошло'+Раб.НФА.B01.ВремяВстроку(Time-Time_)+' Обработка записи '+str(CurRec)+' из '+str(KolRec)+' всего '+msgtime);
              ОкноВыполненияПоложение(CurRec);
            | ss1='  [РПО_ОПЕРАЦИИДНФА@ПОЗИЦИИ':--Начинаем выбирать подтаблицу ПОЗИЦИИ
              ClearVariable(forselect3);zzs=0;lzzs=true;
            | pos(')',ss1)=1:-- закончили выборку операции, начинаем анализ и загрузку
              k=ДлинаМассива(З);j=0;
              for ii=1..k do
               if АН_ДНФА=З[ii]:j=ii;break;
               fi;
              od;
              curДНФА0=j;
              ii=j;
              ll=false;
            --  ii=ПоискВмассиве(З,АН_ДНФА,false,1);
              if ii>0 и Длина(Т[ii])>1 и Lo[ii]:-- проверка на разрешенную установку соответствий
                 if ДатаНачалаЗагрузки>1.1.2000 или ДатаКонцаЗагрузкиНеВключая>1.1.2000:-- проверяем на дату загрузки
                    if ДАТОПЕР>1.1.2000:
                      if ДатаНачалаЗагрузки>1.1.2000 и ДатаКонцаЗагрузкиНеВключая>1.1.2000 и ДАТОПЕР<ДатаКонцаЗагрузкиНеВключая и ДАТОПЕР>=ДатаНачалаЗагрузки:ll=true;
                       | ДатаНачалаЗагрузки>1.1.2000 и ДатаКонцаЗагрузкиНеВключая<1.1.2000 и ДАТОПЕР>=ДатаНачалаЗагрузки:ll=true;
                       | ДатаНачалаЗагрузки<1.1.2000 и ДатаКонцаЗагрузкиНеВключая>1.1.2000 и ДАТОПЕР<ДатаКонцаЗагрузкиНеВключая:ll=true;
                      fi;
                    fi;
                  | true:ll=true;
                 fi;
              fi;
              if ll:-- Можем загружать операцию!
                 nr=ВставитьЗапись(wa);
                 nr=ЗаписатьПолеС(wa,nr,'АН_ДНФА',Т[curДНФА0]);
                 nr=ЗаписатьПолеД(wa,nr,'ДАТОПЕР',ДАТОПЕР);
                 nr=ЗаписатьПолеЗ(wa,nr,'ДНФА',ПризнакВЗапись('ДНФА.'+Т[curДНФА0],false));
                 k=ДлинаМассива(forselect2);
                 for j=1..k do
                   ss1=forselect2[j];
                   if pos('РПО_КЛЮЧ=',ss1)=1 :nr=ЗаписатьПолеС(wa,nr,'РПО_КЛЮЧ',Удалить(ss1,1,pos('=',ss1)));              -- поля для инициализации --
                    | pos('НОМЕР=',ss1)=1    :nr=ЗаписатьПолеС(wa,nr,'НОМЕР',Удалить(ss1,1,pos('=',ss1)));                 --  NNDAY        :INTEGER;
                    | pos('ОСНОВАНИЕ=',ss1)=1:nr=ЗаписатьПолеС(wa,nr,'ОСНОВАНИЕ',Удалить(ss1,1,pos('=',ss1)));             --  INI          :STRING;
                    | pos('СОСТАВИЛ=',ss1)=1 :nr=ЗаписатьПолеС(wa,nr,'СОСТАВИЛ',Удалить(ss1,1,pos('=',ss1)));              --  CLOSEDMODFOB :BOOLEAN;
                    | pos('ПРОВОДИТЬ=',ss1)=1:nr=ЗаписатьПолеЛ(wa,nr,'ПРОВОДИТЬ',if(Удалить(ss1,1,pos('=',ss1))='T',true,false));  --  КОНВ         :INTEGER;
                   fi;                                                             -- поля для инициализации --
                 od;

  ----------- работа с текущей операцией, анализ операции, куда грузим, соответствие строк, конвертация УЧН+инициализация новой операции(ини, услост...)
  -- NNDAY,INI,КОНВ T* шапки
  -- INI = вывод данных в таблице, шапке, или в таблице и шапке
  -- T*  = позиция в проводке
  -- NNDAY =0-ПРИХ; 1-ВНПР; 2-РАСХ
  -- КОНВ = конв из операции

--     curДНФА=ПоискВмассиве(KДНФА,Т[curДНФА0]);
     curДНФА=0;
     kk=ДлинаМассива(KДНФА);
     for iii=1..kk do
      if KДНФА[iii]=Т[curДНФА0]:curДНФА=iii;break;
      fi;
     od;
     if curДНФА<1:-- поиск в закэшированных операциях, если нет, то загружаем и кэшируем в массивах
--       Trace(Т[curДНФА0]);
       nr1=ВзятьНомерЗаписи(wa1,GetFieldR(wa,nr,'ДНФА'));
       НЕДЕЙСТВСПР=GetFieldS(wa1,nr1,'НЕДЕЙСТВСПР')+'|';
       curДНФА=ДлинаМассива(KДНФА)+1;
       KДНФА[curДНФА]=Т[curДНФА0];-- запомнили текущий код операции
--       KДНФА[curДНФА]=АН_ДНФА;-- запомнили текущий код операции
       NДНФА[curДНФА]=ДлинаМассива(ПОЛЕПОДТАБЛИЦЫ_)+1;--запомнили координату начала описания полей операции
       КОНВ_[curДНФА]=GetFieldI(wa1,nr1,'КОНВ');
       war1=OpenArray(wa1,nr1,'ЗАПРОС','');
         ЗАПРОС=Records(war1);
         ПОЗИЦИИ=NДНФА[curДНФА]-1;--ClearVariable(forselect4);
         INI='';
         for j=1..ЗАПРОС do
           ПОЛЕПОДТАБЛИЦЫ=GetFieldS(war1,j,'ПОЛЕПОДТАБЛИЦЫ');
           СПР           =GetFieldS(war1,j,'СПР'           );
           INI=INI+'|'+if(GetFieldL(war1,j,'ДЛЯВСЕХ'    ),'1','0')+';1';
           if (Длина(ПОЛЕПОДТАБЛИЦЫ)>0 и Длина(СПР)<1) или (Длина(ПОЛЕПОДТАБЛИЦЫ)>0 и Длина(СПР)>0 и pos('|'+up(СПР)+'|','|'+НЕДЕЙСТВСПР)<1):
              ПОЗИЦИИ=ПОЗИЦИИ+1;
              ПОЛЕПОДТАБЛИЦЫ_[ПОЗИЦИИ]=ПОЛЕПОДТАБЛИЦЫ;
              ОСТАТОК_       [ПОЗИЦИИ]=GetFieldL(war1,j,'ОСТАТОК'    );
              ДЛЯВСЕХ_       [ПОЗИЦИИ]=GetFieldL(war1,j,'ДЛЯВСЕХ'    );
              НОМПРОВОДКИ_   [ПОЗИЦИИ]=GetFieldS(war1,j,'НОМПРОВОДКИ');
           fi;
--           INI=INI+'|'+if(ДЛЯВСЕХ_[ПОЗИЦИИ],'1','0')+';1';
         od;
       МАКСКОЛПРОВ_[curДНФА]=2РасчетМаксКолПров0;
       INI_[curДНФА]=SubStr(ini,2,Length(ini));
       CloseWorkArea(war1);
     fi;
     nr=ЗаписатьПолеЦ(wa,nr,'КОНВ',КОНВ_[curДНФА]);
     nr=ЗаписатьПолеС(wa,nr,'INI',INI_[curДНФА]);
     nr=ЗаписатьПолеЦ(wa,nr,'МАКСКОЛПРОВ',МАКСКОЛПРОВ_[curДНФА]);
     if Соотв(Т[curДНФА0],'ВНПР.*'):nr=ЗаписатьПолеЦ(wa,nr,'NNDAY',1);
      | Соотв(Т[curДНФА0],'РАСХ.*'):nr=ЗаписатьПолеЦ(wa,nr,'NNDAY',2);
     fi;

     k=ДлинаМассива(KДНФА);
     if curДНФА<k:j=NДНФА[curДНФА];k=NДНФА[curДНФА+1]-1;
      | true:j=NДНФА[curДНФА];k=ДлинаМассива(ПОЛЕПОДТАБЛИЦЫ_);
     fi;
     for p=j..k do
       if pos('О',up(НОМПРОВОДКИ_[p]))>1 or pos('Д',up(НОМПРОВОДКИ_[p]))>1 or pos('К',up(НОМПРОВОДКИ_[p]))>1 or pos('0',НОМПРОВОДКИ_[p])>1:
         nr=ЗаписатьПолеС(wa,nr,'Т'+ПОЛЕПОДТАБЛИЦЫ_[p],НОМПРОВОДКИ_[p]);
       fi;
     od;
-- провели инициализацию, осталось загрузить данные с конвертацией+добобработкой ИНВ. на УЧН. и коррекцией поля остаток --
--     itoper=ПоискВмассиве(З_КОД,з[curДНФА0]);
     itoper=0;
     kk=ДлинаМассива(З_КОД);
     for iii=1..kk do
      if З_КОД[iii]=з[curДНФА0]:itoper=iii;break;
      fi;
     od;

--З_СООТВ_АН[itoper]
--З_СООТВ_Ч [itoper]
--Т_СООТВ_АН[itoper]
--Т_СООТВ_Ч [itoper]
     war=OpenArray(wa,nr,'ПОЗИЦИИ','');
       k=ДлинаМассива(forselect3);
       j=0;
       for p=1..k do
         ss1=forselect3[p];
         --trace(ss1);
         ss2='';
         if ss1='  (':
            ОСТНФА='';УслОст='';
           j=j+1;
           j=ВставитьЗапись(war,j);
          | ss1='  )':
              if ОСТНФА='':j=ЗаписатьПолеС(war,j,'ОСТНФА','');
               | true:
               --  ОСТНФА=ssv;
                   z=pos('{',ОСТНФА);
                   if z=0:ss2=ОСТНФА;-- нет аналитики - оставляем усл по счету, если было
                    | true:
                      ss2=Удалить(ОСТНФА,z+1,255);
                      ssv=Удалить(ОСТНФА,1,z);
                      ssv=Удалить(ssv,pos('}',ssv),255);-- нашли список условий через &
                      УслОст=';'+УслОст+';';
                      z=количествослов(ssv,'&');
                      for tt=1..z do
                        ss3=ВыделитьСлово(tt,ssv,'&');-- проверяем условие для каждого из УслОст
                        if pos('(',ss3)=1 и pos(')',ss3)=Длина(ss3):
                           ss3=SubStr(ss3,2,Длина(ss3)-2);
                        fi;
                        if pos('~ИНВ.',ss3)=1:ss3='~УЧН.'+Удалить(ss3,1,5);ss2=ss2+'('+ss3+')&';
                         | pos('ИНВ.',ss3)=1 :ss3='УЧН.'+Удалить(ss3,1,4) ;ss2=ss2+'('+ss3+')&';
                         | pos('~УЧН.',ss3)=1:ss2=ss2+'('+ss3+')&';
                         | true:if pos(';'+ss3+';',УслОст)>0:ss2=ss2+'('+ss3+')&';fi;
                        fi;

                      od;
                      if z>0:ss2=Удалить(ss2,Длина(ss2),1);fi;
                      ss2=ss2+'}';
                   fi;
                   j=ЗаписатьПолеС(war,j,'ОСТНФА',ss2);
              fi;
          | true:z=pos('=',ss1);
            if z>0:
              ss=up(Trim(Удалить(ss1,z,255)));-- нашли имя поля
              ssv=Trim(Удалить(ss1,1,z));
              if соотв(ssv,'ИНВ.*'):-- замена инв на учн
                 ssv='УЧН.'+Удалить(ssv,1,4);
              fi;
              if ss='ОСТНФА':--обработка условия остатков
                if Соотв(Т[curДНФА0],'ПРИХ.*'):
                   ОСТНФА='';
                 | true:
                   ОСТНФА=ssv;
                fi;
              fi;
              ii=Раб.СТР.НомерСловаВстроке(ss,up(З_СООТВ_АН[itoper]),';');
              if ii>0:ss2=ВыделитьСлово(ii,up(Т_СООТВ_АН[itoper]),';');
                 if Длина(ss2)>1:
                   kk=ДлинаМассива(ПОЛЕПОДТАБЛИЦЫ_);
                   ii_=0;
                   for iii=NДНФА[curДНФА]..kk do
                    if ПОЛЕПОДТАБЛИЦЫ_[iii]=ss2:ii_=iii;break;
                    fi;
                   od;
--                   ii_=ПоискВмассиве(ПОЛЕПОДТАБЛИЦЫ_,ss2);
                   j=ЗаписатьПолеС(war,j,ss2,ssv);
                   if не Соотв(Т[curДНФА0],'ПРИХ.*'):--собираем поля для остатов
                     if ОСТАТОК_[ii_]:--
                       if соотв(ss2,'АН*') or соотв(ss2,'НФА*'):
                         УслОст=УслОст+';'+ssv;
                       fi;
                     fi;
                   fi;
                   if j=1:
                     if ii>0:
                       if ДЛЯВСЕХ_[ii_]:-- пишем поле в шапку
                         if ss2<>'ОСТНФА':
                           nr=ЗаписатьПолеС(wa,nr,ss2+'_Ш',ssv);
                         fi;
                       fi;
                     fi;
                   fi;
                 fi;
               | true:
                 ii=Раб.СТР.НомерСловаВстроке(ss,up(З_СООТВ_Ч[itoper]),';');
                 if ii>0:ss2=ВыделитьСлово(ii,up(Т_СООТВ_Ч[itoper]),';');
                   if Длина(ss2)>1:

                     ii_=0;
                     kk=ДлинаМассива(ПОЛЕПОДТАБЛИЦЫ_);
                     for iii=NДНФА[curДНФА]..kk do
                      if ПОЛЕПОДТАБЛИЦЫ_[iii]=ss2:ii_=iii;break;
                      fi;
                     od;
                     --ii_=ПоискВмассиве(ПОЛЕПОДТАБЛИЦЫ_,ss2);
                     j=ЗаписатьПолеЧ(war,j,ss2,trunc(ssv,9));
                     if j=1:
                       if ii>0:
                         if ДЛЯВСЕХ_[ii_]:-- пишем поле в шапку
                           nr=ЗаписатьПолеЧ(wa,nr,ss2+'_Ш',trunc(ssv,9));
                         fi;
                       fi;
                     fi;
                   fi;
                 fi;
              fi;
            fi;
         fi;
       od;
     --  INI_[curДНФА]
     -- в forselect3 текущая подтаблица ПОЗИЦИИ
      -- записать в по первой строке _Ш !!!
--    ОСТНФА   :STRING; --список признаков через "&" для подсчета остатков
      -- обработка ОСТНФА, замена ИНВ. на УЧН.
     CloseWorkArea(war);
--var З_КОД[]:s;
--var З_СООТВ[]:s;-- строка соответствий вида x;т1=з5;т2=з2;т3=з7 ,
--        -- где х- 0,1,2 (0=ни разу не вызывалась таблица соответствий,
--        --       1=вызывалась, но не утверждена,
--        --       2=вызывалась и утверждена т.е готова к конвертации)
--        -- т1,т2,т3... = номера строк операции под которую будут конвертироваться данные
--        -- з5,з2,з7... = номера строк операции которая будет конвертироваться

--  itoper=ПоискВмассиве(З_КОД,з[it]);
--  itoper=З_NN[it];

--  ii=ДлинаМассива(З_N);
--  if itoper=ii:k=ДлинаМассива(ForSelect);-- Нашли конец последней операции
--   | true :k=З_N[itoper+1]-1;            -- Нашли конец не последней операции
--  fi;
--НФА;ИМЯНФА;СЧНФА;КОРСЧНФА;АМСЧНФА;ОСТНФА;АН01;АН02;АН03;АН04;АН05;АН06;АН07;АН08;АН09;АН10;АН11;АН12;АН13;АН14;АН15;АН16;АН17;АН18;АН19;АН20;АН21;АН22;АН23;АН24;АН25;СЧ02;СЧ03;СЧ04;СЧ05;СЧ06;СЧ07;СЧ08;СЧ09;СЧ10;СЧ11;КМНТ
--КОЛНФА;СУМНФА;АМСУМНФА;Ч01;Ч02;Ч03;Ч04;Ч05;СЧ01;
              fi;
              zz=zz+1;
              ОкноВыполненияПоказать(1,"Загрузка и конвертация операций. Выполнено: "+str(zz));
--              ОкноВыполненияПоложение(zz);
            | pos('АН_ДНФА=',ss1)=1:АН_ДНФА=Удалить(ss1,1,pos('=',ss1));
            | pos('ДАТОПЕР=',ss1)=1:ДАТОПЕР=СтрокуВдату(Удалить(ss1,1,pos('=',ss1)));
            | pos('  ',ss1)<>1 :zzz=zzz+1;forselect2[zzz]=ss1;-- копируем шапку
            | pos('  ]',ss1)=1 и lzzs:lzzs=false;--закончили копировать подтаблицу ПОЗИЦИИ
            | pos('  ',ss1)=1 и lzzs:zzs=zzs+1;forselect3[zzs]=ss1;-- копируем подтаблицу ПОЗИЦИИ
           fi;
         od;
        ОкноВыполненияПоказать(1,"Сохранение загруженных данных...");
        EndChanging(wa);
        Окончание
         ОкноВыполненияЗакрыть;
         ТекстФайлЗакрыть(нф);
         CloseWorkArea(wa1);
         CloseWorkArea(wa);
         ЗадатьАвтообработку(autorefana);
        Конец;
     fi;
 message('Загрузка завершена за '+Раб.Нфа.B01.TimeToString(Time-Time_));
end;

Proc CheckBox1_OnChange(Sender: String);
 if sender='CheckBox1':Секция_ТаблицаСоответствииОпераций_позиции.visible=УпрКонвОпер;
  | sender='CheckBox2':СекцВыгрКартФильтр.visible=УпрВыгрКартФильтр;
  | sender='CheckBox3':СекцЗаменаФКР.visible=УпрЗаменаФКР;
--  | sender='CheckBox4':СекцСчета104_2009.visible=УпрСчета104_2009;
  | sender='CheckBox5':СекцЗаменаФКР2011.visible=УпрЗаменаСч162н;СекцЗаменаПризнаков2011.visible=УпрЗаменаСч162н;СекцНастройкаНИ.visible=УпрЗаменаСч162н;СекцЗаменаСчетов.visible=УпрЗаменаСч162н;
 fi;
end;



Proc СохранитьНастройкиЗаменаФКР(ФайлНастроек:s);
 var nf,t:i;
 var ss,s1,s2,s3,s11,s12,s13:s;
 var ll:l;
   if ФайлНастроек='':ФайлНастроек=PlanVar('LocalData')+'\'+fileТабл_Конв_Сч+'.СВОИ_НАСТРОЙКИ.txt';fi;
 s1='Счета';
 s2='Стандартная таблица конвертации КБК счетов';
 s3='0|0';
   try
     nf=ТекстФайлСоздать(ФайлНастроек);
     ТекстФайлВКонец(nf);
     ТекстФайлЗаписатьСтроку(nf,s1);
     ТекстФайлЗаписатьСтроку(nf,s2);
     ТекстФайлЗаписатьСтроку(nf,s3);
     for t=1..ПозицииЗаменаФКР do
       ТекстФайлЗаписатьСтроку(nf,ФКР2009[t]+'.'+КОСГУ2009[t]+'|'+ФКР2010[t]+'.'+КОСГУ2010[t]+'|');
     od;
     ТекстФайлЗакрыть(nf);
     message('Сохранение прошло успешно!',mtInformation);
   except
     message('Ошибка при сохранении настроек',mtError);
   end;
end;

Proc ЗагрузтьНастройкиФКР(ФайлНастроек:s;ladd:l);
 var nf,t,z:i;
 var ss,s1,s2,s3,s4,s11,s12,s13:s;
 var ll:l;
 var ВЕД:s;
 ВЕД=fileТабл_Конв_Сч+'.';
 nf=pos(up(ВЕД),up(ФайлНастроек));
 ВЕД=Delete(ФайлНастроек,1,nf-1);

 nf=количествослов(ВЕД,'.');
 ВЕД=ВыделитьСлова(2,nf-2,ВЕД,'.');
 s1='Счета';
 s2='Стандартная таблица конвертации КБК счетов';
 s3='0|0';
 s4='1|1';
   nf=ТекстФайлОткрытьНаЧтение(ФайлНастроек);
   try
     t=0;ll=true;
     while  не ТекстФайлКонецФайла(nf) do
       t=t+1;
       if t<4:ss=up(trim(ТекстФайлПрочитатьСтроку(nf)));fi;
       if t=1:ll=ll and ss=s1;s11=ss;
        | t=2:ll=ll and pos(up(s2),ss)>0;s12=ss;
        | t=3:ll=ll and (ss=s3 or ss=s4);s13=ss;
        | t>3 or not ll:break;
       fi;
     end;
     if not ll:message('Не поддерживаемый формат!^M'+s11+'^M'+s12+'^M'+s13,mtError );
      | true:--загрузка
        if not ladd:
          ClearVariable(ФКР2009  );
          ClearVariable(КОСГУ2009);
          ClearVariable(ФКР2010  );
          ClearVariable(КОСГУ2010);
          ClearVariable(ПозицииЗаменаФКР);
        fi;
        ClearVAriable(ForSelect);
        while  не ТекстФайлКонецФайла(nf) do
          ss=trim(ТекстФайлПрочитатьСтроку(nf));
          addinarray(ForSelect,true,false,ss);
        od;
        z=lengthofarray(ForSelect);
        for t=1..z do
          ss=ForSelect[t];
          s1=ВыделитьСлово(1,ss,'|');
          if s13='0|0':s11=ВыделитьСлово(5,s1,'.');
           | s13='1|1':s11=ВыделитьСлово(8,s1,'.');
          fi;
          if s11='310' or s11='320' or s11='330' or s11='340':
             ПозицииЗаменаФКР=ПозицииЗаменаФКР+1;
             ФКР2009[ПозицииЗаменаФКР]  =ВыделитьСлова(1,4,s1,'.');
             КОСГУ2009[ПозицииЗаменаФКР]=s11;
             s2=ВыделитьСлово(2,ss,'|');
             ФКР2010[ПозицииЗаменаФКР]  =ВыделитьСлова(1,4,s2,'.');
             КОСГУ2010[ПозицииЗаменаФКР]=ВыделитьСлово(5,s2,'.');
             ВЕДОМСТВО[ПозицииЗаменаФКР]=ВЕД;
           | s11='???':
             s11='310';
             ПозицииЗаменаФКР=ПозицииЗаменаФКР+1;
             ФКР2009[ПозицииЗаменаФКР]  =ВыделитьСлова(1,4,s1,'.');
             КОСГУ2009[ПозицииЗаменаФКР]=s11;
             s2=ВыделитьСлово(2,ss,'|');
             ФКР2010[ПозицииЗаменаФКР]  =ВыделитьСлова(1,4,s2,'.');
             КОСГУ2010[ПозицииЗаменаФКР]=s11;
             ВЕДОМСТВО[ПозицииЗаменаФКР]=ВЕД;

             s11='320';
             ПозицииЗаменаФКР=ПозицииЗаменаФКР+1;
             ФКР2009[ПозицииЗаменаФКР]  =ВыделитьСлова(1,4,s1,'.');
             КОСГУ2009[ПозицииЗаменаФКР]=s11;
             s2=ВыделитьСлово(2,ss,'|');
             ФКР2010[ПозицииЗаменаФКР]  =ВыделитьСлова(1,4,s2,'.');
             КОСГУ2010[ПозицииЗаменаФКР]=s11;
             ВЕДОМСТВО[ПозицииЗаменаФКР]=ВЕД;

             s11='340';
             ПозицииЗаменаФКР=ПозицииЗаменаФКР+1;
             ФКР2009[ПозицииЗаменаФКР]  =ВыделитьСлова(1,4,s1,'.');
             КОСГУ2009[ПозицииЗаменаФКР]=s11;
             s2=ВыделитьСлово(2,ss,'|');
             ФКР2010[ПозицииЗаменаФКР]  =ВыделитьСлова(1,4,s2,'.');
             КОСГУ2010[ПозицииЗаменаФКР]=s11;
             ВЕДОМСТВО[ПозицииЗаменаФКР]=ВЕД;

          fi;
        od;
        ClearVAriable(ForSelect);
     fi;
     ТекстФайлЗакрыть(nf);
     message('Загрузка настроек прошла успешно!',mtInformation);
   except
     ТекстФайлЗакрыть(nf);
     message('Ошибка при загрузке настроек',mtError);
   end;
end;




Proc Ведомственные_ПриНажатии(Стр: Целое; Кол: Целое; Двойной: Логич);
var t:i;
var ТН:s;
var ladd:l;
--ClearVAriable(ForSelect);
--ForSelect[1]='188.МВД';
--ForSelect[2]='189';
ТН=PlanVar('STD_RPO')+'\КонвКБК09_10\';
ladd=false;
-- t=Alternate('Загрузка ведомственной настройки...',ForSelect);
   if ВыборФайла(ТН,'Загрузка ведомственной настройки...','Фаилы конвертации счетов(*.txt)|'+fileТабл_Конв_Сч+'*.txt') <> cmOk:message('Отказ от загрузки!',mtInformation);exit;fi;
 if ПозицииЗаменаФКР>1 or ФКР2009[1]<>'' or КОСГУ2009[1]<>'' or ФКР2010[1]<>'' or КОСГУ2010[1]<>'':
   t=Вопрос('Загрузка ведомственной настройки...','Загрузка из файла:^M'+ТН+'^M^MТекущие настройки будут потеряны!^MСохранить текущие настройки?','Отмена;Не сохранять;Сохранить как свои;Догрузить в текущие',mtConfirmation);
   if t<2:message('отказ от загрузки!',mtInformation);exit;fi;
   if t=3:СохранитьНастройкиЗаменаФКР('');fi;
   if t=4:ladd=true;fi;
 fi;
 ЗагрузтьНастройкиФКР(ТН,ladd);
end;


Proc Своинастройки_ПриНажатии(Стр: Целое; Кол: Целое; Двойной: Логич);
var t:i;
var ФайлНастроек:s;
var ladd:l;
ladd=false;
 ФайлНастроек=PlanVar('LocalData')+'\'+fileТабл_Конв_Сч+'.СВОИ_НАСТРОЙКИ.txt';
 t=Вопрос('Свои настройки','Выберите действие:','Отмена;Загрузить;Сохранить',mtConfirmation);
 if t=2:-- загрузка
    if не ЕстьФайл(ФайлНастроек):
         ClearVariable(ФКР2009  );
         ClearVariable(КОСГУ2009);
         ClearVariable(ФКР2010  );
         ClearVariable(КОСГУ2010);
         ClearVariable(ПозицииЗаменаФКР);
         exit;
    fi;
    if ПозицииЗаменаФКР>1 or ФКР2009[1]<>'' or КОСГУ2009[1]<>'' or ФКР2010[1]<>'' or КОСГУ2010[1]<>'':
      t=Вопрос('Загрузка своих настроек ...','Загрузка из файла:^M'+ФайлНастроек+'^M^MТекущие настройки будут потеряны!^MВы уверены?',';Отмена;Загрузить;Догрузить в текущие',mtConfirmation);
      if t<2:message('Отказ от действия!',mtInformation);exit;fi;
      if t=3:ladd=true;fi;
    fi;
    ЗагрузтьНастройкиФКР(ФайлНастроек,ladd);
  | t<2:message('Отказ от действия!',mtInformation);exit;
  | t=3:СохранитьНастройкиЗаменаФКР('');
 fi;
--if ВыборФайла(ТН,'Загрузка ведомственной настройки...',"Фаилы конвертации счетов(*.txt)|Табл_Конв_Сч(Конвертация_КБК_Счетов).*.txt") <> cmOk:message('отказ от загрузки!',mtInformation);exit;fi;
-- t=Вопрос('Загрузка ведомственной настройки...','Загрузка из файла:^M'+ТН+'^M^MТекущие настройки будут потеряны!^MСохранить текущие настройки?','не сохранять;как свои;отмена загрузки',mtConfirmation);
-- if t=3 or t<1:message('отказ от загрузки!',mtInformation);exit;fi;
-- if t=2:СохранитьНастройкиЗаменаФКР('');fi;
-- ЗагрузтьНастройкиФКР(ТН);


end;
Proc СохранитьНастройкиЗаменаФКР2011(ФайлНастроек:s);
 var nf,t:i;
 var ss,s1,s2,s3,s11,s12,s13:s;
 var ll:l;
   if ФайлНастроек='':ФайлНастроек=PlanVar('LocalData')+'\'+fileТабл_Конв_Сч+'.СВОИ_НАСТРОЙКИ.txt';fi;
 s1='Счета';
 s2='Стандартная таблица конвертации КБК счетов';
 s3='0|0';
   try
     nf=ТекстФайлСоздать(ФайлНастроек);
     ТекстФайлВКонец(nf);
     ТекстФайлЗаписатьСтроку(nf,s1);
     ТекстФайлЗаписатьСтроку(nf,s2);
     ТекстФайлЗаписатьСтроку(nf,s3);
     for t=1..ПозицииЗаменаФКР2011 do
       ТекстФайлЗаписатьСтроку(nf,ФКР2011до[t]+'.'+КОСГУ2011до[t]+'|'+ФКР2011[t]+'.'+КОСГУ2011[t]+'|');
     od;
     ТекстФайлЗакрыть(nf);
     message('Сохранение прошло успешно!',mtInformation);
   except
     message('Ошибка при сохранении настроек',mtError);
   end;
end;

Proc ЗагрузтьНастройкиФКР2011(ФайлНастроек:s;ladd:l);
 var nf,t,z:i;
 var ss,s1,s2,s3,s4,s11,s12,s13:s;
 var ll:l;
 var ВЕД:s;
 ВЕД=fileТабл_Конв_Сч+'.';
 nf=pos(up(ВЕД),up(ФайлНастроек));
 ВЕД=Delete(ФайлНастроек,1,nf-1);

 nf=количествослов(ВЕД,'.');
 ВЕД=ВыделитьСлова(2,nf-2,ВЕД,'.');
 s1='Счета';
 s2='Стандартная таблица конвертации КБК счетов';
 s3='0|0';
 s4='1|1';
   nf=ТекстФайлОткрытьНаЧтение(ФайлНастроек);
   try
     t=0;ll=true;
     while  не ТекстФайлКонецФайла(nf) do
       t=t+1;
       if t<4:ss=up(trim(ТекстФайлПрочитатьСтроку(nf)));fi;
       if t=1:ll=ll and ss=s1;s11=ss;
        | t=2:ll=ll and pos(up(s2),ss)>0;s12=ss;
        | t=3:ll=ll and (ss=s3 or ss=s4);s13=ss;
        | t>3 or not ll:break;
       fi;
     end;
     if not ll:message('Не поддерживаемый формат!^M'+s11+'^M'+s12+'^M'+s13,mtError );
      | true:--загрузка
        if not ladd:
          ClearVariable(ФКР2011до  );
          ClearVariable(КОСГУ2011до);
          ClearVariable(ФКР2011  );
          ClearVariable(КОСГУ2011);
          ClearVariable(ВЕДОМСТВО2011);
          ClearVariable(ПозицииЗаменаФКР2011);
        fi;
        ClearVAriable(ForSelect);
        while  не ТекстФайлКонецФайла(nf) do
          ss=trim(ТекстФайлПрочитатьСтроку(nf));
          addinarray(ForSelect,true,false,ss);
        od;
        z=lengthofarray(ForSelect);
        for t=1..z do
          ss=ForSelect[t];
--        while  не ТекстФайлКонецФайла(nf) do
--          ss=trim(ТекстФайлПрочитатьСтроку(nf));
          s1=ВыделитьСлово(1,ss,'|');
          if s13='0|0':s11=ВыделитьСлово(5,s1,'.');
           | s13='1|1':s11=ВыделитьСлово(8,s1,'.');
          fi;
          if s11='310' or s11='320' or s11='330' or s11='340':
             ПозицииЗаменаФКР2011=ПозицииЗаменаФКР2011+1;
             ФКР2011до[ПозицииЗаменаФКР2011]  =ВыделитьСлова(1,4,s1,'.');
             КОСГУ2011до[ПозицииЗаменаФКР2011]=s11;
             s2=ВыделитьСлово(2,ss,'|');
             ФКР2011[ПозицииЗаменаФКР2011]  =ВыделитьСлова(1,4,s2,'.');
             КОСГУ2011[ПозицииЗаменаФКР2011]=ВыделитьСлово(5,s2,'.');
             ВЕДОМСТВО2011[ПозицииЗаменаФКР2011]=ВЕД;
           | s11='???':
             s11='310';
             ПозицииЗаменаФКР2011=ПозицииЗаменаФКР2011+1;
             ФКР2011до[ПозицииЗаменаФКР2011]  =ВыделитьСлова(1,4,s1,'.');
             КОСГУ2011до[ПозицииЗаменаФКР2011]=s11;
             s2=ВыделитьСлово(2,ss,'|');
             ФКР2011[ПозицииЗаменаФКР2011]  =ВыделитьСлова(1,4,s2,'.');
             КОСГУ2011[ПозицииЗаменаФКР2011]=s11;
             ВЕДОМСТВО2011[ПозицииЗаменаФКР2011]=ВЕД;

             s11='320';
             ПозицииЗаменаФКР2011=ПозицииЗаменаФКР2011+1;
             ФКР2011до[ПозицииЗаменаФКР2011]  =ВыделитьСлова(1,4,s1,'.');
             КОСГУ2011до[ПозицииЗаменаФКР2011]=s11;
             s2=ВыделитьСлово(2,ss,'|');
             ФКР2011[ПозицииЗаменаФКР2011]  =ВыделитьСлова(1,4,s2,'.');
             КОСГУ2011[ПозицииЗаменаФКР2011]=s11;
             ВЕДОМСТВО2011[ПозицииЗаменаФКР2011]=ВЕД;

             s11='340';
             ПозицииЗаменаФКР2011=ПозицииЗаменаФКР2011+1;
             ФКР2011до[ПозицииЗаменаФКР2011]  =ВыделитьСлова(1,4,s1,'.');
             КОСГУ2011до[ПозицииЗаменаФКР2011]=s11;
             s2=ВыделитьСлово(2,ss,'|');
             ФКР2011[ПозицииЗаменаФКР2011]  =ВыделитьСлова(1,4,s2,'.');
             КОСГУ2011[ПозицииЗаменаФКР2011]=s11;
             ВЕДОМСТВО2011[ПозицииЗаменаФКР2011]=ВЕД;

          fi;
        end;
     fi;
     ТекстФайлЗакрыть(nf);
     message('Загрузка настроек прошла успешно!',mtInformation);
   except
     ТекстФайлЗакрыть(nf);
     message('Ошибка при загрузке настроек',mtError);
   end;
end;

Proc Ведомственные2011_ПриНажатии(Стр: Целое; Кол: Целое; Двойной: Логич);
var t:i;
var ТН:s;
var ladd:l;
--ClearVAriable(ForSelect);
--ForSelect[1]='188.МВД';
--ForSelect[2]='189';
ТН=PlanVar('STD_RPO')+'\КонвКБК10_11\';
ladd=false;
-- t=Alternate('Загрузка ведомственной настройки...',ForSelect);
   if ВыборФайла(ТН,'Загрузка ведомственной настройки...','Фаилы конвертации счетов(*.txt)|'+fileТабл_Конв_Сч+'*.txt') <> cmOk:message('Отказ от загрузки!',mtInformation);exit;fi;
 if ПозицииЗаменаФКР2011>1 or ФКР2011до[1]<>'' or КОСГУ2011до[1]<>'' or ФКР2011[1]<>'' or КОСГУ2011[1]<>'':
   t=Вопрос('Загрузка ведомственной настройки...','Загрузка из файла:^M'+ТН+'^M^MТекущие настройки будут потеряны!^MСохранить текущие настройки?','Отмена;Не сохранять;Сохранить как свои;Догрузить в текущие',mtConfirmation);
   if t<2:message('отказ от загрузки!',mtInformation);exit;fi;
   if t=3:СохранитьНастройкиЗаменаФКР2011('');fi;
   if t=4:ladd=true;fi;
 fi;
 ЗагрузтьНастройкиФКР2011(ТН,ladd);
end;


Proc Своинастройки2011_ПриНажатии(Стр: Целое; Кол: Целое; Двойной: Логич);
var t:i;
var ФайлНастроек:s;
var ladd:l;
ladd=false;
 ФайлНастроек=PlanVar('LocalData')+'\'+fileТабл_Конв_Сч+'.СВОИ_НАСТРОЙКИ.txt';
 t=Вопрос('Свои настройки','Выберите действие:','Отмена;Загрузить;Сохранить',mtConfirmation);
 if t=2:-- загрузка
    if не ЕстьФайл(ФайлНастроек):
         ClearVariable(ФКР2011до  );
         ClearVariable(КОСГУ2011до);
         ClearVariable(ФКР2011  );
         ClearVariable(КОСГУ2011);
         ClearVariable(ВЕДОМСТВО2011);
         ClearVariable(ПозицииЗаменаФКР2011);
         exit;
    fi;
    if ПозицииЗаменаФКР2011>1 or ФКР2011до[1]<>'' or КОСГУ2011до[1]<>'' or ФКР2011[1]<>'' or КОСГУ2011[1]<>'':
      t=Вопрос('Загрузка своих настроек ...','Загрузка из файла:^M'+ФайлНастроек+'^M^MТекущие настройки будут потеряны!^MВы уверены?',';Отмена;Загрузить;Догрузить в текущие',mtConfirmation);
      if t<2:message('Отказ от действия!',mtInformation);exit;fi;
      if t=3:ladd=true;fi;
    fi;
    ЗагрузтьНастройкиФКР2011(ФайлНастроек,ladd);
  | t<2:message('Отказ от действия!',mtInformation);exit;
  | t=3:СохранитьНастройкиЗаменаФКР2011('');
 fi;
--if ВыборФайла(ТН,'Загрузка ведомственной настройки...',"Фаилы конвертации счетов(*.txt)|Табл_Конв_Сч(Конвертация_КБК_Счетов).*.txt") <> cmOk:message('отказ от загрузки!',mtInformation);exit;fi;
-- t=Вопрос('Загрузка ведомственной настройки...','Загрузка из файла:^M'+ТН+'^M^MТекущие настройки будут потеряны!^MСохранить текущие настройки?','не сохранять;как свои;отмена загрузки',mtConfirmation);
-- if t=3 or t<1:message('отказ от загрузки!',mtInformation);exit;fi;
-- if t=2:СохранитьНастройкиЗаменаФКР('');fi;
-- ЗагрузтьНастройкиФКР(ТН);


end;

var prizncod[]:s;
Proc Загрузка_УМЦ_OnClick(Sender: String);
 var file_umz,ss,s0,s1,s2,s3,s4,s5:s;
 var i1,i2,p,z,nf,wa,rs:i;
 file_umz='mnaim_dbf_3.txt';
 wa=openworkarea('РПО_НФА','');
 Clearvariable(prizncod);
 rs=records(wa);
 for i1=1..rs do
   addinarray(prizncod,true,false,getfields(wa,i1,'ПРИЗНАК'));
 od;
 try
   BeginChanging(wa);
   nf=ТекстФайлОткрытьНаЧтение(file_umz);
   try
     ss=ТекстФайлПрочитатьСтроку(nf);
     while  не ТекстФайлКонецФайла(nf) do
       ss=trim(ТекстФайлПрочитатьСтроку(nf));
       p=КоличествоСлов(ss,'#');
       if p>5:
          s1=trim(ВыделитьСлово(1,ss,'#'));--признак с паразитными пробелами
          s2=trim(ВыделитьСлово(2,ss,'#'));--наименование
          if s2<>'':-- непустое НФА
             z=КоличествоСлов(s1,'.');
             s3='';
             for i1=1..z do
               s3=s3+'.'+trim(ВыделитьСлово(i1,s1,'.'));
             od;
             z=КоличествоСлов(s3,'.');
             s1=UP(ВыделитьСлова(1,z,s3,'.'));
             s3=trim(ВыделитьСлово(6,ss,'#'));--ед изм
             p=SearchInArray(prizncod,s1,true);
             if p<1:-- нет такого=добавим!
                p=insertrecord(wa);
                p=putfields(wa,p,'ПРИЗНАК',s1);
                p=putfields(wa,p,'ИМЯ',s2);
                p=putfields(wa,p,'ЕДИЗМ',s3);
                addinarray(prizncod,true,false,s1);
             fi;
          fi;
       fi;
     end;
     ТекстФайлЗакрыть(nf);
     message('Загрузка данных прошла успешно!',mtInformation);
   except
     ТекстФайлЗакрыть(nf);
     message('Ошибка при загрузке данных',mtError);
   end;
   endChanging(wa);
 except
   CancelChanging(wa);
   CloseWorkArea(wa);
 end;
 CloseWorkArea(wa);

end;
Проц Восстановитьстандартныенастройки_ПриНажатии(Стр: Целое; Кол: Целое; Двойной: Логич);
  if ВопрДаОтказ('Восстановить стандартные настройки?^MТекушие не сохранятся!',mtWarning)=кмдВерно:
     Восстановитьстандартныенастройки_НИ;
     message('Стандартные настроики списка недвижимого имущества^Mуспешно восстановлены.');
  fi;
end;
Функ СПИСОК_НИ_ПриВходе(Поле: Строка; i: Целое): Логич;
var f,ss:s;
var rec:record;

  f=GetFilterНИ(i);
  if f<>'':
      ss=БРО_НФА_лок+'ВыборНФА.bro';
      if ЕстьФайл(ss):rec=OpenCardFile(ss,f);
       | true:        rec=OpenCardFile(БРО_НФА+'ВыборНФА.bro',f);
      fi;

   | true:
--     ЗагрузитьСписокНИ(i);
--     ПоказатьСписокНИ;
  fi;
  Возврат false;
end;




Функ ПриВходеПризнаки2011(Поле: Строка; Итер: Целое): Логич;
var ss:s;
  ss=ВыборПризнака('*');
  if ss<>'':
     if Поле='Признаки2011до':Признаки2011до[Итер]=ss;
      | Поле='Признаки2011'  :Признаки2011  [Итер]=ss;
     fi;
  fi;
  ^false;
end;

Функ ПриВходеСчета (Поле: Строка; Итер: Целое): Логич;
var ss:s;
  ss=ВыборСчета('*');
  if ss<>'':
     if Поле='Счетадо'     :Счетадо   [Итер]=ss;
      | Поле='Счетапосле'  :Счетапосле[Итер]=ss;
     fi;
  fi;
  ^false;
end;

Функ Счетадо_ПриОбзоре(Сек: Строка; Стр: Целое; Столб: Целое; Тек: Строка): Строка;
var ss:s;
  ss=ВыборСчета('*');
--  if ss<>'':
--     if Поле='Счетадо'     :Счетадо   [Итер]=ss;
--      | Поле='Счетапосле'  :Счетапосле[Итер]=ss;
--     fi;
--  fi;

  ^ss  ;
end;

Конец
