БЛАНКСШАБЛОНОМ [07.11.2005] "Карточка федерального имущества", РЕДАКТОР РПО_ИНВКАРТ_ОС;
-- Редакция ЗАО "Агентство 'Русспромоценка'"
2-- Переменные и массивы шаблона
BTNNAME_MENU:s='Карточка ФИ';
btnOK              :Object;
btnClose           :Object;

--var Карта:s;
var КартаНомер:s=Карта;
var Раздел    :i=Int(ВыделитьСлово(1,КартаНомер,'.'));
var Раздел_   :s='Раздел '+str(Раздел)+'.';
var Подраздел :i=Int(ВыделитьСлово(2,КартаНомер,'.'));
var Подраздел_:s='Подраздел '+Карта+'.';
var КартаНомер_:s='Карта № '+КартаНомер+'.';
var ВидыКарт[]:s;
var ИменаКарт[]:s;
var УПР_УФИ:i;
var ИМЯ          []:s;
var Значение     []:s;
var Переменная   []:s;
var ТипПеременной[]:s;
var Обязательно  []:l;
var Разрешения   []:s;
var Авторасчет   []:s;
var АВТО         []:s=if(Авторасчет[$]='','','Авторасчет');
var nn[]:i=$;
Proc ЗаполнитьВидыКарт;
 var t:i;
 t=0;ClearVariable(ВидыКарт);ClearVariable(ИменаКарт);
 if соотв(НФА,'НФА.101.01.*') or соотв(НФА,'НФА.101.02.*'):
   t=t+1;ВидыКарт[t]='1.-- Раздел 1. Сведения о недвижимом имуществе';
--   t=t+1;ВидыКарт[t]='1.2-- Подраздел 1.2. Сведения о зданиях, сооружениях, объектах незавершенного строительства';
   t=t+1;ВидыКарт[t]='1.3-- Подраздел 1.3. Сведения о жилых, нежилых помещениях';
 fi;
 if соотв(НФА,'НФА.101.03.*'):
   t=t+1;ВидыКарт[t]='1.-- Раздел 1. Сведения о недвижимом имуществе';
   t=t+1;ВидыКарт[t]='1.2-- Подраздел 1.2. Сведения о зданиях, сооружениях, объектах незавершенного строительства';
--   t=t+1;ВидыКарт[t]='1.3-- Подраздел 1.3. Сведения о жилых, нежилых помещениях';
 fi;
 if (соотв(НФА,'НФА.101.04.*') or соотв(НФА,'НФА.101.05.*') or соотв(НФА,'НФА.101.06.*') or соотв(НФА,'НФА.101.08.*')) and СТОИМ_ОТЧ>200000:
   t=t+1;ВидыКарт[t]='2.-- Раздел 2. Сведения о движимом имуществе и иных правах';
   t=t+1;ВидыКарт[t]='2.3--  Подраздел 2.3. Сведения о движимом имуществе, первоначальная стоимость которого превышает 200 тыс.рублей, и особо ценном имуществе (независимо от его стоимости)';
         ИменаКарт[t]='ДВИЖИМОЕ ИМУЩЕСТВО, ПЕРВОНАЧАЛЬНАЯ СТОИМОСТЬ КОТОРОГО ПРЕВЫШАЕТ 200 ТЫС.РУБЛЕЙ, И ОСОБО ЦЕННОЕ ИМУЩЕСТВО (НЕЗАВИСИМО ОТ ЕГО СТОИМОСТИ)';
 fi;
end;
Proc ЗаполнитьВидыКартПоля;
var ss:s;
var t:i;
if LengthOfArray(ВидыКарт)=2:--проверка на уникальность вида карты для данного НФА и авто заполнение
  ss=ВыделитьСлово(1,ВидыКарт[2],'--');
  if ss<>Карта:Карта=ss;fi;
fi;

