БланкСШаблоном "Банковские счета", РЕДАКТОР БАНК_СЧЕТА;

var FlagEdit:L;

var ЗаписьКонтр:String; -- Ссылка на контрагента для передачи из бланка Контрагент
--var НашСчет    :Logical;-- Наш контрагент для передачи из бланка онтрагент
var Контр      :String=КонтрАгент.КорИмя; -- Вывод имени контрагента на шаблон
var ВалютаН    :String=if(Валюта='','РУБ',Валюта);
var БанкИмя_   :String;
var Run        :L;

var Загл1:S=if(РПО_ТипСчета=2:"ЛИЦЕВОЙ СЧЕТ","БАНКОВСКИЙ СЧЕТ");
var Загл2:S=if(Наш and not РПО_Не_Призн," (ЛС."+if(РПО_Признак="",if(РПО_ЛСчет="",РСчет,РПО_ЛСчет),РПО_Признак)+")","");

var РПО_Код_:s=РПО_Код;
var РПО_ЛСчет_:s=РПО_ЛСчет;
var РСчет_:s=РСчет;

var РПО_Секрет_:S=if(РПО_Секрет=1:"ДСП"|РПО_Секрет=2:"Секретно"|РПО_Секрет=3:"Совершенно секретно"|РПО_Секрет=4:"Особой важности"|True:"Не секретно");

var Рпо_Страна_:S = if(РПО_Страна="", "",
                      if(РАБ.ДОГОВОР.ИмяСтраныПоАльфа2(РПО_Страна, False)="",РПО_Страна,
                        РПО_Страна + " (" + РАБ.ДОГОВОР.ИмяСтраныПоАльфа2(РПО_Страна, False) + ")")
                        );

var текстСч:S=if(РПО_ТипСчета=1:"Банка"|РПО_ТипСчета=2:"ОФК"|true:"ОФК (Банка)");
var текстИНН:S="ИНН "+текстСч;
var текстКПП:S="КПП "+текстСч;
var текстОКАТО:S="ОКАТО "+текстСч;

var isОФК:L=not (РПО_ОФК_Имя="" and РПО_ОФК_Имя2="" and РПО_ОФК_Код="" and РПО_ЛСчет="" and РПО_КодБюдж="" and РПО_НаимБюдж="" and РПО_НаимБюдж2="" and РПО_ФО_Наим1="" and РПО_ФО_Наим1="");

cbНе_Призн   : Object;
rbТипСчета1  : Object;
rbТипСчета2  : Object;
cbРБС        : Object;
cbУмолчание  : Object;
cbУмолчаниеРР: Object;
rbИНН1       : Object;
rbИНН2       : Object;

var Buf[]:S;

var SelfCrd:S="БАНК_СЧЕТА";

var Run:L;
var tplField:S;
var tplFrame:I;

sБанк : Section;
sОФК  : Section;
sИНН  : Section;
extОФК: Section;
--
--Процедуры и функции ------------- 
Proc Оформление;
 sБанк.Row(6,RowVisible,Наш);
 sБанк.Row(7,RowVisible,Наш);
 sОФК.Visible=РПО_ТипСчета=2 or (РПО_ТипСчета=0 and isОФК);
 sИНН.Visible=РПО_ИНН_Банка;
 extОФК.Visible=not РПО_ФО_ЛСчет="";
 cbРБС.Visible=РПО_ТипСчета=2  or (РПО_ТипСчета=0 and isОФК);
 cbУмолчаниеРР.Visible=РПО_ТипСчета=2  or (РПО_ТипСчета=0 and isОФК);
 rbИНН2.Caption=текстСч;
 cbНе_Призн.Visible=Наш;
end;
                          