t=0;
ClearVariable(ИМЯ);ClearVariable(Значение);ClearVariable(Переменная);ClearVariable(ТипПеременной);
ClearVariable(УПР_УФИ);ClearVariable(Обязательно);ClearVariable(Разрешения);ClearVariable(Авторасчет);
if Карта='2.3' and СТОИМ_ОТЧ>200000:
  t=t+1;
  ИМЯ          [t]='Реестровый номер федерального имущества (РНФИ)';
  Переменная   [t]='РНФИ';
  ТипПеременной[t]='S';
  Обязательно  [t]=false;
  Разрешения   [t]='ч|з';-- чтение и запись
  Авторасчет   [t]='';
  t=t+1;
  ИМЯ          [t]='Государственный регистрационный знак';
  Переменная   [t]='ГРЗ';
  ТипПеременной[t]='S';
  Обязательно  [t]=false;
  Разрешения   [t]='ч|з';-- чтение и запись
  Авторасчет   [t]='';
  t=t+1;
  ИМЯ          [t]='Инвентарный номер';
  Переменная   [t]='ИНВ_ВЕД';
  ТипПеременной[t]='S';
  Обязательно  [t]=true;
  Разрешения   [t]='ч';-- чтение
  Авторасчет   [t]='';
  t=t+1;
  ИМЯ          [t]='Наименование';
  Переменная   [t]='';--'ОБЪЕКТ1+ОБЪЕКТ2+ОБЪЕКТ3';
  ТипПеременной[t]='S';
  Обязательно  [t]=true;
  Разрешения   [t]='чф=ЧФ_НАИМЕНОВАНИЕ_2_3';-- чтение по функции ЧФ_НАИМЕНОВАНИЕ_2_3
  Авторасчет   [t]='АВТО_НАИМЕНОВАНИЕ_2_3';
  t=t+1;
  ИМЯ          [t]='Вид';
  Переменная   [t]='ВИД';
  ТипПеременной[t]='S';
  Обязательно  [t]=true;
  Разрешения   [t]='ч|з';-- чтение и запись
  Авторасчет   [t]=''; -- авторасчет по функции АВТО_АВТО_ВИД_2_3
--  Авторасчет   [t]='АВТО_АВТО_ВИД_2_3'; -- авторасчет по функции АВТО_АВТО_ВИД_2_3
  t=t+1;
  ИМЯ          [t]='Марка, модель';
  Переменная   [t]='ЗАВОД_НОМ';
  ТипПеременной[t]='S';
  Обязательно  [t]=true;
  Разрешения   [t]='ч|з';-- чтение и запись
  Авторасчет   [t]='';
  t=t+1;
  ИМЯ          [t]='Год выпуска';
  Переменная   [t]='ДАТА_ИЗГ';
  ТипПеременной[t]='D';
  Обязательно  [t]=true;
  Разрешения   [t]='ч|з';-- чтение и запись
  Авторасчет   [t]='';-- авторасчет по функции АВТО_ДАТА_ИЗГ_2_3
--  Авторасчет   [t]='АВТО_ДАТА_ИЗГ_2_3';-- авторасчет по функции АВТО_ДАТА_ИЗГ_2_3
  t=t+1;
  ИМЯ          [t]='Назначение';
  Переменная   [t]='';
--  Переменная   [t]='НФА_НАЗНАЧЕНИЕ';
  ТипПеременной[t]='C';
  Обязательно  [t]=true;
  Разрешения   [t]='чф=ЧФ_НФА_НАЗНАЧЕНИЕ_2_3';-- чтение
--  Разрешения   [t]='ч|з';-- чтение и запись
--  Авторасчет   [t]='АВТО_НФА_НАЗНАЧЕНИЕ_2_3';-- авторасчет по функции АВТО_НФА_НАЗНАЧЕНИЕ_2_3
  Авторасчет   [t]='';
  t=t+1;
  ИМЯ          [t]='Правообладатель';
  Переменная   [t]=НФА.УФИ.ВЫГРУЗКА_КАРТ.Правообладатель;
  ТипПеременной[t]='C';
  Обязательно  [t]=true;
  Разрешения   [t]='ч';
  Авторасчет   [t]='';
--  Авторасчет   [t]='АВТО_УЧРЕЖДЕНИЕ_2_3';-- авторасчет по функции АВТО_УЧРЕЖДЕНИЕ_2_3
  t=t+1;
  ИМЯ          [t]='Карта №';
  Переменная   [t]='2.3.';
  ТипПеременной[t]='C'; -- константа
  Обязательно  [t]=false;
  Разрешения   [t]='ч';
  Авторасчет   [t]='';
  t=t+1;
  ИМЯ          [t]='ОГРН';
  Переменная   [t]=НФА.УФИ.ВЫГРУЗКА_КАРТ.ОГРН;
  ТипПеременной[t]='C'; -- константа
  Обязательно  [t]=false;
  Разрешения   [t]='ч';
  Авторасчет   [t]='';
--  t=t+1;
--  ИМЯ          [t]='Документы - основания возникновения права собственности Российской Федерации';
--  Переменная   [t]='ДОК_ОГРАНИЧЕНИЯ';
----  Переменная   [t]='Постановление от 27.12.1991г. №3021-1 Верховного Совета Российской Федерации';
--  ТипПеременной[t]='S';
----  ТипПеременной[t]='C'; -- константа
--  Обязательно  [t]=false;
--  Разрешения   [t]='ч|з';-- чтение и запись
----  Разрешения   [t]='ч';
  Авторасчет   [t]='';
  t=t+1;
  ИМЯ          [t]='Наименование иного вещного права';
  Переменная   [t]='Оперативное управление';
  ТипПеременной[t]='C'; -- константа
  Обязательно  [t]=false;
  Разрешения   [t]='ч';
  Авторасчет   [t]='';
--  t=t+1;
--  ИМЯ          [t]='Документы основания возникновения иного вещного права';
--  Переменная   [t]='ДОК_ОГРАНИЧЕНИЯ';
--  ТипПеременной[t]='S';
----  ТипПеременной[t]='C'; -- константа
--  Обязательно  [t]=false;
--  Разрешения   [t]='ч';
--  Авторасчет   [t]='';
  t=t+1;
  ИМЯ          [t]='Категория историко-культурного значения';
  Переменная   [t]='';
  ТипПеременной[t]='C'; -- константа
  Обязательно  [t]=false;
  Разрешения   [t]='ч';
  Авторасчет   [t]='';
  t=t+1;
  ИМЯ          [t]='Регистрационный номер объекта культурного наследия, с которым связан объект движимого имущества';
  Переменная   [t]='';
  ТипПеременной[t]='C'; -- константа
  Обязательно  [t]=false;
  Разрешения   [t]='ч';
  Авторасчет   [t]='';
  t=t+1;
  ИМЯ          [t]='Стоимость (тыс.рублей):';
  Переменная   [t]='';
  ТипПеременной[t]='C'; -- константа
  Обязательно  [t]=false;
  Разрешения   [t]='ч';
  Авторасчет   [t]='';
  t=t+1;
  ИМЯ          [t]=' первоначальная';
  Переменная   [t]='СТОИМ_ОТЧ';
  ТипПеременной[t]='N'; -- константа
  Обязательно  [t]=false;
  Разрешения   [t]='чф=ЧФ_СТОИМ_ОТЧ_2_3';