Func КлючРС(Сч:S; БИК:S):L;
var tmp:I;
 tmp=7*Int(SubStr(Сч,1,1))+
     1*Int(SubStr(Сч,2,1))+
     3*Int(SubStr(Сч,3,1))+
     7*Int(SubStr(Сч,4,1))+
     1*Int(SubStr(Сч,5,1))+
     3*Int(SubStr(Сч,6,1))+
     7*Int(SubStr(Сч,7,1))+
     1*Int(SubStr(Сч,8,1))+
     3*Int(SubStr(Сч,9,1))+
     7*Int(SubStr(Сч,10,1))+
     1*Int(SubStr(Сч,11,1))+
     3*Int(SubStr(Сч,12,1))+
     7*Int(SubStr(Сч,13,1))+
     1*Int(SubStr(Сч,14,1))+
     3*Int(SubStr(Сч,15,1))+
     7*Int(SubStr(Сч,16,1))+
     1*Int(SubStr(Сч,17,1))+
     3*Int(SubStr(Сч,18,1))+
     7*Int(SubStr(Сч,19,1))+
     1*Int(SubStr(Сч,20,1))+
     7*Int(SubStr(БИК,7,1))+
     1*Int(SubStr(БИК,8,1))+
     3*Int(SubStr(БИК,9,1));
  tmp=Int(tmp-10*Trunc(tmp/10));
^tmp=0;
end;

Func КлючКС(Сч:S;БИК:S):L;
var tmp:I;
 tmp=7*Int(SubStr(Сч,1,1))+
     1*Int(SubStr(Сч,2,1))+
     3*Int(SubStr(Сч,3,1))+
     7*Int(SubStr(Сч,4,1))+
     1*Int(SubStr(Сч,5,1))+
     3*Int(SubStr(Сч,6,1))+
     7*Int(SubStr(Сч,7,1))+
     1*Int(SubStr(Сч,8,1))+
     3*Int(SubStr(Сч,9,1))+
     7*Int(SubStr(Сч,10,1))+
     1*Int(SubStr(Сч,11,1))+
     3*Int(SubStr(Сч,12,1))+
     7*Int(SubStr(Сч,13,1))+
     1*Int(SubStr(Сч,14,1))+
     3*Int(SubStr(Сч,15,1))+
     7*Int(SubStr(Сч,16,1))+
     1*Int(SubStr(Сч,17,1))+
     3*Int(SubStr(Сч,18,1))+
     7*Int(SubStr(Сч,19,1))+
     1*Int(SubStr(Сч,20,1))+
     1*Int(SubStr(БИК,5,1))+
     3*Int(SubStr(БИК,6,1));
 tmp=Int(tmp-10*Trunc(tmp/10));
^tmp=0;
end;

Proc ИзменитьФлагУмолчание;
var OWA,n,nr,z:i;
var РПО_РБС_:S;
 if РПО_РБС: РПО_РБС_="True"; else РПО_РБС_="False"; fi;
 if Умолчание=True:
    OWA=OpenWorkArea("Банк_Счета","","Контрагент="+RecordToString(КОНТРАГЕНТ)+" and Умолчание=True and UKey<>"+RecordToString(Current)+" and РПО_РБС="+РПО_РБС_);
    Try
     nr=Records(OWA);
     if nr=0: Exit; fi;
     BeginChanging(OWA);
     Try
      for n=1..nr do
       z=PutFieldL(OWA,n,"Умолчание",False);
      od;
      EndChanging(OWA);
     Except
      CancelChanging(OWA);
      Raise;
     end;
    Finally
     CloseWorkArea(OWA);
    end;
 fi;
end;

Proc ИзменитьФлагУмолчаниеРР;
var OWA,n,nr,z:i;
var РПО_РБС_:S;
 if РПО_РБС: РПО_РБС_="True"; else РПО_РБС_="False"; fi;
 if РПО_Умолчание_РР=True:
    OWA=OpenWorkArea("Банк_Счета","","Контрагент="+RecordToString(КОНТРАГЕНТ)+" and РПО_Умолчание_РР=True and UKey<>"+RecordToString(Current)+" and РПО_РБС="+РПО_РБС_);
    Try
     nr=Records(OWA);
     if nr=0: Exit; fi;
     BeginChanging(OWA);
     Try
      for n=1..nr do
       z=PutFieldL(OWA,n,"РПО_Умолчание_РР",False);
      od;
      EndChanging(OWA);
     Except
      CancelChanging(OWA);
      Raise;
     end;
    Finally
     CloseWorkArea(OWA);
    end;
 fi;
end;

Func ПроверитьУникальностьПризн:L;
var OWA:I;
var F,Msg,tmp:S;
 if Контрагент.Наше and not РПО_Не_Призн:
    if not РПО_ЛСчет="" and  РПО_Признак="":
       F="Наш and not UKey="+RecordToString(Current)+" and РПО_ЛСчет='"+РПО_ЛСчет+"' and not РПО_Не_Призн and РПО_Признак=''";
       Msg="В картотеке банковских счетов уже находится карточка с лицевым счетом "+РПО_ЛСчет+"^MУстановите флаг 'Не формировать аналитический признак банковского счета' если необходимо сформировать данный банковский счет";
       Template.Object="cbНе_Призн";
       tmp="ЛС."+РАБ.ДОГОВОР.ConvertStr(РПО_ЛСчет);
    fi;
    if РПО_ЛСчет="" and not РСчет="" and РПО_Признак="":
       F="Наш and not UKey="+RecordToString(Current)+" and РПО_ЛСчет='' and РСЧЕТ='"+РСчет+"' and not РПО_Не_Призн and РПО_Признак=''";
       Msg="В картотеке банковских счетов уже находится карточка с расчетным счетом "+РСчет+"^MУстановите флаг 'Не формировать аналитический признак банковского счета' если необходимо сформировать данный банковский счет";
       Template.Object="cbНе_Призн";
       tmp="ЛС."+РСчет;
    fi;
    if not РПО_Признак="":
       F="Наш and not UKey="+RecordToString(Current)+" and РПО_Признак='"+РПО_Признак+"' and not РПО_Не_Призн";
       Msg="В картотеке банковских счетов уже находится карточка с признаком "+РПО_Признак+"^MИзмените код счета";
       Template.Field="РПО_Код_";
       tmp="ЛС."+РПО_Признак;
    fi;
    if not F="":
       OWA=OpenWorkArea(SelfCrd,"",F);
       Try
        if not Records(OWA)=0: Message(Msg,mtError); ^False; fi;
       Finally
        CloseWorkArea(OWA);
       end;
       if not Name_A(tmp)=" ":
          if not (SignToRecord(tmp,False)=Current and SignCardFile(tmp,False)=SelfCrd): Message("Аналитический признак банковского счета ("+tmp+") уже существует^M"+if(РПО_Признак="","Установите флаг 'Не формировать аналитический признак банковского счета' если необходимо сформировать данный банковский счет","Измените код счета"),mtError); ^False; fi;
       fi;

    fi;
 fi;
 ^True;
end;

Proc Вызвать(Rec: Record; vField:S; vIter:I);
 Run=True;
 tplField=vField;
 tplFrame=vIter;
 OpenBlank("ИНФО.БАНКСЧЕТА",True,Rec);
end;

Func ПризнакИсп:L;
 Refresh;
 if Раб.Бюджет2005.КартПризнакИспользуется("БАНК_СЧЕТА","РПО_ПРИЗНАК",Current,"*")="":
    if Раб.Бюджет2005.КартПризнакИспользуется("БАНК_СЧЕТА","РПО_ЛСЧЕТ",Current,"*")="":
       if Раб.Бюджет2005.КартПризнакИспользуется("БАНК_СЧЕТА","РСЧЕТ",Current,"*")="":
          ^False;
       fi;
    fi;
 fi;
 ^True;
end;

Proc ПризнОбнов;
 if ПризнакИсп then Exit; fi;
 if not РПО_Код="" then
    if not РСчет="" then РПО_Признак=Trim(РСчет)+"."+РПО_Код; fi;
    if not РПО_ЛСчет="" then РПО_Признак=Раб.Договор.ConvertStr(Trim(РПО_Лсчет))+"."+РПО_Код; fi;
 fi;
end;
--Процедуры и функции -------------                           
--
--
--Обработчики событий полей шаблона-----
Func Контр_onEnter(Field:S; Iter:I):L;
var Rec:Record;
 Rec=OpenCardFile('Контрагент');
 if Rec=nil: ^False; fi;
 КонтрАгент=Rec;
 НАШ=КонтрАгент.Наше;
 БанкИмя=КонтрАгент.КорИмя;
 ^False;