--  Разрешения   [t]='чф=ЧФ_СТОИМ_ОТЧ_2_3|зф=ЗФ_СТОИМ_ОТЧ_2_3';
  Авторасчет   [t]='';
  t=t+1;
  ИМЯ          [t]=' остаточная';
  Переменная   [t]='';--СТОИМ_ОТЧ-СНАЧ_ЭКСП
  ТипПеременной[t]='N'; -- константа
  Обязательно  [t]=false;
  Разрешения   [t]='чф=ЧФ_ОСТАТОЧНАЯ_2_3';-- чтение по функции ЧФ_ОСТАТОЧНАЯ_2_3
  Авторасчет   [t]='';
  t=t+1;
  ИМЯ          [t]=' иная';
  Переменная   [t]='СТОИМ_ИНАЯ';--СТОИМ_ОТЧ-СНАЧ_ЭКСП
  ТипПеременной[t]='N'; -- константа
  Обязательно  [t]=false;
  Разрешения   [t]='чф=ЧФ_СТОИМ_ИНАЯ_2_3|зф=ЗФ_СТОИМ_ИНАЯ_2_3';
  Авторасчет   [t]='';
  t=t+1;
  ИМЯ          [t]='Документы - основания:';
  Переменная   [t]='';
  ТипПеременной[t]='C'; -- константа
  Обязательно  [t]=false;
  Разрешения   [t]='ч';
  Авторасчет   [t]='';
  t=t+1;
  ИМЯ          [t]=' изъятия из оборота';
  Переменная   [t]='ДОК_ИЗЪЯТИЯ';
  ТипПеременной[t]='s'; -- константа
  Обязательно  [t]=false;
  Разрешения   [t]='ч|з';
  Авторасчет   [t]='';
  t=t+1;
  ИМЯ          [t]=' ограничения оборота';
  Переменная   [t]='ДОК_ОГРАНИЧЕНИЯ';
  ТипПеременной[t]='s';
  Обязательно  [t]=false;
  Разрешения   [t]='ч|з';
  Авторасчет   [t]='';

  УПР_УФИ=t;










 | Карта='1.2':
fi;
end;
func ЧитатьЗначение(t:i):s;
 var v,ss:s;
 var dd:d;
 var p:i;
-- Переменная
-- ТипПеременной
-- Обязательно
-- Разрешения
-- Авторасчет
 p=pos('ЧФ=',up(Разрешения[t]));
 if p>0:ss=trim(SubStr(Разрешения[t],p+3,255));
    ss=ВыделитьСлово(1,ss,'|');-- нашли имя функции на чтение!
    if ФункцияСуществует(ss):^ВыполнитьФункциюС(ss);fi;
--    trace(ss);
  | СловоВСтроке('ч',Разрешения[t],'|'):
    if ТипПеременной[t]='C':v=Переменная[t];
     | true:v=GetVariableS(Переменная[t]);
    fi;
    ^v;
 fi;
 ^'';
end;
proc ЗаполнитьЗначение(t:i);
    Значение[t]=ЧитатьЗначение(t);
end;
func ЗаписатьЗначение(t:i;v:s):l;
 var ss:s;
 var dd:d;
 var p:i;
-- Переменная
-- ТипПеременной
-- Обязательно
-- Разрешения
-- Авторасчет
 p=pos('ЗФ=',up(Разрешения[t]));
 if p>0:ss=trim(SubStr(Разрешения[t],p+3,255));
    ss=ВыделитьСлово(1,ss,'|');-- нашли имя функции на запись!
    if ФункцияСуществует(ss):
       if ТипПеременной[t]='S':PutVariableS(Переменная[t],ВыполнитьФункциюС(ss,v));^true;
        | ТипПеременной[t]='D':PutVariableD(Переменная[t],ВыполнитьФункциюД(ss,v));^true;
        | ТипПеременной[t]='N':PutVariableN(Переменная[t],ВыполнитьФункциюЧ(ss,v));^true;
       fi;
    fi;
--    trace(ss);
  | СловоВСтроке('з',Разрешения[t],'|') and Переменная[t]<>'':
    if ТипПеременной[t]='S':PutVariableS(Переменная[t],v);^true;
     | ТипПеременной[t]='D':PutVariableD(Переменная[t],StringToDate(v));^true;
     | ТипПеременной[t]='N':PutVariableN(Переменная[t],Round(v,5));^true;
    fi;
 fi;
 ^false;
end;

proc ЗаполнитьЗначения;
  var k,j:i;
  k=LengthOfArray(ИМЯ);
  for j=1..k do
    ЗаполнитьЗначение(j);
  od;
end;
func ВзятьИмяРаздела(ss:s):s;
var j,k:i;
ss=ss+'.--';
k=LengthOfArray(ВидыКарт);
for j=1..k do
 if pos(ss,ВидыКарт[j])=1:
    ss=ВыделитьСлово(2,ВидыКарт[j],'--');
    ss=trim(ВыделитьСлова(2,10,ss,'.'));
    ^ss;
 fi;
od;
 ^'';