end;

Func РПО_Страна_OnEnter(FieldName: String; Iter: Integer): logical;
  var Rec:Record;

  if not РАБ.Договор.ОКСМ_ЗАГРУЖЕН:
    return True;
  fi;
  Rec=OpenCardFile('РПО_ОКСМ');
  if Rec=nil: ^False; fi;
  РПО_Страна = GetCardFieldS('РПО_ОКСМ',Rec,"АЛЬФА2");
  Return False;
end;

Func Банк_OnLookup(Sect: String; Row: Integer; Col: Integer; Cur: String): String;
var Rec: Record;
var v1,v2:S;
 Template.HideEditor(False);
 Rec=Раб.Поиск.ВыборИзКартотеки("Выбор из справочника БИК РФ","РПО_BNKSEEK","NEWNUM|NAMEP|NNP|KSNP","БИК|Платежное наименование участника расчетов|Наименование населенного пункта|Корреспондентский счет","");
 if not Rec=nil:
    Банк=GetCardFieldS("РПО_BNKSEEK",Rec,"NAMEP");
    v1=Раб.Вспом.Справ_БИК.КодВТекст("TNP",GetCardFieldS("РПО_BNKSEEK",Rec,"TNP"));
    v2=GetCardFieldS("РПО_BNKSEEK",Rec,"NNP");
    Город=Раб.Бюджет2005.Объединить(v1,v2,".");
    КСчет=GetCardFieldS("РПО_BNKSEEK",Rec,"KSNP");
    БИК=GetCardFieldS("РПО_BNKSEEK",Rec,"NEWNUM");
    if Substr(БИК, 1, 2) = "04":
       РПО_Страна = "RU";
    fi;
 fi;
 Return Cur;
end;

Proc БИК_OnExit(FieldName: String; Iter: Integer);
  if Substr(БИК, 1, 2) = "04":
     РПО_Страна = "RU";
  elsif Substr(БИК, 1, 2) = "15":
     РПО_Страна = "BY";
  fi;
end;

Proc РПО_SWIFTBIC_OnExit(FieldName: String; Iter: Integer);
  РПО_Страна = Substr(РПО_SWIFTBIC, 5, 2);
end;

Func ВалютаН_onEnter (Field:S; Iter:I):L;
 Валюта=Раб.Бюджет.СписокВалют(Валюта);
 ^False;
end;

Func РПО_Секрет_OnEnter(FieldName: String; Iter: Integer): logical;
var n:i;
 ClearVariable(Buf);
 Buf[1]="0 -- Не секретно";
 Buf[2]="1 -- ДСП";
 Buf[3]="2 -- Секретно";
 Buf[4]="3 -- Совершенно секретно";
 Buf[5]="4 -- Особой важности";
 n=Alternate("Признак секретности",Buf,-1,РПО_Секрет+1,12);
 if n=0: ^False; fi;
 n=n-1;
 РПО_Секрет=n;
 Return False;
end;

Func РПО_КодБюдж_OnEnter(FieldName: String; Iter: Integer): logical;
var n:i;
 ClearVariable(Buf);
 Buf[1]="1 -- Федеральный бюджет";
 Buf[2]="2 -- Бюджет субъекта Российской Федерации";
 Buf[3]="3 -- Местный бюджет";
 Buf[4]="4 -- Бюджет Государственного внебюджетного фонда";
 Buf[5]="5 -- Бюджет территориального государственного внебюджетного фонда";
 Buf[6]="6 -- Средства юридического лица";
 n=Alternate("Уровень бюджета",Buf,-1,Int(РПО_КодБюдж),12);
 if not n=0:
    РПО_КодБюдж=Str(n);
    if КонтрАгент.РПО_ТипУчр="БУ" or КонтрАгент.РПО_ТипУчр="АУ":
       РПО_НаимБюдж="";
       РПО_НаимБюдж2="";
       РПО_ФО_Наим1="";
       РПО_ФО_Наим2="";
      else
       РПО_НаимБюдж=SubStr(Buf[n],6,255);
       РПО_НаимБюдж2="";
       if РПО_ФО_Наим1="":
          РПО_ФО_Наим1="Министерство финансов Российской Федерации"; 
          РПО_ФО_Наим2="";
         else 
          РПО_ФО_Наим1=""; 
          РПО_ФО_Наим2="";
       fi;
    fi;
 fi;
 Return False;