end;

func ВзятьИмяПодраздела(ss:s):s;
var j,k:i;
ss=ss+'--';
k=LengthOfArray(ВидыКарт);
for j=1..k do
 if pos(ss,ВидыКарт[j])=1:
    ss=ВыделитьСлово(2,ВидыКарт[j],'--');
    ss=trim(ВыделитьСлова(3,10,ss,'.'));
    ^ss;
 fi;
od;
 ^'';
end;
func ВзятьИмяКарты(ss:s):s;
var j,k:i;
ss=ss+'--';
k=LengthOfArray(ВидыКарт);
for j=1..k do
 if pos(ss,ВидыКарт[j])=1:
    ^ИменаКарт[j];
 fi;
od;
 ^'';
end;

var ИмяРаздела   :s=ВзятьИмяРаздела(str(Раздел));
var ИмяПодраздела:s=ВзятьИмяПодраздела(КартаНомер);
var ИмяКарты     :s=ВзятьИмяКарты(КартаНомер);

func ВыборКартаНомер:s;
 var ii:i;
 ii=AlternateTree('',ВидыКарт,-1,2,0,'.','','',6,false);
 if ii>0:^ВыделитьСлово(1,ВидыКарт[ii],'--');
 fi;
 ^'';
end;

var First:l;
var NewREC         :L=(CurrentState=crdusInserted);
var RunBLN         :L;

2-- Общие процедуры и функции
Proc Очистить;
 ClearVariable(ВидыКарт);
 ClearVariable(ИМЯ);
 ClearVariable(Значение);
 ClearVariable(Переменная);
 ClearVariable(ТипПеременной);

-- ClearVariable(Buf);  ClearVariable(Buf_N); ClearVariable(Buf_D); ClearVariable(BufDD);
-- ClearVariable(BufKey); ClearVariable(BufFlg);
-- ClearVariable(СЧ_ОС); ClearVariable(СЧ_АМ);
-- ClearVariable(УслИМЯ); ClearVariable(УслКРЕ);
-- ClearVariable(УслДЕБ); ClearVariable(УслАНА);
-- ClearVariable(СУММА_ГОД); ClearVariable(НОРМА_МЕС); ClearVariable(НОРМА_ГОД);
-- ClearVariable(МХЭ_ИМЯ); ClearVariable(МОЛ_ИМЯ);
end;

func ЧФ_НАИМЕНОВАНИЕ_2_3:s;
 ^ОБЪЕКТ1+ОБЪЕКТ2+ОБЪЕКТ3;
end;
func ЧФ_НФА_НАЗНАЧЕНИЕ_2_3:s;
 ^Name_A(ВыделитьСлова(1,3,НФА,'.')+'.');
end;


--func ЧФ_УЧРЕЖДЕНИЕ_2_3:s;
-- trace(УЧРЕЖДЕНИЕ);
-- ^Name_A(УЧРЕЖДЕНИЕ);

--end;
func ЧФ_ОСТАТОЧНАЯ_2_3:s;
 ^str((СТОИМ_ОТЧ-СНАЧ_ЭКСП)/1000,5);
end;
func ЧФ_СТОИМ_ОТЧ_2_3:s;
 ^str(СТОИМ_ОТЧ/1000,5);
end;
func ЗФ_СТОИМ_ОТЧ_2_3(v:s):n;
 ^round(v,5)*1000;
end;
func ЧФ_СТОИМ_ИНАЯ_2_3:s;
 ^str(СТОИМ_ИНАЯ/1000,5);
end;
func ЗФ_СТОИМ_ИНАЯ_2_3(v:s):n;
 ^round(v,5)*1000;
end;
proc АВТО_НАИМЕНОВАНИЕ_2_3;
 ОБЪЕКТ1=Name_A(НФА);
end;


2-- События клеток
Func Field_onEnter(Field:String; Iter:Integer) :Logical; -- на входе в клетку
var tmp :String;
var nn :Integer;
 if Field="Учреждение_" or Field="ОКПОучреж":  ^False;
 fi;
 ^True;
end; 

Proc Field_onExit(Field:String; Iter:Integer); -- на выходе из клетки
var qq :Integer;
var Обновить :Logical;
 if Field="Учреждение_" or Field="ОКПОучреж":
 fi;
end;


Func Field_OnValidateI(Field:String; Iter:Integer; Value:Integer) :Logical;
 if Value<0 : Message('Нельзя вводить отрицательное число.', mtError); ^False; fi;
 ^True;
end;

Func Field_OnValidateS(Field:String; Iter:Integer; Value:String) :Logical;
var OK :Logical;
 if Field="ИНВ_ВЕД":
 fi;
 ^True;
end;

Func Field_OnValidateN(Field:String; Iter:Integer; Value:Numeric) :Logical;
 if Value<0 : Message('Нельзя вводить отрицательное число.', mtError); ^False; fi;
 ^True;
end;

2-- События объектов

2-- События шаблона
Proc Template_OnOpen(Create:Logical); -- при открытии шаблона
var tmp :String;
 EnableCommands(False, cmDelRec, cmInsertRec, cmDublRec);
 РАБ.НАСТР_ПЕЧАТЬ.Cfg(PlanVar("НФА")+"\Настройки\","RPO_0504031_001.cfg");
-- tmp=UserName(AliasName(SelfCRD));
 --Пользов=if(tmp<>"", "Пользователь - "+tmp, "Пользователь локальной версии");
 First=True;
end;

Proc Template_AfterOpen(Create:Logical); -- при открытии шаблона
 if First: 
   if NewREC:
     exit;
   fi;
   RunBLN=False;
 fi;
 First=False;
end;

Proc Template_OnClose(Destroy:Logical); -- при закрытии шаблона
 Очистить;
end;
Proc Template_onRead; -- при считывании шаблона
 Очистить;
 ЗаполнитьВидыКарт;
 ЗаполнитьВидыКартПоля;
 ЗаполнитьЗначения;

 if First=False:
   if NewREC:
     exit;
   fi;
   RunBLN=False;
 fi;
end;

Proc Template_onCancel; -- при отмене редактирования шаблона
 Очистить;
 if CurrentState=CrdusUndefined: 
   Message("Была произведена отмена редактирования!^MВ картотеке нет записей, бланк будет закрыт.", mtInformation);
   Close;
 fi;
end;

Func Template_OnValidate: Logical; -- при проверке шаблона
 ^True;
end;




Функ КартаНомер_ПриВходе(Поле: Строка; Итер: Целое): Логич;
  Карта=ВыборКартаНомер;
  message(ВзятьИмяПодраздела(КартаНомер));
--  ClearVariable(ИмяРаздела);
--  ClearVariable(ИмяПодраздела);
  ^false;
end;


Функ Значение_ПриВходе(s: Строка; i: Целое): Логич;

  ^true  ;
end;


Функ Значение_ПриПроверке(s: Строка; i: Целое; v: Строка): Логич;
   ^ЗаписатьЗначение(i,v);
end;


Проц Значение_ПриВыходе(s: Строка; t: Целое);
 var ll:l;
 var ss:s;
 if СловоВСтроке('з',Разрешения[t],'|') and Переменная[t]<>'':
    ss=ЧитатьЗначение(t);
    if Значение[t]<>ss:
       ll=ЗаписатьЗначение(t,Значение[t]);
    fi;
  | pos('ЗФ=',up(Разрешения[t]))>0:
    ss=ЧитатьЗначение(t);
    if Значение[t]<>ss:
       ll=ЗаписатьЗначение(t,Значение[t]);
       Значение[t]=ЧитатьЗначение(t);
    fi;
 fi;

end;


Функ АВТО_ПриВходе(s: Строка; i: Целое): Логич;
  if Авторасчет[i]='':
    message('Авторасчет для данной строки не предусмотрен!');^false ;
   | true:
     if ПроцедураСуществует(Авторасчет[i]):
        ВыполнитьПроцедуру(Авторасчет[i]);
        ЗаполнитьЗначение(i);
     fi;
  fi;
  ^false ;
end;


КОНЕЦ -- конец бланка