end;

Func Признак_OnEnter(FieldName: String; Iter: Integer): logical;
var tmp:S;
 Refresh;
 FieldName=SubStr(FieldName,1,Length(FieldName)-1);
 if FieldName="РПО_Код":
    if ПризнакИсп:
       tmp="ЛС."+if(РПО_ЛСчет="",РСчет,Раб.Договор.ConvertStr(РПО_ЛСчет))+if(РПО_Код="","","."+РПО_Код);
    fi;
   else 
    tmp=Раб.Бюджет2005.КартПризнакИспользуется("БАНК_СЧЕТА",FieldName,Current,"ЛС."+GetVariableS(FieldName));
 fi;
 if not tmp="" then Message("Признак банковского счета ("+tmp+") используется в проводках"+chr(13)+"Изменение поля невозможно",mtError); Return False; fi;
 Return True;
end;

Func Признак_OnVerify(FieldName: String; Iter: Integer; Value: S): logical;
 FlagEdit=True;
 Value=Up(Trim(Value));
 if FieldName="РПО_ЛСчет_" then PutVariableS("РПО_ЛСчет",Value); ^True; fi;
 if ValidSign(Value):
    if FieldName="РПО_Код_" and Length(Value)>8: Message("Слишком длинное значение кода (>8)",mtError); ^False; fi;
    FieldName=SubStr(FieldName,1,Length(FieldName)-1);
    PutVariableS(FieldName,Value);
   else
    Раб.Бюджет.ПроверитьПризнак(Value);
    ^False;
 fi;
 ^True;
end;

Proc Признак_onExit (Field:S; Iter:I);
var tmp:S;
 if FlagEdit: FlagEdit=False; Exit; fi;
 Field=SubStr(Field,1,Length(Field)-1);
 if Field="РПО_Код":
    if ПризнакИсп:
       tmp="ЛС."+if(РПО_ЛСчет="",РСчет,Раб.Договор.ConvertStr(РПО_ЛСчет))+if(РПО_Код="","","."+РПО_Код);
    fi;
   else 
    tmp=Раб.Бюджет2005.КартПризнакИспользуется("БАНК_СЧЕТА",Field,Current,"ЛС."+GetVariableS(Field));
 fi;
 if not GetVariableS(Field)="":
    if not tmp="" then Message("Признак банковского счета ("+tmp+") используется в проводках"+chr(13)+"Изменение поля невозможно",mtError); Exit; fi;
 fi;
 PutVariableS(Field,"");
end;

Proc РПО_Код_OnExit(FieldName: String; Iter: Integer);
var i:integer;
var tmp,cha:string;
 РПО_Код=Up(trim(РПО_Код));
 tmp ='';
 for i=1 to Length(РПО_Код) do
     cha=Substr(РПО_Код,i,1);
     if cha<>' ' then tmp=tmp+cha; fi;
 od;
 РПО_Код=tmp;
end;

Proc РПО_ФО_ЛСчет_OnExit(FieldName: String; Iter: Integer);
 Оформление;
end;

Proc rbИНН_OnChange(Sender: String);
 Оформление;
end;
--Обработчики событий полей шаблона-----
--
--
--Обработчики событий объектов шаблона-----
Proc btnOK_onClick (Obj:S);
 EditorApply;
 Close;
end;

Proc btnОтмена_onClick (Obj:S);
 EditorCancel;
 Close;
end;

Proc btnПроверка_onClick (Obj:S);
var i:i;
 if not Length(БИК)=9: Message("БИК должен содержать 9 цифр",mtError); Template.Field="БИК"; Exit; fi;
 if not КСЧЕТ="" and not КлючКС(КСЧЕТ,БИК): Message("Проверьте БИК и номер корр. счета",mtError); Template.Field="КСчет"; Exit; fi;
 i=Раб.Вспом.Справ_БИК.Контроль2(БИК,Банк,Город,КСчет);
 if i=0:
   |i= 1: OpenBlank("Раб.Вспом.Справ_БИК",True);
   |i=-2: Template.Field="БИК";
   |i=-4: Template.Field="Банк";
   |i=-5: Template.Field="Город";
   |i=-6: Template.Field="КСчета";
 fi;
 if i=0:
    if not РСчет="" and not КлючРС(РСЧЕТ,БИК): Message("Проверьте БИК и номер расчетного счета",mtError); Template.Field="РСчет"; Exit; fi;
    Message("Ошибок не обнаружено"); 
 fi;
end;

Proc cbНе_Призн_OnChange(Sender: String);
var tmp:S;
 if РПО_Не_Призн:
    if Наш:
       Refresh;
       tmp=Раб.Бюджет2005.КартПризнакИспользуется("БАНК_СЧЕТА","РПО_ЛСчет",Current,"ЛС."+РПО_ЛСчет);
       if tmp="":
          tmp=Раб.Бюджет2005.КартПризнакИспользуется("БАНК_СЧЕТА","РСчет",Current,"ЛС."+РСчет);
       fi;
       if tmp="" and not РПО_Код="":
          tmp=Раб.Бюджет2005.КартПризнакИспользуется("БАНК_СЧЕТА","РПО_Признак",Current,"ЛС."+if(РПО_ЛСчет="",РСчет,Раб.Договор.ConvertStr(РПО_ЛСчет))+if(РПО_Код="","","."+РПО_Код));
       fi;
       if not tmp="" then 
          Message("Признак банковского счета ("+tmp+") используется в проводках"+chr(13)+"Изменение данного флага невозможно",mtError);
          РПО_Не_Призн=False;
          cbНе_Призн.State=РПО_Не_Призн;
       fi;
    fi;
 fi;
end;

Proc rbТипСчета_OnChange(Sender: String);
var tmp:S;
 if РПО_ТипСчета=1:
    if Наш and not РПО_Не_Призн:
       Refresh;
       tmp=Раб.Бюджет2005.КартПризнакИспользуется("БАНК_СЧЕТА","РПО_ЛСчет",Current,"ЛС."+РПО_ЛСчет);
       if tmp="" and not РПО_Код="":
          tmp=Раб.Бюджет2005.КартПризнакИспользуется("БАНК_СЧЕТА","РПО_Признак",Current,"ЛС."+if(РПО_ЛСчет="",РСчет,Раб.Договор.ConvertStr(РПО_ЛСчет))+if(РПО_Код="","","."+РПО_Код));
       fi;
       if not tmp="" then 
          Message("Признак банковского счета ("+tmp+") используется в проводках"+chr(13)+"Изменение типа счета невозможно",mtError);
          РПО_ТипСчета=2; 
       fi;
    fi;
 fi;
 if РПО_ТипСчета=1 and isОФК:
    if EnqOkCancel("Внимание!^MПоля относящиеся к казначейству будут очищены^MПродолжить ?",mtWarning)=cmOk:
       РПО_ОФК_Имя="";
       РПО_ОФК_Имя2="";
       РПО_ОФК_Код="";
       РПО_ЛСчет="";
       РПО_КодБюдж="";
       РПО_НаимБюдж="";
       РПО_НаимБюдж2="";
       РПО_ФО_Наим1="";
       РПО_ФО_Наим2="";
       РПО_ФО_Код="";
       РПО_ФО_ОКПО="";
       РПО_ФО_ЛСчет="";
       РПО_РБС=False;
       РПО_Умолчание_РР=False;
      else
       РПО_ТипСчета=2;
    fi;
 fi;
 Оформление;
end;
--Обработчики событий объектов шаблона-----
--
--
--Обработчики событий шаблона -----
Proc AfterOpen(Destroy: Logical);
 if Run:
    Run=False;
    if tplField="РПО_Код":   tplField="РПО_Код_";
      |tplField="РПО_ЛСчет": tplField="РПО_ЛСчет_";
      |tplField="РПО_РСчет": tplField="РПО_РСчет_";
    fi;
    Template.Field=tplField;
    if tplFrame>0: Template.Frame=tplFrame; fi;
 fi;
end;

Proc Template_onRead;
 if CurrentState=CrdusInserted:
    if КонтрАгент=nil:
       if ЗаписьКонтр<>"": КонтрАгент=StringToRecord(ЗаписьКонтр); fi;
--       Наш=НашСчет;
       Наш=КонтрАгент.Наше;
       БанкИмя=БанкИмя_;
       Валюта='РУБ';
       if РПО_ТипСчета=0:
          if Наш: РПО_ТипСчета=2; else РПО_ТипСчета=1; fi;
       fi;
    fi;
 fi;
 Оформление;
end;

Func Template_onValidate:L;
 if КонтрАгент=nil: Message("Выберите контрагента",mtError); Template.Field="Контр"; ^False; fi;
 if БанкИмя="": Message("Введите имя контрагента для банка",mtError);   Template.Field="БанкИмя"; ^False; fi;
 if РПО_ИНН_БАНКА:
    if РПО_Банк_ИНН="": Message("Введите "+текстИНН,mtError); Template.Field="РПО_Банк_ИНН"; ^False; fi;
    if РПО_Банк_КПП="": Message("Введите "+текстКПП,mtError); Template.Field="РПО_Банк_КПП"; ^False; fi;
 fi;
 ПризнОбнов;
 if not ПроверитьУникальностьПризн: ^False; fi;
 ИзменитьФлагУмолчание;
 ИзменитьФлагУмолчаниеРР;
 Наш=КонтрАгент.Наше;
 if Наш and not РПО_Не_Призн and РПО_Код="":
    if Раб.Бюджет2005.КартПризнакИспользуется("БАНК_СЧЕТА","РПО_ЛСчет",Current,"ЛС."+РПО_ЛСчет)="" and Раб.Бюджет2005.КартПризнакИспользуется("БАНК_СЧЕТА","РСчет",Current,"ЛС."+РСчет)="": Message("Заполните код счета",mtError); Template.Field="РПО_Код_"; ^False; fi;
 fi;
 if РПО_ТипСчета=2 or (РПО_ТипСчета=0 and isОФК):
    if РПО_ОФК_Имя+РПО_ОФК_Имя2="": Message("Заполните наименование ОФК",mtError); Template.Field="РПО_ОФК_Имя"; ^False; fi;
    if РПО_ОФК_Код="": Message("Заполните код ОФК",mtError); Template.Field="РПО_ОФК_Код"; ^False; fi;
    if РПО_ЛСчет="": Message("Заполните лицевой счет в ОФК",mtError); Template.Field="РПО_ЛСчет_"; ^False; fi;
    if РПО_КодБюдж="": Message("Заполните уровень (код) бюджета",mtError); Template.Field="РПО_КодБюдж"; ^False; fi;
    if КонтрАгент.РПО_ТипУчр="БУ" or КонтрАгент.РПО_ТипУчр="АУ":
       if not РПО_НаимБюдж+РПО_НаимБюдж2="": Message("Наименование бюджета для бюджетного учреждения не заполняется",mtError); Template.Field="РПО_НаимБюдж"; ^False; fi;
       if not РПО_ФО_Наим1+РПО_ФО_Наим2="": Message("Наименование финансового органа для бюджетного учреждения не заполняется",mtError); Template.Field="РПО_ФО_Наим1"; ^False; fi;
      else
       if РПО_НаимБюдж+РПО_НаимБюдж2="": Message("Заполните наименование бюджета",mtError); Template.Field="РПО_НаимБюдж"; ^False; fi;
       if РПО_ФО_Наим1+РПО_ФО_Наим2="": Message("Наименование финансового органа",mtError); Template.Field="РПО_ФО_Наим1"; ^False; fi;
    fi;
 fi;
 ^True;
end;
--Обработчики событий шаблона -----
--



Конец

