-- Шаблон создан мастером бланков
-- 03.01.2009 12:45:02
--
БланкСШаблоном [07.06.2010] "Сведения о принятом бюджетном обязательстве", Редактор РПО_СВЕД_БО;

var preView:L;

var ТипДок_:I=if(OverrideТипДок="",ТипДок,Int(OverrideТипДок));

var Test:S;

var УпрНастр:L;
var НастрПоУмолч:S="Настройка по умолчанию";
var НастрЗакр:S="Закрыть настройку";

var fУтвДок:L=[False];
var fУтвДок_:S=if(fУтвДок,"Да","Нет");
var fДобГородВБанк:L=[False];
var fДобГородВБанк_:S=if(fДобГородВБанк,"Да","Нет");
var setФорматНомер:I;
var setФорматНомер_:S=if(setФорматНомер=0,"Простой номер","Номер с префиксом");
var setСепаратор:S=["/"];
var setДлинаНомер:I=[5];
var setВариантР5:I;
var setВариантР5_:S="Вариант "+Str(setВариантР5+1);
var fCMF_onРег:L;
var fCMF_onРег_:S=if(fCMF_onРег,"Да","Нет");
var setЗаполР1_Гр8:L;
var setЗаполР1_Гр8_:S=if(setЗаполР1_Гр8,"Да","Нет");
var setФорматР1_Гр9:S;
var setФорматР1_Гр9_:S=if(setФорматР1_Гр9="","(пусто)",setФорматР1_гр9);
var setОкрПроцАв:S=["4"];
var setОкрПроцАв_:S=if(setОкрПроцАв="-4","Отбрасывать","Округлять");
var setПоказИтогФАИП:L;
var setПоказИтогФАИП_:S=if(setПоказИтогФАИП,"Да","Нет");
var fGUID_FK:L;
var fGUID_FK_:S=if(fGUID_FK,"Да","Нет");
var fКонтрольЛБО:I;
var fКонтрольЛБО_:S=if(fКонтрольЛБО=-1:"Отключен"|fКонтрольЛБО=1:"Жесткий"|True:"Мягкий");
var extКлюч:S;
var verТФФ:I;
var f20130901:L=[(ДатаДок>=1.9.2013 or Изм_ДатаДок>=1.9.2013)];
var f20140701:L=(ДатаДок>=1.7.2014 or Изм_ДатаДок>=1.7.2014);
var Д_ПОСТ_ИЗМ_:S=if(ТипДок<>0, '"_____"____________20____г.','');

var НоваяЗапись:L=(CurrentState=crdusInserted);

var isChild:L=(not Договор=nil or not ДО=nil) and not Test="Test";

var Статус:L=isChild or Учитывать;

КолКопий:I=[1];

var ИсклПризн:S="БО.*|К.*|ПЕРИОД.*|ФАИП.*|ИСПДОК.*|СОП.*";

var ТекстПрил:s="Приложение №"+if(ТипДок_=1:"4"|ТипДок_=2:"5"|True:"1");

var ФЗ:I=if(RecordExists(Раб.Договор.crdДоговор,Договор):Договор.ФЗ|ДатаДок>=1.1.2014 or Изм_ДатаДок>=1.1.2014:1|True:0);

var OverrideФорма:S=if(OverrideТипДок="","",if(ТипДок=0:"!!! 0531702 !!!"|ТипДок=1:"!!! 0531705 !!!"|ТипДок=2:"!!! 0531706 !!!"|true:""));

var НомерДок_:S=if(ФорматНомер=0,НомерДок,Префикс+Сепаратор+НомерДок);
var Изм_НомерДок_:S=if(Изм_ФорматНомер=0,Изм_НомерДок,Изм_Префикс+Изм_Сепаратор+Изм_НомерДок);

var НомерДок705_:S=if(РегНомер="",НомерДок_,РегНомер);
var НомерДок706_:S=if(РегНомер="",Изм_НомерДок_,РегНомер);

var Изм_:I=Изм;

var Клиент:S=Рекв.ПолнИмя+Рекв.РПО_ПолнИмя2;
var Банк_РПО_ЛСчет_:S=if(ver<11,"Номер лицевого счета получателя","Номер лицевого счета");
var ФинОрган:S=Банк.РПО_ФО_Наим1+Банк.РПО_ФО_Наим2;
var Банк_РПО_ФО_ОКПО :S=if(ver<11,"",Банк.РПО_ФО_ОКПО);
var Банк_РПО_ФО_ОКПО_:S=if(ver<11,"","по ОКПО");

var Секрет_:S="Гриф секретности: "+Раб.Договор.Секретность(Секрет,False);

var ОчиститьР1:S=if(Статус,"","Очистить раздел 1");
var ОчиститьР2:S=if(Статус,"","Очистить раздел 2");
var ОчиститьР3:S=if(Статус,"","Очистить раздел 3");
var ОчиститьР4:S=if(Статус,"","Очистить раздел 4");
var ОчиститьР5:S=if(Статус:""|ТипДок_=1:"Обновить"|True:"Очистить раздел 5");

var Р1:L=not (Осн_ДокВид="" and Осн_ДокНом="" and Осн_ДокДат=1.1.100 and Осн_ДокДН=1.1.100 and Осн_ДокДК=1.1.100 and Round(Осн_ДокСум,2)=0 and Осн_ДокОКВ="" and Round(Осн_ДокСумРуб,2)=0 and Round(Осн_ДокПроцАв,4)=0 and Round(Осн_ДокСумАв,2)=0);
var Р2:L=not (РеквП=nil and БанкП=nil);
var Р3:L=not (Исп_ДокНом="" and Исп_ДокДат=1.1.100 and Исп_Орган="" and Round(Исп_ДокСум,2)=0 and Исп_УведНом="" and Исп_УведДат=1.1.100);
var Р4:L=not (Доп_РазмещЗаказ="" and Доп_ДатаИтог=1.1.100 and Доп_ВидДокОсн="" and Доп_НомДокОсн="" and Доп_ДатаДокОсн=1.1.100 and Доп_Ном_Реестр="");

var Осн_ДокВид_:S=if(Осн_ДокВид="1" and ver<11:"Государственный контракт"|Осн_ДокВид="2" and ver<11:"Иной договор"|ver>=11 and Осн_ДокВид="-":""|true:Осн_ДокВид);

var Призн_ИспДок:S;
var Призн_ИспДок_:S=Призн_ИспДок;
var СоздатьИспДок:S=if(Учитывать or not Призн_ИспДок="","","Создать признак");

var БанкП_Банк:S=БанкП.Банк+if(fДобГородВБанк," "+БанкП.Город,"");
var РеквП_Телефон:S=if(РеквП.Телефон="",РеквП.Факс,РеквП.Телефон);

var A2:S=if(Статус,"","+");
var D2:S=if(Статус,"","-");

var БанкП_Банк2[]:S=Раздел2[$].БанкП.Банк+if(fДобГородВБанк," "+Раздел2[$].БанкП.Город,"");
var РеквП_Телефон2[]:S=if(Раздел2[$].РеквП.Телефон="",Раздел2[$].РеквП.Факс,Раздел2[$].РеквП.Телефон);

var Р4_Заг:S = "Раздел 4. Дополнительные реквизиты обязательства, сформированного на основе контракта" +
    if(f20140701 and ТипДок_=1,", документа, подлежащего включению в реестр соглашений", "");
var Гр4_7Заг:S = "Номер реестровой записи в реестре контрактов" +
    if(f20140701 and ТипДок_=1,", документа, подлежащего включению в реестр соглашений", "");
var Гр4_7:S=if(ТипДок_=1,"7","6");

var Доп_РазмещЗаказ_:s=if(Length(Доп_РазмещЗаказ)=5,Доп_РазмещЗаказ+" "+Раб.Договор.СОП(Доп_РазмещЗаказ,False,""),Раб.Договор.РазмещениеЗаказа(if(preView and (Доп_РазмещЗаказ="0" or Match(Доп_РазмещЗаказ,"11!")):"11"|preView and Match(Доп_РазмещЗаказ,"10!"):"10"|True:Доп_РазмещЗаказ),False,if(ФЗ=1,"44ФЗ","")));
var Доп_Статус_:s=if(Доп_Статус="1":"завершен (исполнен)"|Доп_Статус="2":"аннулирован (расторгнут)"|True:"");

Гр[]:L;
var Гр_[]:S=if(Статус,"",if(Гр[$],"Дублировать","Не дублировать"));
var txtИзм:S=if(ТипДок_=1,"в т.ч. изм-ние","всего");

var A:S=if(Статус,"","+");
var D:S=if(Статус,"","-");

var пп[]:i=$;
var ФАИП_Наим[]:S=Расшифр[$].ФАИП.Наим1+Расшифр[$].ФАИП.Наим2+Расшифр[$].ФАИП.Наим3+Расшифр[$].ФАИП.Наим4;
var Ист_[]:S=if(Расшифр[$].Ист="1":"средства бюджета"
               |Расшифр[$].Ист="3":"средств дополнительного бюджетного финансирования"
               |True:Расшифр[$].Ист);
var КБК_[]:S=Расшифр[$].КБК;
var Предм[]:S=Расшифр[$].Предм1+Расшифр[$].Предм2+Расшифр[$].Предм3+Расшифр[$].Предм4;
var lenПредм[]:i=Length(Расшифр[$].Предм1)+Length(Расшифр[$].Предм2)+Length(Расшифр[$].Предм3)+Length(Расшифр[$].Предм4);
var Предм_[]:S=if(lenПредм[$]>255,SubStr(Предм[$],1,252)+">>>",Предм[$]);
var exПредм:S=">>";
var Предм__:S="";

var Призн_[]:S=Расшифр[$].Призн;

var Изм1_1 []:N=Расшифр[$].Сум1_1 -Расшифр[$].Сум_Пре1_1;
var Изм1_2 []:N=Расшифр[$].Сум1_2 -Расшифр[$].Сум_Пре1_2;
var Изм1_3 []:N=Расшифр[$].Сум1_3 -Расшифр[$].Сум_Пре1_3;
var Изм1_4 []:N=Расшифр[$].Сум1_4 -Расшифр[$].Сум_Пре1_4;
var Изм1_5 []:N=Расшифр[$].Сум1_5 -Расшифр[$].Сум_Пре1_5;
var Изм1_6 []:N=Расшифр[$].Сум1_6 -Расшифр[$].Сум_Пре1_6;
var Изм1_7 []:N=Расшифр[$].Сум1_7 -Расшифр[$].Сум_Пре1_7;
var Изм1_8 []:N=Расшифр[$].Сум1_8 -Расшифр[$].Сум_Пре1_8;
var Изм1_9 []:N=Расшифр[$].Сум1_9 -Расшифр[$].Сум_Пре1_9;
var Изм1_10[]:N=Расшифр[$].Сум1_10-Расшифр[$].Сум_Пре1_10;
var Изм1_11[]:N=Расшифр[$].Сум1_11-Расшифр[$].Сум_Пре1_11;
var Изм1_12[]:N=Расшифр[$].Сум1_12-Расшифр[$].Сум_Пре1_12;

var Итог_Сум1[]:N=Расшифр[$].Сум1_1+Расшифр[$].Сум1_2+Расшифр[$].Сум1_3+Расшифр[$].Сум1_4+Расшифр[$].Сум1_5+Расшифр[$].Сум1_6+Расшифр[$].Сум1_7+Расшифр[$].Сум1_8+Расшифр[$].Сум1_9+Расшифр[$].Сум1_10+Расшифр[$].Сум1_11+Расшифр[$].Сум1_12;
var Итог_Изм1[]:N=Изм1_1[$]+Изм1_2[$]+Изм1_3[$]+Изм1_4[$]+Изм1_5[$]+Изм1_6[$]+Изм1_7[$]+Изм1_8[$]+Изм1_9[$]+Изм1_10[$]+Изм1_11[$]+Изм1_12[$];

var Изм2[]:N=Расшифр[$].Сум2-Расшифр[$].Сум_Пре2;
var Изм3[]:N=Расшифр[$].Сум3-Расшифр[$].Сум_Пре3;
var Изм4[]:N=Расшифр[$].Сум4-Расшифр[$].Сум_Пре4;
var Изм5[]:N=Расшифр[$].Сум5-Расшифр[$].Сум_Пре5;
var Изм6[]:N=Расшифр[$].Сум6-Расшифр[$].Сум_Пре6;

var НД:S=if(ТипДок_=0:НомерДок_|ТипДок_=1:Изм_НомерДок_|True:"");
var ДД:D=if(ТипДок_=0 or ТипДок_=2:ДатаДок|ТипДок_=1:Изм_ДатаДок|True:1.1.100);
var Форма:S=if(ТипДок_=0:"Форма 0531702, с.2"|ТипДок_=1:"Форма 0531705, с.2"|ТипДок_=2:"Форма 0531706, с.2"|true:"Форма      , с.2");
var НаимФорма:S=if(ТипДок_=0:"Сведения №"|ТипДок_=1 or ТипДок_=2:"Заявка №"|true:" №");
var Отметка:S=if(ТипДок_=0:"ОТМЕТКА ОРГАНА ФЕДЕРАЛЬНОГО КАЗНАЧЕЙСТВА О ПРИЕМЕ НА УЧЕТ БЮДЖЕТНОГО ОБЯЗАТЕЛЬСТВА"|ТипДок_=1 or ТипДок_=2:"ОТМЕТКА ОРГАНА ФЕДЕРАЛЬНОГО КАЗНАЧЕЙСТВА О РЕГИСТРАЦИИ НАСТОЯЩЕЙ ЗАЯВКИ"|True:"ОТМЕТКА ОРГАНА ФЕДЕРАЛЬНОГО КАЗНАЧЕЙСТВА");

hПрефикс:S;
hГлава:S;
hГРБС:S;
var hИст:S;
var hКБК:S;
var hТипКБК:S;
var hЭКР:S;
var hЭКИФД:S;
var hПредм1:S;
var hПредм2:S;
var hПредм3:S;
var hПредм4:S;
var hПризн:S;

var Buf []:S;
var Buf2[]:S;
var BufI[]:I;

btnНастр       :Object;
cbУчитывать    :Object;
cbУчетФК       :Object;
cbВБанк        :Object;
cbРег          :Object;
btnРегДата     :Object;
edРегДата      :Object;
lbРегНомер     :Object;
edРегНомер     :Object;
cbЗакрытьДок   :Object;
btnПечать      :Object;
edКолКопий     :Object;
btnПросмотр    :Object;
btnДокОсн      :Object;
btnВыгрузить   :Object;
cbGUID_FK      :Object;
btnGUID_FK     :Object;
edGUID_FK      :Object;
cbf20130901    :Object;
btnКонтрольЛБО :Object;

S0:  Section;
S1:  Section;
S2:  Section;
S3:  Section;
S4:  Section;
S5:  Section;
S6:  Section;
S7:  Section;
S8:  Section;
S9:  Section;
S10: Section;
S11: Section;
S12: Section;
S13: Section;
S14: Section;
S15: Section;
S16: Section;
S17: Section;

var nS:I=17;

sУтвДок: Section;

SC1: Section;
SC2: Section;

T0   : Section;
T1   : Section;
T2   : Section;
T1_11: Section;
T2_11: Section;

Ш1: Section;
Ш2: Section;

var Key[]:S;
var BufФАИП_Код[]:S;
var BufФАИП_Наим1[]:S;
var BufФАИП_Наим2[]:S;
var BufФАИП_Наим3[]:S;
var BufФАИП_Наим4[]:S;
var BufИст[]:S;
var BufКБК[]:S;
var BufПредм1[]:S;
var BufПредм2[]:S;
var BufПредм3[]:S;
var BufПредм4[]:S;
var BufСум1_1[]:N;
var BufСум1_2[]:N;
var BufСум1_3[]:N;
var BufСум1_4[]:N;
var BufСум1_5[]:N;
var BufСум1_6[]:N;
var BufСум1_7[]:N;
var BufСум1_8[]:N;
var BufСум1_9[]:N;
var BufСум1_10[]:N;
var BufСум1_11[]:N;
var BufСум1_12[]:N;
var BufСум2[]:N;
var BufСум3[]:N;
var BufСум4[]:N;
var BufСум5[]:N;
var BufСум6[]:N;
var BufИзм1_1[]:N;
var BufИзм1_2[]:N;
var BufИзм1_3[]:N;
var BufИзм1_4[]:N;
var BufИзм1_5[]:N;
var BufИзм1_6[]:N;
var BufИзм1_7[]:N;
var BufИзм1_8[]:N;
var BufИзм1_9[]:N;
var BufИзм1_10[]:N;
var BufИзм1_11[]:N;
var BufИзм1_12[]:N;
var BufИзм2[]:N;
var BufИзм3[]:N;
var BufИзм4[]:N;
var BufИзм5[]:N;
var BufИзм6[]:N;
var BufПримеч[]:S;

var BufField[]:S;
var BufColorBg[]:I;
var BufColorFo[]:I;
var FlagInit:L;

var SelfCrd:S="РПО_СВЕД_БО";
var SelfCfg:S="ТББ.ДОКУМЕНТЫ.ЛБО.СВЕД_БО.000.cfg";

var fОКВ:I;

var FlagEdit:L;

var XS:I=2100; --Размер листа
var YS:I=2970; --Размер листа
var y0:i;
var Pages:I=[2];

ДолжнИспФК:S;
ФИОИспФК:S;
ТелИспФК:S;

var НастрGUID:S;

var nРасшифр:I=Расшифр;

var inТипДок:S;

var inПечать:L;

var SkipEvent:L;

var S_nul:S="";
var D_nul:D=1.1.100;

var BufWord[]:s;
var BufStr []:s;
--
--Процедуры и функции -------------
Proc Настр(aСохр:L);
var tmp:S;
var Flag:L;
 if НастрGUID="" or aСохр: НастрGUID=GetGUID; fi;
 if Раб.Настр.Начать("ДОКУМЕНТЫ.ЛБО.СВЕД_БО",0,0,"",НастрGUID):
    Раб.Настр.Добавить("fУтвДок","L");
    Раб.Настр.Добавить("fДобГородВБанк","L");
    Раб.Настр.Добавить("setФорматНомер","I");
    Раб.Настр.Добавить("setСепаратор","S");
    Раб.Настр.Добавить("setДлинаНомер","I");
    Раб.Настр.Добавить("setВариантР5","I");
    Раб.Настр.Добавить("fCMF_onРег","L");
    Раб.Настр.Добавить("setЗаполР1_Гр8","L");
    Раб.Настр.Добавить("setФорматР1_Гр9","S");
    Раб.Настр.Добавить("setОкрПроцАв","S");
    Раб.Настр.Добавить("setПоказИтогФАИП","L");
    Раб.Настр.Добавить("fGUID_FK","L");
    Раб.Настр.Добавить("fКонтрольЛБО","I");
    Раб.Настр.Добавить("extКлюч","S");
    Раб.Настр.Добавить("f20130901","L");
    if aСохр: 
       Раб.Настр.Сохранить; 
      else 
       НастрGUID=Раб.Настр.Загрузить("","");
       if НастрGUID="":
          Flag=ExecuteFuncL("НастрПоУмолч_OnEnter","",1);
       fi;
    fi;
 fi;
 if not aСохр:
    verТФФ=if(ToDay<1.1.2014,11,12);
    if Раб.Настр.Начать("УПРАВЛЕНИЕ.ЛИМИТЫ",0,0,"",GetGUID):
       tmp=Раб.Настр.ВзятьЗначение("ver");
       if not tmp="": verТФФ=Int(tmp); fi;
    fi;
 fi;
end;

Func ЕстьИзмДок:L;
var OWA:I;
 OWA=OpenWorkArea(SelfCrd,"","БО_Пре="+RecordToString(Current));
 Try
  ^not Records(OWA)=0;
 Finally
  CloseWorkArea(OWA);
 end;
end;

Proc СкрытьОбъекты (Flag:L; forView:L);
 cbУчитывать.Visible=not Flag;
 cbУчетФК.Visible=not Flag;
 cbВБанк.Visible=not Flag;
 cbРег.Visible=not Flag;
 btnРегДата.Visible=not Flag;
 edРегДата.Visible=not Flag;
 lbРегНомер.Visible=not Flag;
 edРегНомер.Visible=not Flag;
 cbЗакрытьДок.Visible=not Flag and Раб.Бюджет2005.Сетевая;
 btnНастр.Visible=not Flag;
 if not forView:
    btnПечать.Visible=not Flag;
    edКолКопий.Visible=not Flag;
    btnПросмотр.Visible=not Flag;
 fi;
 btnДокОсн.Visible=not Flag and (not Договор=nil or not ДО=nil);
 btnВыгрузить.Visible=not Flag;
 cbGUID_FK.Visible=not Flag and (ТипДок=0 or overrideТипДок='0') and not ВБанк;
 btnGUID_FK.Visible=not Flag and (ТипДок=0 or overrideТипДок='0') and (fGUID_FK or GUID_FK_Разреш);
 edGUID_FK.Visible=not Flag and (ТипДок=0 or overrideТипДок='0') and (fGUID_FK or GUID_FK_Разреш);
 cbf20130901.Visible=not Flag;
 btnКонтрольЛБО.Visible=not Flag;
end;

Proc ОткрНастр (Flag:L);
 СкрытьОбъекты(Flag,False);
 S0.Visible=not Flag;
 УпрНастр=Flag;
 if Flag=True: Template.Field="НастрЗакр"; Template.Frame=1; fi;
end;

Proc Инициализация;
var Obj:Object;
var s,r,rr,c,cc,n,l,bgColor:i;
var Field:S;
 ClearVariable(BufField);
 ClearVariable(BufColorBg);
 ClearVariable(BufColorFo);
 for s=1..nS do
  if not s=6 or not Раздел2=0:
     if FindObject("S"+Str(s),Obj):
        rr=asInteger(Obj.RowsCount);
        cc=asInteger(Obj.ColsCount);
        for r=1 ..rr  do
         for c=1 ..cc  do
          BgColor=asInteger(Obj.Cell(r,c,CellBgColor,""));
          if BgColor=coAqua or BgColor=coTeal:
             Field=asString(Obj.Cell(r,c,CellContents,""));
             if SearchInArray(BufField,Field,True)=-1:
                n=InsertInArraySort(BufField,Field);
                InsertInArray(BufColorBg,n,BgColor);
             fi;
          fi;
         od;
        od;
     fi;
  fi;
 od;
 l=LengthOfArray(BufField);
 for n=1..l do
  if BufColorBg[n]=coTeal: BufColorFo[n]=coWhite;
    |True: BufColorFo[n]=coBlack;
  fi;
 od;
end;

Proc ПоказатьШапку(aТипДок:I; Flag:L);
 S1.Row(1,RowVisible,aТипДок=0); --СВЕДЕНИЯ №
 S1.Row(2,RowVisible,aТипДок=1); --ЗАЯВКА №
 S1.Row(3,RowVisible,aТипДок=2 and Flag); --ЗАЯВКА
 S1.Row(4,RowVisible,aТипДок=2 and not Flag); --ЗАЯВКА №
 --
 S2.Row(1,RowVisible,aТипДок=0);
 S2.Row(2,RowVisible,aТипДок=1);
 S2.Row(3,RowVisible,aТипДок=1);
 S2.Row(4,RowVisible,aТипДок=0);
 S2.Row(5,RowVisible,aТипДок=1);
 S2.Row(6,RowVisible,aТипДок=2);
 S2.Row(7,RowVisible,aТипДок=2);
 --
 S4.Column(5 ,ColVisible,Осн_ДокВид="2" or Осн_ДокВид="-");

 S9.Column(9 ,ColVisible,aТипДок=1); --Статус исполнения контракта
 S9.Row(4 ,RowHeight,if(f20140701 and ТипДок_=1,123,53)); --высота заголовка
 S9.Column(10,ColWidth,660-if(aТипДок=1,asInteger(S9.Column(9,ColWidth,"")),0));
 --
 S10.Column(4,ColVisible,aТипДок=1); --Новое значение
 S11.Column(4,ColVisible,aТипДок=1);
 S12.Column(4,ColVisible,aТипДок=1);
 --
 Ш1.Row(4,RowVisible,aТипДок=0);
 Ш1.Row(5,RowVisible,aТипДок=0 and f20140701);
 Ш1.Row(6,RowVisible,aТипДок=0 and f20140701);
 Ш1.Row(10,RowVisible,aТипДок=0 or aТипДок=2);
end;

Proc Оформление;
var s,c,r,cc,rr,n:i;
var Obj: Object;
var Field:S;
var Flag:L;
 Flag=ЕстьИзмДок and not Test="Test";
 cbУчитывать.Enabled=not isChild and not Рег and not Flag;
 cbУчетФК.Enabled=not isChild and not Рег and not Flag;
 cbВБанк.Enabled=not Рег;
 cbРег.Enabled=Учитывать;
 btnРегДата.Enabled=not Рег;
 edРегДата.Enabled=not Рег;
 edРегНомер.Enabled=not Рег;
 btnДокОсн.Visible=(not Договор=nil or not ДО=nil);
 btnGUID_FK.Enabled=not ВБанк and УчетФК;
 btnGUID_FK.Visible=(ТипДок=0 or overrideТипДок='0') and (fGUID_FK or GUID_FK_Разреш) and УчетФК;
 edGUID_FK.Visible=(ТипДок=0 or overrideТипДок='0') and (fGUID_FK or GUID_FK_Разреш) and УчетФК;
 btnКонтрольЛБО.Enabled=Учитывать;
 cbЗакрытьДок.Visible=Раб.Бюджет2005.Сетевая;
 for s=1..nS do
  if not s=6 or not Раздел2=0:
     if FindObject("S"+Str(s),Obj):
        rr=asInteger(Obj.RowsCount);
        cc=asInteger(Obj.ColsCount);
        for r=1 .. rr do
         for c=1 .. cc do
          Field=asString(Obj.Cell(r,c,CellContents,""));
          n=SearchInArray(BufField,Field,True);
          if not n=-1:
             if Статус:
                Obj.Cell(r,c,CellFontColor,coBlack);
                Obj.Cell(r,c,CellBgColor,coTransparent);
                Obj.Cell(r,c,CellReadOnly,True);
               else
                Obj.Cell(r,c,CellFontColor,BufColorFo[n]);
                Obj.Cell(r,c,CellBgColor,BufColorBg[n]);
                Obj.Cell(r,c,CellReadOnly,False);
             fi;
          fi;
         od;
        od;
        if s=11 or s=14: Obj.Row(2,RowVisible,ТипДок_=1); fi;
     fi;
  fi;
 od;
 ПоказатьШапку(ТипДок_,False);
 S4.Cell(6,13,CellFormat,if(setФорматР1_Гр9="0","0.####;;0","0.####;; "));
end;

Proc УдалитьПустыеСтроки;
var Iter:I;
 Iter=1;
 While Iter<=Раздел2 do
  if Раздел2[Iter].РеквП=nil:
     DeleteFrame(Расшифр,Iter);
    else
     Iter=Iter+1;
  fi;
 od;
 Iter=1;
 While Iter<=Расшифр do
  if Расшифр[Iter].ФАИП=nil and
     Расшифр[Iter].Ист="" and
     Расшифр[Iter].КБК="" and
     Предм[Iter]="" and
     Расшифр[Iter].Призн="" and
     Итог_Сум1[Iter]=0 and
     Расшифр[Iter].Сум2=0 and
     Расшифр[Iter].Сум3=0 and
     Расшифр[Iter].Сум4=0 and
     Расшифр[Iter].Сум5=0 and
     Расшифр[Iter].Сум6=0 and
     Расшифр[Iter].Примеч="": DeleteFrame(Расшифр,Iter);
    else
     Iter=Iter+1;
  fi;
 od;
end;

Func RoundПроцАв(Val:N):N;
var Pr:I;
 if setОкрПроцАв="": setОкрПроцАв="4"; fi;
 Pr=Abs(Int(setОкрПроцАв));
 if Pos("-",setОкрПроцАв)=0:
    ^Round(Val,Pr);
   else
    ^Trunc(Val,Abs(Pr));
 fi;
end;

Func СортРасшифр:I;
var Iter,z,zz,i,ii,crcПредм,crcПримеч:I;
var Key_:S;
var nul:L;
 ClearVariable(Key);
 ClearVariable(BufФАИП_Код);
 ClearVariable(BufФАИП_Наим1);
 ClearVariable(BufФАИП_Наим2);
 ClearVariable(BufФАИП_Наим3);
 ClearVariable(BufФАИП_Наим4);
 ClearVariable(BufИст);
 ClearVariable(BufКБК);
 ClearVariable(BufПредм1);
 ClearVariable(BufПредм2);
 ClearVariable(BufПредм3);
 ClearVariable(BufПредм4);
 ClearVariable(BufСум1_1);
 ClearVariable(BufСум1_2);
 ClearVariable(BufСум1_3);
 ClearVariable(BufСум1_4);
 ClearVariable(BufСум1_5);
 ClearVariable(BufСум1_6);
 ClearVariable(BufСум1_7);
 ClearVariable(BufСум1_8);
 ClearVariable(BufСум1_9);
 ClearVariable(BufСум1_10);
 ClearVariable(BufСум1_11);
 ClearVariable(BufСум1_12);
 ClearVariable(BufСум2);
 ClearVariable(BufСум3);
 ClearVariable(BufСум4);
 ClearVariable(BufСум5);
 ClearVariable(BufСум6);
 ClearVariable(BufИзм1_1);
 ClearVariable(BufИзм1_2);
 ClearVariable(BufИзм1_3);
 ClearVariable(BufИзм1_4);
 ClearVariable(BufИзм1_5);
 ClearVariable(BufИзм1_6);
 ClearVariable(BufИзм1_7);
 ClearVariable(BufИзм1_8);
 ClearVariable(BufИзм1_9);
 ClearVariable(BufИзм1_10);
 ClearVariable(BufИзм1_11);
 ClearVariable(BufИзм1_12);
 ClearVariable(BufИзм2);
 ClearVariable(BufИзм3);
 ClearVariable(BufИзм4);
 ClearVariable(BufИзм5);
 ClearVariable(BufИзм6);
 ClearVariable(BufПримеч);
 УдалитьПустыеСтроки;
 for Iter=1..Расшифр do
  crcПредм=Раб.CRC16.CRC16_(0,Расшифр[Iter].Предм1);
  crcПредм=Раб.CRC16.CRC16_(crcПредм,Расшифр[Iter].Предм2);
  crcПредм=Раб.CRC16.CRC16_(crcПредм,Расшифр[Iter].Предм3);
  crcПредм=Раб.CRC16.CRC16_(crcПредм,Расшифр[Iter].Предм4);
  crcПримеч=Раб.CRC16.CRC16_(0,Расшифр[Iter].Примеч);
  ii=if(not Расшифр[Iter].ФАИП.Код="" or (setПоказИтогФАИП and Iter=Расшифр),2,1);
  for i=1..ii do
   if i=1:
      Key_=Расшифр[Iter].ФАИП.Код+Расшифр[Iter].Ист+Расшифр[Iter].ТипКБК+Расшифр[Iter].КБК+Str16(crcПредм,4)+Str16(crcПримеч,4);
     else
      Key_=Расшифр[Iter].ФАИП.Код+"Z";
   fi;
   z=SearchInArray(Key,Key_,True);
   if z=-1:
      z=InsertInArraySort(Key,Key_);
      InsertInArray(BufФАИП_Код,z,Расшифр[Iter].ФАИП.Код);
      InsertInArray(BufФАИП_Наим1,z,if(i=1,Расшифр[Iter].ФАИП.Наим1,"Итого по коду объекта ФАИП"));
      InsertInArray(BufФАИП_Наим2,z,if(i=1,Расшифр[Iter].ФАИП.Наим2,""));
      InsertInArray(BufФАИП_Наим3,z,if(i=1,Расшифр[Iter].ФАИП.Наим3,""));
      InsertInArray(BufФАИП_Наим4,z,if(i=1,Расшифр[Iter].ФАИП.Наим4,""));
      InsertInArray(BufИст,z,if(i=1,Расшифр[Iter].Ист,"x"));
      InsertInArray(BufКБК,z,if(i=1,Расшифр[Iter].КБК,"x"));
      InsertInArray(BufПредм1,z,if(i=1,Расшифр[Iter].Предм1,"x"));
      InsertInArray(BufПредм2,z,if(i=1,Расшифр[Iter].Предм2,""));
      InsertInArray(BufПредм3,z,if(i=1,Расшифр[Iter].Предм3,""));
      InsertInArray(BufПредм4,z,if(i=1,Расшифр[Iter].Предм4,""));
      InsertInArray(BufСум1_1 ,z,if(i=1 or (i=2 and not BufФАИП_Код[z]=""),Расшифр[Iter].Сум1_1,0));
      InsertInArray(BufСум1_2 ,z,if(i=1 or (i=2 and not BufФАИП_Код[z]=""),Расшифр[Iter].Сум1_2,0));
      InsertInArray(BufСум1_3 ,z,if(i=1 or (i=2 and not BufФАИП_Код[z]=""),Расшифр[Iter].Сум1_3,0));
      InsertInArray(BufСум1_4 ,z,if(i=1 or (i=2 and not BufФАИП_Код[z]=""),Расшифр[Iter].Сум1_4,0));
      InsertInArray(BufСум1_5 ,z,if(i=1 or (i=2 and not BufФАИП_Код[z]=""),Расшифр[Iter].Сум1_5,0));
      InsertInArray(BufСум1_6 ,z,if(i=1 or (i=2 and not BufФАИП_Код[z]=""),Расшифр[Iter].Сум1_6,0));
      InsertInArray(BufСум1_7 ,z,if(i=1 or (i=2 and not BufФАИП_Код[z]=""),Расшифр[Iter].Сум1_7,0));
      InsertInArray(BufСум1_8 ,z,if(i=1 or (i=2 and not BufФАИП_Код[z]=""),Расшифр[Iter].Сум1_8,0));
      InsertInArray(BufСум1_9 ,z,if(i=1 or (i=2 and not BufФАИП_Код[z]=""),Расшифр[Iter].Сум1_9,0));
      InsertInArray(BufСум1_10,z,if(i=1 or (i=2 and not BufФАИП_Код[z]=""),Расшифр[Iter].Сум1_10,0));
      InsertInArray(BufСум1_11,z,if(i=1 or (i=2 and not BufФАИП_Код[z]=""),Расшифр[Iter].Сум1_11,0));
      InsertInArray(BufСум1_12,z,if(i=1 or (i=2 and not BufФАИП_Код[z]=""),Расшифр[Iter].Сум1_12,0));
      InsertInArray(BufСум2   ,z,if(i=1 or (i=2 and not BufФАИП_Код[z]=""),Расшифр[Iter].Сум2,0));
      InsertInArray(BufСум3   ,z,if(i=1 or (i=2 and not BufФАИП_Код[z]=""),Расшифр[Iter].Сум3,0));
      InsertInArray(BufСум4   ,z,if(i=1 or (i=2 and not BufФАИП_Код[z]=""),Расшифр[Iter].Сум4,0));
      InsertInArray(BufСум5   ,z,if(i=1 or (i=2 and not BufФАИП_Код[z]=""),Расшифр[Iter].Сум5,0));
      InsertInArray(BufСум6   ,z,if(i=1 or (i=2 and not BufФАИП_Код[z]=""),Расшифр[Iter].Сум6,0));
      InsertInArray(BufИзм1_1 ,z,if(i=1 or (i=2 and not BufФАИП_Код[z]=""),Изм1_1[Iter],0));
      InsertInArray(BufИзм1_2 ,z,if(i=1 or (i=2 and not BufФАИП_Код[z]=""),Изм1_2[Iter],0));
      InsertInArray(BufИзм1_3 ,z,if(i=1 or (i=2 and not BufФАИП_Код[z]=""),Изм1_3[Iter],0));
      InsertInArray(BufИзм1_4 ,z,if(i=1 or (i=2 and not BufФАИП_Код[z]=""),Изм1_4[Iter],0));
      InsertInArray(BufИзм1_5 ,z,if(i=1 or (i=2 and not BufФАИП_Код[z]=""),Изм1_5[Iter],0));
      InsertInArray(BufИзм1_6 ,z,if(i=1 or (i=2 and not BufФАИП_Код[z]=""),Изм1_6[Iter],0));
      InsertInArray(BufИзм1_7 ,z,if(i=1 or (i=2 and not BufФАИП_Код[z]=""),Изм1_7[Iter],0));
      InsertInArray(BufИзм1_8 ,z,if(i=1 or (i=2 and not BufФАИП_Код[z]=""),Изм1_8[Iter],0));
      InsertInArray(BufИзм1_9 ,z,if(i=1 or (i=2 and not BufФАИП_Код[z]=""),Изм1_9[Iter],0));
      InsertInArray(BufИзм1_10,z,if(i=1 or (i=2 and not BufФАИП_Код[z]=""),Изм1_10[Iter],0));
      InsertInArray(BufИзм1_11,z,if(i=1 or (i=2 and not BufФАИП_Код[z]=""),Изм1_11[Iter],0));
      InsertInArray(BufИзм1_12,z,if(i=1 or (i=2 and not BufФАИП_Код[z]=""),Изм1_12[Iter],0));
      InsertInArray(BufИзм2   ,z,if(i=1 or (i=2 and not BufФАИП_Код[z]=""),Изм2[Iter],0));
      InsertInArray(BufИзм3   ,z,if(i=1 or (i=2 and not BufФАИП_Код[z]=""),Изм3[Iter],0));
      InsertInArray(BufИзм4   ,z,if(i=1 or (i=2 and not BufФАИП_Код[z]=""),Изм4[Iter],0));
      InsertInArray(BufИзм5   ,z,if(i=1 or (i=2 and not BufФАИП_Код[z]=""),Изм5[Iter],0));
      InsertInArray(BufИзм6   ,z,if(i=1 or (i=2 and not BufФАИП_Код[z]=""),Изм6[Iter],0));
      --InsertInArray(BufПримеч,z,Расшифр[Iter].Примеч);
      InsertInArray(BufПримеч,z,if(i=1,Расшифр[Iter].Примеч,""));
     else
      if i=1 or (i=2 and not BufФАИП_Код[z]=""):
         BufСум1_1 [z]=BufСум1_1 [z]+Расшифр[Iter].Сум1_1;
         BufСум1_2 [z]=BufСум1_2 [z]+Расшифр[Iter].Сум1_2;
         BufСум1_3 [z]=BufСум1_3 [z]+Расшифр[Iter].Сум1_3;
         BufСум1_4 [z]=BufСум1_4 [z]+Расшифр[Iter].Сум1_4;
         BufСум1_5 [z]=BufСум1_5 [z]+Расшифр[Iter].Сум1_5;
         BufСум1_6 [z]=BufСум1_6 [z]+Расшифр[Iter].Сум1_6;
         BufСум1_7 [z]=BufСум1_7 [z]+Расшифр[Iter].Сум1_7;
         BufСум1_8 [z]=BufСум1_8 [z]+Расшифр[Iter].Сум1_8;
         BufСум1_9 [z]=BufСум1_9 [z]+Расшифр[Iter].Сум1_9;
         BufСум1_10[z]=BufСум1_10[z]+Расшифр[Iter].Сум1_10;
         BufСум1_11[z]=BufСум1_11[z]+Расшифр[Iter].Сум1_11;
         BufСум1_12[z]=BufСум1_12[z]+Расшифр[Iter].Сум1_12;
         BufСум2   [z]=BufСум2   [z]+Расшифр[Iter].Сум2;
         BufСум3   [z]=BufСум3   [z]+Расшифр[Iter].Сум3;
         BufСум4   [z]=BufСум4   [z]+Расшифр[Iter].Сум4;
         BufСум5   [z]=BufСум5   [z]+Расшифр[Iter].Сум5;
         BufСум6   [z]=BufСум6   [z]+Расшифр[Iter].Сум6;
         BufИзм1_1 [z]=BufИзм1_1 [z]+Изм1_1[Iter];
         BufИзм1_2 [z]=BufИзм1_2 [z]+Изм1_2[Iter];
         BufИзм1_3 [z]=BufИзм1_3 [z]+Изм1_3[Iter];
         BufИзм1_4 [z]=BufИзм1_4 [z]+Изм1_4[Iter];
         BufИзм1_5 [z]=BufИзм1_5 [z]+Изм1_5[Iter];
         BufИзм1_6 [z]=BufИзм1_6 [z]+Изм1_6[Iter];
         BufИзм1_7 [z]=BufИзм1_7 [z]+Изм1_7[Iter];
         BufИзм1_8 [z]=BufИзм1_8 [z]+Изм1_8[Iter];
         BufИзм1_9 [z]=BufИзм1_9 [z]+Изм1_9[Iter];
         BufИзм1_10[z]=BufИзм1_10[z]+Изм1_10[Iter];
         BufИзм1_11[z]=BufИзм1_11[z]+Изм1_11[Iter];
         BufИзм1_12[z]=BufИзм1_12[z]+Изм1_12[Iter];
         BufИзм2   [z]=BufИзм2   [z]+Изм2[Iter];
         BufИзм3   [z]=BufИзм3   [z]+Изм3[Iter];
         BufИзм4   [z]=BufИзм4   [z]+Изм4[Iter];
         BufИзм5   [z]=BufИзм5   [z]+Изм5[Iter];
         BufИзм6   [z]=BufИзм6   [z]+Изм6[Iter];
      fi;
   fi;
  od;
 od;
 zz=LengthOfArray(Key);
 if ТипДок_=1:
    nul=True;
    for z=1..zz do
     if Round(BufСум1_1[z],2)<>0 or Round(BufСум1_2[z],2)<>0 or Round(BufСум1_3[z],2)<>0 or Round(BufСум1_4[z],2)<>0 or Round(BufСум1_5[z],2)<>0 or Round(BufСум1_6[z],2)<>0 or Round(BufСум1_7[z],2)<>0 or Round(BufСум1_8[z],2)<>0 or Round(BufСум1_9[z],2)<>0 or Round(BufСум1_10[z],2)<>0 or Round(BufСум1_11[z],2)<>0 or Round(BufСум1_12[z],2)<>0 or Round(BufСум2[z],2)<>0 or Round(BufСум3[z],2)<>0 or Round(BufСум4[z],2)<>0 or Round(BufСум5[z],2)<>0 or Round(BufСум6[z],2)<>0:
        nul=false;
        Break;
     fi;
    od;
 fi;
 z=1;
 While z<=zz do
  if Round(BufСум1_1[z],2)<>0 or Round(BufСум1_2[z],2)<>0 or Round(BufСум1_3[z],2)<>0 or Round(BufСум1_4[z],2)<>0 or Round(BufСум1_5[z],2)<>0 or Round(BufСум1_6[z],2)<>0 or Round(BufСум1_7[z],2)<>0 or Round(BufСум1_8[z],2)<>0 or Round(BufСум1_9[z],2)<>0 or Round(BufСум1_10[z],2)<>0 or Round(BufСум1_11[z],2)<>0 or Round(BufСум1_12[z],2)<>0 or Round(BufСум2[z],2)<>0 or Round(BufСум3[z],2)<>0 or Round(BufСум4[z],2)<>0 or Round(BufСум5[z],2)<>0 or Round(BufСум6[z],2)<>0 or
     ((Round(BufИзм1_1[z],2)<>0 or Round(BufИзм1_2[z],2)<>0 or Round(BufИзм1_3[z],2)<>0 or Round(BufИзм1_4[z],2)<>0 or Round(BufИзм1_5[z],2)<>0 or Round(BufИзм1_6[z],2)<>0 or Round(BufИзм1_7[z],2)<>0 or Round(BufИзм1_8[z],2)<>0 or Round(BufИзм1_9[z],2)<>0 or Round(BufИзм1_10[z],2)<>0 or Round(BufИзм1_11[z],2)<>0 or Round(BufИзм1_12[z],2)<>0 or Round(BufИзм2[z],2)<>0 or Round(BufИзм3[z],2)<>0 or Round(BufИзм4[z],2)<>0 or Round(BufИзм5[z],2)<>0 or Round(BufИзм6[z],2)<>0) and ТипДок_=1 and (setВариантР5=0 or Round(Осн_ДокСум,2)=0)) or
     (z=zz and BufФАИП_Наим1[z]="Итого по коду объекта ФАИП" and BufФАИП_Код[z]="" and setПоказИтогФАИП) or 
     (ТипДок_=1 and (Доп_Статус="2" or nul)):
     z=z+1;
    else
     DeleteFromArray(Key,z);
     DeleteFromArray(BufФАИП_Код,z);
     DeleteFromArray(BufФАИП_Наим1,z);
     DeleteFromArray(BufФАИП_Наим2,z);
     DeleteFromArray(BufФАИП_Наим3,z);
     DeleteFromArray(BufФАИП_Наим4,z);
     DeleteFromArray(BufИст,z);
     DeleteFromArray(BufКБК,z);
     DeleteFromArray(BufПредм1,z);
     DeleteFromArray(BufПредм2,z);
     DeleteFromArray(BufПредм3,z);
     DeleteFromArray(BufПредм4,z);
     DeleteFromArray(BufСум1_1,z);
     DeleteFromArray(BufСум1_2,z);
     DeleteFromArray(BufСум1_3,z);
     DeleteFromArray(BufСум1_4,z);
     DeleteFromArray(BufСум1_5,z);
     DeleteFromArray(BufСум1_6,z);
     DeleteFromArray(BufСум1_7,z);
     DeleteFromArray(BufСум1_8,z);
     DeleteFromArray(BufСум1_9,z);
     DeleteFromArray(BufСум1_10,z);
     DeleteFromArray(BufСум1_11,z);
     DeleteFromArray(BufСум1_12,z);
     DeleteFromArray(BufСум2,z);
     DeleteFromArray(BufСум3,z);
     DeleteFromArray(BufСум4,z);
     DeleteFromArray(BufСум5,z);
     DeleteFromArray(BufСум6,z);
     DeleteFromArray(BufИзм1_1,z);
     DeleteFromArray(BufИзм1_2,z);
     DeleteFromArray(BufИзм1_3,z);
     DeleteFromArray(BufИзм1_4,z);
     DeleteFromArray(BufИзм1_5,z);
     DeleteFromArray(BufИзм1_6,z);
     DeleteFromArray(BufИзм1_7,z);
     DeleteFromArray(BufИзм1_8,z);
     DeleteFromArray(BufИзм1_9,z);
     DeleteFromArray(BufИзм1_10,z);
     DeleteFromArray(BufИзм1_11,z);
     DeleteFromArray(BufИзм1_12,z);
     DeleteFromArray(BufИзм2,z);
     DeleteFromArray(BufИзм3,z);
     DeleteFromArray(BufИзм4,z);
     DeleteFromArray(BufИзм5,z);
     DeleteFromArray(BufИзм6,z);
     DeleteFromArray(BufПримеч,z);
     zz=zz-1;
   fi;
 od;
 ^LengthOfArray(Key);
end;

Func Str4Word (Val1:S; Val2:S; Val3:S; Val4:S):I;
var l1,l2,l3,l4,p:i;
var ch,tmp:S;
 ClearVariable(BufWord);
 l1=Length(Val1);
 l2=Length(Val2);
 l3=Length(Val3);
 l4=Length(Val4);
 tmp="";
 for p=1..l1+l2+l3+l4 do
  if p<=l1: ch=SubStr(Val1,p,1); 
    |p<=l1+l2: ch=SubStr(Val2,p-l1,1);
    |p<=l1+l2+l3: ch=SubStr(Val3,p-l1-l2,1);
    |True: ch=SubStr(Val4,p-l1-l2-l3,1);
  fi;
  if ch=" ":
     AddInArray(BufWord,False,True,tmp);
     tmp="";
    else
     tmp=tmp+ch;
  fi;
 od;
 AddInArray(BufWord,False,True,tmp);
 ^LengthOfArray(BufWord);
end;

Func Отрисовать1024 (Obj: Object; Row:I; Col:I; Val1:S; Val2:S; Val3:S; Val4:S):I;
var w,ww,row0,s,ss:i;
var Res:S;
 Row0=Row;
 ClearVariable(BufStr);
 ww=Str4Word(Val1,Val2,Val3,Val4);
 ss=1;
 for w=1..ww do
  if AsInteger(Obj.Cell(Row,Col,CellLinesCount,Trim(BufStr[ss]+" "+BufWord[w])))=1:
     BufStr[ss]=Trim(BufStr[ss]+" "+BufWord[w]);
    else
     ss=ss+1;
     BufStr[ss]=BufWord[w];
  fi;
 od;
 Res=BufStr[1];
 for s=2..ss do
  if Length(Res)+Length(BufStr[s])+1>255:
     Obj.Cell(Row,Col,CellFieldType,cftStaticText);
     Obj.Cell(Row,Col,CellContents,Res,True);
     Obj.Cell(Row,Col,CellAlignment,0);
     Obj.Cell(Row,Col,CellBorder,"1,0,1,0");
     Obj.CellLinks(Col,Row,Col,Row); --Вызываем перерисовку!
     row=row+1;
     res=BufStr[s];
    else
     res=res+" "+BufStr[s];
  fi;
 od;
 Obj.Cell(Row,Col,CellFieldType,cftStaticText);
 Obj.Cell(Row,Col,CellContents,Res,True);
 Obj.Cell(Row,Col,CellAlignment,0);
 Obj.Cell(Row,Col,CellBorder,"1,0,1,1");
 Obj.CellLinks(Col,Row,Col,Row); --Вызываем перерисовку!
 ^row-row0;
end;


Func ВысотаОбласти (S1: S; r1:I; S2: S; r2:i): I;
var Obj1,Obj2:Object;
var y1,y2:i;
 if not FindObject(S1,Obj1): Message("Секция '"+s1+"' не найдена",mtError); ^0; fi;
 if not FindObject(S2,Obj2): Message("Секция '"+s2+"' не найдена",mtError); ^0; fi;
 y1=AsInteger(Obj1.Row(r1,RowTop,""));
 y2=AsInteger(Obj2.Row(r2,RowTop,""));
 ^y2-y1;
end;

Func ДобавитьТитулВ1(Obj: Object; r:i):I;
var c,v:i;
 v=if(ver<11,0,-1);
 if r+4>AsInteger(Obj.RowsCount): Obj.RowsCount=AsInteger(Obj.RowsCount)+100; fi;
 Pages=Pages+1;
 Obj.Row(r,RowNewPage,True);
 y0=AsInteger(Obj.Row(r,RowTop,""));  --начальная координата текущего листа (задаем каждый раз когда начинаем новую страницу)
 c=1;     Obj.Cell(r,c,CellBorder,"0,0,0,0"); Obj.Cell(r,c,CellAlignment,1); Obj.Cell(r,c,CellFieldType,cftStaticText); Obj.Cell(r,c,CellContents,Форма,True);
          Obj.CellLinks(1,r,17+v,r);
          r=r+1;
 c=1;     Obj.Cell(r,c,CellBorder,"0,0,0,0"); Obj.Cell(r,c,CellAlignment,1); Obj.Cell(r,c,CellFieldType,cftStaticText); Obj.Cell(r,c,CellContents,НаимФорма,True);
          Obj.CellLinks(1,r,14+v,r);
 c=15+v;  Obj.Cell(r,c,CellBorder,"0,0,0,1"); Obj.Cell(r,c,CellAlignment,0); Obj.Cell(r,c,CellFieldType,cftStaticText); Obj.Cell(r,c,CellContents,НД,True);
          Obj.CellLinks(15+v,r,17+v,r);
          r=r+1;
 c=1;     Obj.Cell(r,c,CellBorder,"0,0,0,0"); Obj.Cell(r,c,CellAlignment,1); Obj.Cell(r,c,CellFieldType,cftStaticText); Obj.Cell(r,c,CellContents,'от "',True);
          Obj.CellLinks(1,r,12+v,r);
 c=13+v;  Obj.Cell(r,c,CellBorder,"0,0,0,1"); Obj.Cell(r,c,CellAlignment,2); Obj.Cell(r,c,CellFieldType,cftStaticText); Obj.Cell(r,c,CellContents,Format("%.2D",Day(ДД)),True);
 c=14+v;  Obj.Cell(r,c,CellBorder,"0,0,0,0"); Obj.Cell(r,c,CellAlignment,0); Obj.Cell(r,c,CellFieldType,cftStaticText); Obj.Cell(r,c,CellContents,'"',True);
 c=15+v;  Obj.Cell(r,c,CellBorder,"0,0,0,1"); Obj.Cell(r,c,CellAlignment,0); Obj.Cell(r,c,CellFieldType,cftStaticText); Obj.Cell(r,c,CellContents,Месяца(Mon(ДД))+" "+Str(Year(ДД))+" г.",True);
          Obj.CellLinks(15+v,r,17+v,r);
          r=r+1;
 c=1;     Obj.Cell(r,c,CellBorder,"0,0,0,0"); Obj.Cell(r,c,CellAlignment,0); Obj.Cell(r,c,CellFieldType,cftStaticText); Obj.Cell(r,c,CellContents,"",True); Obj.Cell(r,c,CellFontSize,1);
          Obj.CellLinks(1,r,17+v,r);
          Obj.Row(r,RowHeight,10);
 ^r;
end;

Func ДобавитьТитулВ2(Obj: Object; r:i):I;
var c,v:i;
 v=if(ver<11,0,1);
 if r+4>AsInteger(Obj.RowsCount): Obj.RowsCount=AsInteger(Obj.RowsCount)+100; fi;
 Pages=Pages+1;
 Obj.Row(r,RowNewPage,True);
 y0=AsInteger(Obj.Row(r,RowTop,""));  --начальная координата текущего листа (задаем каждый раз когда начинаем новую страницу)
 c=1;    Obj.Cell(r,c,CellBorder,"0,0,0,0"); Obj.Cell(r,c,CellAlignment,1); Obj.Cell(r,c,CellFieldType,cftStaticText); Obj.Cell(r,c,CellContents,Форма,True);
         Obj.CellLinks(1,r,15+v,r);
         r=r+1;
 c=1;    Obj.Cell(r,c,CellBorder,"0,0,0,0"); Obj.Cell(r,c,CellAlignment,1); Obj.Cell(r,c,CellFieldType,cftStaticText); Obj.Cell(r,c,CellContents,НаимФорма,True);
         Obj.CellLinks(1,r,12+v,r);
 c=13+v; Obj.Cell(r,c,CellBorder,"0,0,0,1"); Obj.Cell(r,c,CellAlignment,0); Obj.Cell(r,c,CellFieldType,cftStaticText); Obj.Cell(r,c,CellContents,НД,True);
         Obj.CellLinks(13+v,r,15+v,r);
         r=r+1;
 c=1;    Obj.Cell(r,c,CellBorder,"0,0,0,0"); Obj.Cell(r,c,CellAlignment,1); Obj.Cell(r,c,CellFieldType,cftStaticText); Obj.Cell(r,c,CellContents,'от "',True);
         Obj.CellLinks(1,r,10+v,r);
 c=11+v; Obj.Cell(r,c,CellBorder,"0,0,0,1"); Obj.Cell(r,c,CellAlignment,2); Obj.Cell(r,c,CellFieldType,cftStaticText); Obj.Cell(r,c,CellContents,Format("%.2D",Day(ДД)),True);
 c=12+v; Obj.Cell(r,c,CellBorder,"0,0,0,0"); Obj.Cell(r,c,CellAlignment,0); Obj.Cell(r,c,CellFieldType,cftStaticText); Obj.Cell(r,c,CellContents,'"',True);
 c=13+v; Obj.Cell(r,c,CellBorder,"0,0,0,1"); Obj.Cell(r,c,CellAlignment,0); Obj.Cell(r,c,CellFieldType,cftStaticText); Obj.Cell(r,c,CellContents,Месяца(Mon(ДД))+" "+Str(Year(ДД))+" г.",True);
         Obj.CellLinks(13+v,r,15+v,r);
         r=r+1;
 c=1;    Obj.Cell(r,c,CellBorder,"0,0,0,0"); Obj.Cell(r,c,CellAlignment,0); Obj.Cell(r,c,CellFieldType,cftStaticText); Obj.Cell(r,c,CellContents,"",True); Obj.Cell(r,c,CellFontSize,1);
         Obj.CellLinks(1,r,15+v,r);
         Obj.Row(r,RowHeight,10);
 ^r;
end;

Func ДобавитьШапку1 (Obj: Object; r:i):I;
var c:i;
 if r+1>AsInteger(Obj.RowsCount): Obj.RowsCount=AsInteger(Obj.RowsCount)+100; fi;
 c=1;   Obj.Cell(r,c,CellBorder,"0,1,1,1"); Obj.Cell(r,c,CellAlignment,2); Obj.Cell(r,c,CellFieldType,cftStaticText); Obj.Cell(r,c,CellContents,Str(c),True);
 c=c+1; Obj.Cell(r,c,CellBorder,"1,1,1,2"); Obj.Cell(r,c,CellAlignment,2); Obj.Cell(r,c,CellFieldType,cftStaticText); Obj.Cell(r,c,CellContents,Str(c),True);
 c=c+1; Obj.Cell(r,c,CellBorder,"1,1,1,2"); Obj.Cell(r,c,CellAlignment,2); Obj.Cell(r,c,CellFieldType,cftStaticText); Obj.Cell(r,c,CellContents,Str(c),True);
 c=c+1; Obj.Cell(r,c,CellBorder,"1,1,1,2"); Obj.Cell(r,c,CellAlignment,2); Obj.Cell(r,c,CellFieldType,cftStaticText); Obj.Cell(r,c,CellContents,Str(c),True);
 c=c+1; Obj.Cell(r,c,CellBorder,"1,1,1,2"); Obj.Cell(r,c,CellAlignment,2); Obj.Cell(r,c,CellFieldType,cftStaticText); Obj.Cell(r,c,CellContents,Str(c),True);
 if ver<11:
    c=c+1; Obj.Cell(r,c,CellBorder,"1,1,1,2"); Obj.Cell(r,c,CellAlignment,2); Obj.Cell(r,c,CellFieldType,cftStaticText); Obj.Cell(r,c,CellContents,Str(c),True);
    c=c+1; Obj.Cell(r,c,CellBorder,"1,1,1,2"); Obj.Cell(r,c,CellAlignment,2); Obj.Cell(r,c,CellFieldType,cftStaticText); Obj.Cell(r,c,CellContents,Str(c),True);
 fi;
 c=c+1; Obj.Cell(r,c,CellBorder,"1,1,1,2"); Obj.Cell(r,c,CellAlignment,2); Obj.Cell(r,c,CellFieldType,cftStaticText); Obj.Cell(r,c,CellContents,Str(c),True);
 c=c+1; Obj.Cell(r,c,CellBorder,"1,1,1,2"); Obj.Cell(r,c,CellAlignment,2); Obj.Cell(r,c,CellFieldType,cftStaticText); Obj.Cell(r,c,CellContents,Str(c),True);
 c=c+1; Obj.Cell(r,c,CellBorder,"1,1,1,2"); Obj.Cell(r,c,CellAlignment,2); Obj.Cell(r,c,CellFieldType,cftStaticText); Obj.Cell(r,c,CellContents,Str(c),True);
 c=c+1; Obj.Cell(r,c,CellBorder,"1,1,1,2"); Obj.Cell(r,c,CellAlignment,2); Obj.Cell(r,c,CellFieldType,cftStaticText); Obj.Cell(r,c,CellContents,Str(c),True);
 c=c+1; Obj.Cell(r,c,CellBorder,"1,1,1,2"); Obj.Cell(r,c,CellAlignment,2); Obj.Cell(r,c,CellFieldType,cftStaticText); Obj.Cell(r,c,CellContents,Str(c),True);
 if ver<11:
    c=13; Obj.Cell(r,c,CellBorder,"1,1,1,2"); Obj.Cell(r,c,CellAlignment,2); Obj.Cell(r,c,CellFieldType,cftStaticText); Obj.Cell(r,c,CellContents,"13",True);
          Obj.CellLinks(13,r,15,r);
    c=16; Obj.Cell(r,c,CellBorder,"1,1,0,2"); Obj.Cell(r,c,CellAlignment,2); Obj.Cell(r,c,CellFieldType,cftStaticText); Obj.Cell(r,c,CellContents,"14",True);
          Obj.CellLinks(16,r,17,r);
   else
    c=c+1;Obj.Cell(r,c,CellBorder,"1,1,1,2"); Obj.Cell(r,c,CellAlignment,2); Obj.Cell(r,c,CellFieldType,cftStaticText); Obj.Cell(r,c,CellContents,Str(c),True);
    c=12; Obj.Cell(r,c,CellBorder,"1,1,1,2"); Obj.Cell(r,c,CellAlignment,2); Obj.Cell(r,c,CellFieldType,cftStaticText); Obj.Cell(r,c,CellContents,"12",True);
          Obj.CellLinks(12,r,14,r);
    c=15; Obj.Cell(r,c,CellBorder,"1,1,0,2"); Obj.Cell(r,c,CellAlignment,2); Obj.Cell(r,c,CellFieldType,cftStaticText); Obj.Cell(r,c,CellContents,"13",True);
          Obj.CellLinks(15,r,16,r);
 fi;
 ^r;
end;

Func ДобавитьШапку2 (Obj: Object; r:i):I;
var c,v,i:i;
 v=if(ver<11,0,1);
 if r+1>AsInteger(Obj.RowsCount): Obj.RowsCount=AsInteger(Obj.RowsCount)+100; fi;
 i=if(ver<11,1,14);
 c=1;   Obj.Cell(r,c,CellBorder,"0,1,1,"+Str(1+v)); Obj.Cell(r,c,CellAlignment,2); Obj.Cell(r,c,CellFieldType,cftStaticText); Obj.Cell(r,c,CellContents,Str(i),True); i=15;
 if ver>=11:
    c=c+1; Obj.Cell(r,c,CellBorder,"1,1,1,2"); Obj.Cell(r,c,CellAlignment,2); Obj.Cell(r,c,CellFieldType,cftStaticText); Obj.Cell(r,c,CellContents,Str(i),True); i=i+1;
 fi;
 c=c+1; Obj.Cell(r,c,CellBorder,"1,1,1,2"); Obj.Cell(r,c,CellAlignment,2); Obj.Cell(r,c,CellFieldType,cftStaticText); Obj.Cell(r,c,CellContents,Str(i),True); i=i+1;
 c=c+1; Obj.Cell(r,c,CellBorder,"1,1,1,2"); Obj.Cell(r,c,CellAlignment,2); Obj.Cell(r,c,CellFieldType,cftStaticText); Obj.Cell(r,c,CellContents,Str(i),True); i=i+1;
 c=c+1; Obj.Cell(r,c,CellBorder,"1,1,1,2"); Obj.Cell(r,c,CellAlignment,2); Obj.Cell(r,c,CellFieldType,cftStaticText); Obj.Cell(r,c,CellContents,Str(i),True); i=i+1;
 c=c+1; Obj.Cell(r,c,CellBorder,"1,1,1,2"); Obj.Cell(r,c,CellAlignment,2); Obj.Cell(r,c,CellFieldType,cftStaticText); Obj.Cell(r,c,CellContents,Str(i),True); i=i+1;
 c=c+1; Obj.Cell(r,c,CellBorder,"1,1,1,2"); Obj.Cell(r,c,CellAlignment,2); Obj.Cell(r,c,CellFieldType,cftStaticText); Obj.Cell(r,c,CellContents,Str(i),True); i=i+1;
 c=c+1; Obj.Cell(r,c,CellBorder,"1,1,1,2"); Obj.Cell(r,c,CellAlignment,2); Obj.Cell(r,c,CellFieldType,cftStaticText); Obj.Cell(r,c,CellContents,Str(i),True); i=i+1;
 c=c+1; Obj.Cell(r,c,CellBorder,"1,1,1,2"); Obj.Cell(r,c,CellAlignment,2); Obj.Cell(r,c,CellFieldType,cftStaticText); Obj.Cell(r,c,CellContents,Str(i),True); i=i+1;
 c=c+1; Obj.Cell(r,c,CellBorder,"1,1,1,2"); Obj.Cell(r,c,CellAlignment,2); Obj.Cell(r,c,CellFieldType,cftStaticText); Obj.Cell(r,c,CellContents,Str(i),True); i=i+1;
 c=c+1; Obj.Cell(r,c,CellBorder,"1,1,"+Str(1-v)+",2"); Obj.Cell(r,c,CellAlignment,2); Obj.Cell(r,c,CellFieldType,cftStaticText); Obj.Cell(r,c,CellContents,Str(i),True); i=i+1;
        Obj.CellLinks(10+v,r,15+v,r);
 ^r;
end;

Func ДобавитьСтроку1 (Obj: Object; r:i; n:i):I;
var c,v,rd:i;
var val:S;
 v=if(ver<11,0,-1);
 if r+6>AsInteger(Obj.RowsCount): Obj.RowsCount=AsInteger(Obj.RowsCount)+100; fi;  --Отрисовка может довать 5 строк
 if ver<11:
    val=Str(n);
   else
    val=BufФАИП_Наим1[n]+BufФАИП_Наим2[n]+BufФАИП_Наим3[n]+BufФАИП_Наим4[n];
 fi;
 c=1;   Obj.Cell(r,c,CellBorder,"0,1,1,1"); Obj.Cell(r,c,CellAlignment,0); Obj.Cell(r,c,CellFieldType,cftStaticText); Obj.Cell(r,c,CellContents,val,True);
 if ver<11:
    val="2,1,1,1";
   else
    c=c+1; Obj.Cell(r,c,CellBorder,"2,1,1,1"); Obj.Cell(r,c,CellAlignment,2); Obj.Cell(r,c,CellFieldType,cftStaticText); Obj.Cell(r,c,CellContents,BufФАИП_Код[n],True);
    val="1,1,1,1";
 fi;
 c=c+1; Obj.Cell(r,c,CellBorder,   val   ); Obj.Cell(r,c,CellAlignment,2); Obj.Cell(r,c,CellFieldType,cftStaticText); Obj.Cell(r,c,CellContents,if(BufИст[n]="1":"средства бюджета"|BufИст[n]="2":"средства от приносящей доход деятельности"|BufИст[n]="3":"средств дополнительного бюджетного финансирования"|true:BufИст[n]),True);
 c=c+1; Obj.Cell(r,c,CellBorder,"1,1,1,1"); Obj.Cell(r,c,CellAlignment,2); Obj.Cell(r,c,CellFieldType,cftStaticText); Obj.Cell(r,c,CellContents,BufКБК[n],True);
 if Length(BufПредм1[n])+Length(BufПредм2[n])+Length(BufПредм3[n])+Length(BufПредм4[n])<=255:
    c=c+1; Obj.Cell(r,c,CellBorder,"1,1,1,1"); Obj.Cell(r,c,CellAlignment,0); Obj.Cell(r,c,CellFieldType,cftStaticText); Obj.Cell(r,c,CellContents,BufПредм1[n]+BufПредм2[n]+BufПредм3[n]+BufПредм4[n],True);
    rd=0;
   else
    c=c+1; rd=Отрисовать1024(Obj,r,c,BufПредм1[n],BufПредм2[n],BufПредм3[n],BufПредм4[n]);
 fi;
 c=c+1; Obj.Cell(r,c,CellBorder,"1,1,1,1"); Obj.Cell(r,c,CellAlignment,1); Obj.Cell(r,c,CellFieldType,cftStaticText); Obj.Cell(r,c,CellContents,if(Round(BufСум1_1[n],2)=0,"0",Format("%.2F",BufСум1_1[n])),True);
 c=c+1; Obj.Cell(r,c,CellBorder,"1,1,1,1"); Obj.Cell(r,c,CellAlignment,1); Obj.Cell(r,c,CellFieldType,cftStaticText); Obj.Cell(r,c,CellContents,if(Round(BufСум1_2[n],2)=0,"0",Format("%.2F",BufСум1_2[n])),True);
 c=c+1; Obj.Cell(r,c,CellBorder,"1,1,1,1"); Obj.Cell(r,c,CellAlignment,1); Obj.Cell(r,c,CellFieldType,cftStaticText); Obj.Cell(r,c,CellContents,if(Round(BufСум1_3[n],2)=0,"0",Format("%.2F",BufСум1_3[n])),True);
 c=c+1; Obj.Cell(r,c,CellBorder,"1,1,1,1"); Obj.Cell(r,c,CellAlignment,1); Obj.Cell(r,c,CellFieldType,cftStaticText); Obj.Cell(r,c,CellContents,if(Round(BufСум1_4[n],2)=0,"0",Format("%.2F",BufСум1_4[n])),True);
 c=c+1; Obj.Cell(r,c,CellBorder,"1,1,1,1"); Obj.Cell(r,c,CellAlignment,1); Obj.Cell(r,c,CellFieldType,cftStaticText); Obj.Cell(r,c,CellContents,if(Round(BufСум1_5[n],2)=0,"0",Format("%.2F",BufСум1_5[n])),True);
 c=c+1; Obj.Cell(r,c,CellBorder,"1,1,1,1"); Obj.Cell(r,c,CellAlignment,1); Obj.Cell(r,c,CellFieldType,cftStaticText); Obj.Cell(r,c,CellContents,if(Round(BufСум1_6[n],2)=0,"0",Format("%.2F",BufСум1_6[n])),True);
 if ver<11:
    c=c+1; Obj.Cell(r,c,CellBorder,"1,1,1,1"); Obj.Cell(r,c,CellAlignment,1); Obj.Cell(r,c,CellFieldType,cftStaticText); Obj.Cell(r,c,CellContents,if(Round(BufСум1_7[n],2)=0,"0",Format("%.2F",BufСум1_7[n])),True);
    c=c+1; Obj.Cell(r,c,CellBorder,"1,1,1,1"); Obj.Cell(r,c,CellAlignment,1); Obj.Cell(r,c,CellFieldType,cftStaticText); Obj.Cell(r,c,CellContents,if(Round(BufСум1_8[n],2)=0,"0",Format("%.2F",BufСум1_8[n])),True);
 fi;
 c=c+1; Obj.Cell(r,c,CellBorder,"1,1,1,1"); Obj.Cell(r,c,CellAlignment,1); Obj.Cell(r,c,CellFieldType,cftStaticText); Obj.Cell(r,c,CellContents,if(Round(if(ver<11,BufСум1_9[n],BufСум1_7[n]),2)=0,"0",Format("%.2F",if(ver<11,BufСум1_9[n],BufСум1_7[n]))),True);
        Obj.CellLinks(13+v,r,15+v,r+rd);
 c=c+3; Obj.Cell(r,c,CellBorder,"1,1,2,1"); Obj.Cell(r,c,CellAlignment,1); Obj.Cell(r,c,CellFieldType,cftStaticText); Obj.Cell(r,c,CellContents,if(Round(if(ver<11,BufСум1_10[n],BufСум1_8[n]),2)=0,"0",Format("%.2F",if(ver<11,BufСум1_10[n],BufСум1_8[n]),2)),True);
        Obj.CellLinks(16+v,r,17+v,r+rd);
 if rd>0:
    c=1;   Obj.CellLinks(c,r,c,r+rd); --Наименова- ние объекта ФАИП
    c=c+1; Obj.CellLinks(c,r,c,r+rd); --Код объекта ФАИП
    c=c+1; Obj.CellLinks(c,r,c,r+rd); --Наимено- вание вида средств
    c=c+1; Obj.CellLinks(c,r,c,r+rd); --Код по БК
    c=6;   Obj.CellLinks(c,r,c,r+rd); --январь
    c=c+1; Obj.CellLinks(c,r,c,r+rd); --февраль
    c=c+1; Obj.CellLinks(c,r,c,r+rd); --март
    c=c+1; Obj.CellLinks(c,r,c,r+rd); --апрель
    c=c+1; Obj.CellLinks(c,r,c,r+rd); --май
    c=c+1; Obj.CellLinks(c,r,c,r+rd); --июнь
 fi;
 ^r+rd;
end;

Func ДобавитьСтроку2 (Obj: Object; r:i; n:i):I;
var c,v:i;
var ИтогСум:N;
var val:s;
 v=if(ver<11,0,1);
 if r+1>AsInteger(Obj.RowsCount): Obj.RowsCount=AsInteger(Obj.RowsCount)+100; fi;
 ИтогСум=BufСум1_1[n]+BufСум1_2[n]+BufСум1_3[n]+BufСум1_4[n]+BufСум1_5[n]+BufСум1_6[n]+BufСум1_7[n]+BufСум1_8[n]+BufСум1_9[n]+BufСум1_10[n]+BufСум1_11[n]+BufСум1_12[n];
 if ver<11:
    val=Str(n);
   else
    val=if(Round(BufСум1_9[n],2)=0,"0",Format("%.2N",BufСум1_9[n]));
 fi;
 c=1;   Obj.Cell(r,c,CellBorder,"2,1,1,1"); Obj.Cell(r,c,CellAlignment,1); Obj.Cell(r,c,CellFieldType,cftStaticText); Obj.Cell(r,c,CellContents,val,True);
 if ver<11:
    val="2,1,1,1";
   else
    c=c+1; Obj.Cell(r,c,CellBorder,"1,1,1,1"); Obj.Cell(r,c,CellAlignment,1); Obj.Cell(r,c,CellFieldType,cftStaticText); Obj.Cell(r,c,CellContents,if(Round(BufСум1_10[n],2)=0,"0",Format("%.2N",BufСум1_10[n])),True);
    val="1,1,1,1";
 fi;
 c=c+1; Obj.Cell(r,c,CellBorder,    val  ); Obj.Cell(r,c,CellAlignment,1); Obj.Cell(r,c,CellFieldType,cftStaticText); Obj.Cell(r,c,CellContents,if(Round(BufСум1_11[n],2)=0,"0",Format("%.2N",BufСум1_11[n])),True);
 c=c+1; Obj.Cell(r,c,CellBorder,"1,1,1,1"); Obj.Cell(r,c,CellAlignment,1); Obj.Cell(r,c,CellFieldType,cftStaticText); Obj.Cell(r,c,CellContents,if(Round(BufСум1_12[n],2)=0,"0",Format("%.2N",BufСум1_12[n])),True);
 c=c+1; Obj.Cell(r,c,CellBorder,"1,1,1,1"); Obj.Cell(r,c,CellAlignment,1); Obj.Cell(r,c,CellFieldType,cftStaticText); Obj.Cell(r,c,CellContents,if(Round(ИтогСум,2)=0,"0",Format("%.2N",ИтогСум)),True);
 c=c+1; Obj.Cell(r,c,CellBorder,"1,1,1,1"); Obj.Cell(r,c,CellAlignment,1); Obj.Cell(r,c,CellFieldType,cftStaticText); Obj.Cell(r,c,CellContents,if(Round(BufСум2[n],2)=0,"0",Format("%.2N",BufСум2[n])),True);
 c=c+1; Obj.Cell(r,c,CellBorder,"1,1,1,1"); Obj.Cell(r,c,CellAlignment,1); Obj.Cell(r,c,CellFieldType,cftStaticText); Obj.Cell(r,c,CellContents,if(Round(BufСум3[n],2)=0,"0",Format("%.2N",BufСум3[n])),True);
 c=c+1; Obj.Cell(r,c,CellBorder,"1,1,1,1"); Obj.Cell(r,c,CellAlignment,1); Obj.Cell(r,c,CellFieldType,cftStaticText); Obj.Cell(r,c,CellContents,if(Round(BufСум4[n],2)=0,"0",Format("%.2N",BufСум4[n])),True);
 c=c+1; Obj.Cell(r,c,CellBorder,"1,1,1,1"); Obj.Cell(r,c,CellAlignment,1); Obj.Cell(r,c,CellFieldType,cftStaticText); Obj.Cell(r,c,CellContents,if(Round(BufСум5[n],2)=0,"0",Format("%.2N",BufСум5[n])),True);
 c=c+1; Obj.Cell(r,c,CellBorder,"1,1,1,1"); Obj.Cell(r,c,CellAlignment,1); Obj.Cell(r,c,CellFieldType,cftStaticText); Obj.Cell(r,c,CellContents,if(Round(BufСум6[n],2)=0,"0",Format("%.2N",BufСум6[n])),True);
 c=c+1; Obj.Cell(r,c,CellBorder,"1,1,2,1"); Obj.Cell(r,c,CellAlignment,0); Obj.Cell(r,c,CellFieldType,cftStaticText); Obj.Cell(r,c,CellContents,BufПримеч[n],True);
        Obj.CellLinks(10+v,r,15+v,r);
 ^r;
end;

Func ДобавитьТитулН1 (Obj: Object; r:i; h:i; Flag1:L; Flag2:L):I;
var c,v:i;
 v=if(ver<11,0,-1);
 Obj.RowsCount=r; --уменьшаем размерность таблицы для сброса обеъеденных клеток, иначе может быть ошибка при переобъеденеии
 Obj.RowsCount=r+100;
 if Flag1:
    c=1;  Obj.Cell(r,c,CellBorder,"0,1,0,0"); Obj.Cell(r,c,CellAlignment,0); Obj.Cell(r,c,CellFieldType,cftStaticText); Obj.Cell(r,c,CellContents,"",True); Obj.Cell(r,c,CellFontSize,1);
    c=2;  Obj.Cell(r,c,CellBorder,"0,2,0,0"); Obj.Cell(r,c,CellAlignment,0); Obj.Cell(r,c,CellFieldType,cftStaticText); Obj.Cell(r,c,CellContents,"",True); Obj.Cell(r,c,CellFontSize,1);
          Obj.CellLinks(2,r,17+v,r);
 fi;
 if Flag2:
            Obj.Row(r,RowHeight,Max(10,h));
            r=r+1;
    c=1;    Obj.Cell(r,c,CellBorder,"0,0,0,0"); Obj.Cell(r,c,CellAlignment,1); Obj.Cell(r,c,CellFieldType,cftStaticText); Obj.Cell(r,c,CellContents,"Номер страницы",True);
            Obj.CellLinks(1,r,16+v,r);
    c=17+v; Obj.Cell(r,c,CellBorder,"0,0,0,1"); Obj.Cell(r,c,CellAlignment,2); Obj.Cell(r,c,CellFieldType,cftStaticText); Obj.Cell(r,c,CellContents,Str(Pages),True);
            r=r+1;
    c=1;    Obj.Cell(r,c,CellBorder,"0,0,0,0"); Obj.Cell(r,c,CellAlignment,1); Obj.Cell(r,c,CellFieldType,cftStaticText); Obj.Cell(r,c,CellContents,"Всего страниц",True);
            Obj.CellLinks(1,r,16+v,r);
    c=17+v; Obj.Cell(r,c,CellBorder,"0,0,0,1"); Obj.Cell(r,c,CellAlignment,2); Obj.Cell(r,c,CellFieldType,cftCommonField); Obj.Cell(r,c,CellContents,"Pages",True); Obj.Cell(r,c,CellReadOnly,True);
 fi;
 ^r;
end;

Func ДобавитьТитулН2 (Obj: Object; r:i; h:i; Flag1:L; Flag2:L):I;
var c,v:i;
 v=if(ver<11,0,1);
 Obj.RowsCount=r; --уменьшаем размерность таблицы для сброса обеъеденных клеток, иначе может быть ошибка при переобъеденеии
 Obj.RowsCount=r+100;
 if Flag1:
    if ver<11:
       c=1;  Obj.Cell(r,c,CellBorder,"0,1,0,0"); Obj.Cell(r,c,CellAlignment,0); Obj.Cell(r,c,CellFieldType,cftStaticText); Obj.Cell(r,c,CellContents,"",True); Obj.Cell(r,c,CellFontSize,1);
       c=2;  Obj.Cell(r,c,CellBorder,"0,2,0,0"); Obj.Cell(r,c,CellAlignment,0); Obj.Cell(r,c,CellFieldType,cftStaticText); Obj.Cell(r,c,CellContents,"",True); Obj.Cell(r,c,CellFontSize,1);
             Obj.CellLinks(2,r,15,r);
      else
       c=1;  Obj.Cell(r,c,CellBorder,"0,2,0,0"); Obj.Cell(r,c,CellAlignment,0); Obj.Cell(r,c,CellFieldType,cftStaticText); Obj.Cell(r,c,CellContents,"",True); Obj.Cell(r,c,CellFontSize,1);
             Obj.CellLinks(1,r,16,r);
    fi;
 fi;
 if Flag2:
            Obj.Row(r,RowHeight,Max(10,h));
            r=r+1;
    c=1;    Obj.Cell(r,c,CellBorder,"0,0,0,0"); Obj.Cell(r,c,CellAlignment,1); Obj.Cell(r,c,CellFieldType,cftStaticText); Obj.Cell(r,c,CellContents,"Номер страницы",True);
            Obj.CellLinks(1,r,14+v,r);
    c=15+v; Obj.Cell(r,c,CellBorder,"0,0,0,1"); Obj.Cell(r,c,CellAlignment,2); Obj.Cell(r,c,CellFieldType,cftStaticText); Obj.Cell(r,c,CellContents,Str(Pages),True);
            r=r+1;
    c=1;    Obj.Cell(r,c,CellBorder,"0,0,0,0"); Obj.Cell(r,c,CellAlignment,1); Obj.Cell(r,c,CellFieldType,cftStaticText); Obj.Cell(r,c,CellContents,"Всего страниц",True);
            Obj.CellLinks(1,r,14+v,r);
    c=15+v; Obj.Cell(r,c,CellBorder,"0,0,0,1"); Obj.Cell(r,c,CellAlignment,2); Obj.Cell(r,c,CellFieldType,cftCommonField); Obj.Cell(r,c,CellContents,"Pages",True); Obj.Cell(r,c,CellReadOnly,True);
 fi;
 ^r;
end;

Proc РазметкаЛиста (Flag:L);
var Obj,Obj1,Obj2:Object;
var y,yy,h,h0,s,ss,n,nn,r1,r2,c,hr,hlast,hsub,Iter:i;
var isФАИП:L;
 Pages=2;
 if Flag:
    Раб.Настр_Печать.ReadCfg("",SelfCfg);
    yy=Раб.Настр_Печать.Sheet(XS,YS); --размер рабочей области
 fi;
 --Раздел 1
 S4.Cell(6,3 ,CellContents,if(f20130901 and Flag,"S_nul","Осн_ДокВид_"));
 S4.Cell(6,8 ,CellContents,if(f20130901 and Flag,"D_nul","Осн_ДокДН"));
 S4.Cell(6,9 ,CellContents,if(f20130901 and Flag,"D_nul","Осн_ДокДК"));
 --Раздел 2
 r1=6;
 S5.Cell(r1,8 ,CellContents,if(f20130901 and Flag,"S_nul","РеквП.РПО_Страна"));
 S5.Cell(r1,9 ,CellContents,if(f20130901 and Flag,"S_nul","РеквП.РПО_ОКСМ"));
 S5.Cell(r1,10,CellContents,if(f20130901 and Flag,"S_nul","РеквП.ЮрАдрес"));
 S5.Cell(r1,11,CellContents,if(f20130901 and Flag,"S_nul","РеквП_Телефон"));
 S5.Cell(r1,12,CellContents,if(f20130901 and Flag,"S_nul","РеквП.РПО_Статус"));
 S5.Cell(r1,13,CellContents,if(f20130901 and Flag,"S_nul","БанкП.РСчет"));
 S5.Cell(r1,14,CellContents,if(f20130901 and Flag,"S_nul","БанкП_Банк"));
 S5.Cell(r1,15,CellContents,if(f20130901 and Flag,"S_nul","БанкП.БИК"));
 S5.Cell(r1,16,CellContents,if(f20130901 and Flag,"S_nul","БанкП.КСчет"));
 S5.RowsCount=r1;
 if f20130901 and Flag:
    ClearVariable(Buf);
    Buf[1]=RecordToString(РеквП);
    for n=1..Раздел2 do
     if SearchInArray(Buf,RecordToString(Раздел2[n].РеквП),true)=-1:
        AddInArray(Buf,True,False,RecordToString(Раздел2[n].РеквП));
        r1=r1+1;
        S5.RowsCount=r1;
        for c=3..16 do
         S5.Cell(r1,c,CellBorder,if(c=3:"2,1,1,1"|c=16:"1,1,2,1"|true:"1,1,1,1"));
         S5.Cell(r1,c,CellAlignment,2);
         S5.Cell(r1,c,CellFontSize,7);
        od;
        S5.CellLinks(3,r1,4,r1);
        S5.Cell(r1,3,CellContents,Раздел2[n].РеквП.ПолнИмя);
        S5.Cell(r1,6,CellContents,Раздел2[n].РеквП.ИНН);
        S5.Cell(r1,7,CellContents,Раздел2[n].РеквП.КПП);
     fi;
    od;
    S6.Visible=False;
   else
    S6.Visible=True;
 fi;
 --Раздел 4
 S9.Cell(6,3 ,CellContents,if(f20130901 and Flag,"S_nul","Доп_РазмещЗаказ_"));
 S9.Cell(6,5 ,CellContents,if(f20130901 and Flag,"D_nul","Доп_ДатаИтог"));
 S9.Cell(6,6 ,CellContents,if(f20130901 and Flag,"S_nul","Доп_ВидДокОсн"));
 S9.Cell(6,7 ,CellContents,if(f20130901 and Flag,"S_nul","Доп_НомДокОсн"));
 S9.Cell(6,8 ,CellContents,if(f20130901 and Flag,"D_nul","Доп_ДатаДокОсн"));
 S9.Cell(6,9 ,CellContents,if(f20130901 and Flag,"S_nul","Доп_Статус_"));
 --
 --S1.Row(3,RowVisible,ТипДок_=2 and Flag); --видима только для печати    пока тип 2 не распечатываем
 --S1.Row(4,RowVisible,ТипДок_=2 and not Flag);
 S4.Visible=not Flag or Р1;
 S5.Visible=not Flag or Р2;
-- S6.Visible=not Flag or Р2;
 S8.Visible=not Flag or Р3;
 S9.Visible=not Flag or Р4;
 --
 S10.Visible=not Flag; --Расшифр
 S11.Visible=not Flag;
 S12.Visible=not Flag;
 S13.Visible=not Flag;
 S14.Visible=not Flag;
 S15.Visible=not Flag;
 --
 S4.Column(5,ColVisible,not Flag); --Р1 Наименование
 S5.Column(5,ColVisible,not Flag); --Р2 Аналитический признак контрагента
 S6.Column(5,ColVisible,not Flag);
 S7.Column(5,ColVisible,not Flag);
 --
 S3.Row(10,RowVisible,not Flag); --ver
 S3.Row(11,RowVisible,not Flag); --
 S4.Row(1,RowVisible,not Flag); --ОчиститьР1
 S5.Row(1,RowVisible,not Flag); --ОчиститьР2
 S8.Row(1,RowVisible,not Flag); --ОчиститьР3
 S9.Row(1,RowVisible,not Flag); --ОчиститьР4
 --
 isФАИП=False;
 for Iter=1..Расшифр do
  if not Расшифр[Iter].ФАИП=nil and not (Round(Итог_Сум1[Iter],2)=0 and Round(Расшифр[Iter].Сум2,2)=0 and Round(Расшифр[Iter].Сум3,2)=0 and Round(Расшифр[Iter].Сум4,2)=0 and Round(Расшифр[Iter].Сум5,2)=0 and Round(Расшифр[Iter].Сум6,2)=0): isФАИП=True; Break; fi;
 od;
 if isФАИП:
    T1_11.Cell(2,1,CellContents,"Наименование объекта ФАИП"); --Наименование объекта ФАИП
    T1_11.Column(1,ColWidth,250); --Наименование объекта ФАИП
    T1_11.Column(2,ColWidth,210); --Код объекта ФАИП
    T1_11.Column(5,ColWidth,370); --Предмет по документу - основанию
   else
    T1_11.Cell(2,1,CellContents,"Наименова- ние объекта ФАИП"); --Наименование объекта ФАИП
    T1_11.Column(1,ColWidth,160); --Наименование объекта ФАИП
    T1_11.Column(2,ColWidth,120); --Код объекта ФАИП
    T1_11.Column(5,ColWidth,600); --Предмет по документу - основанию
 fi;
 --
 ClearVariable(Buf);
 for s=1..nS do
  Buf[s]="S"+Str(s);
 od;
 AddInArray(Buf,True,False,"T0");
 AddInArray(Buf,True,False,"Ш1");
 AddInArray(Buf,True,False,"Ш2");
 AddInArray(Buf,True,False,"SC1");
 AddInArray(Buf,True,False,"SC2");
 nn=LengthOfArray(Buf);
 for n=1..nn do
  if FindObject(Buf[n],Obj1):
     Obj1.Column(1,ColVisible,not Flag);
     Obj1.Column(2,ColVisible,not Flag);
  fi;
 od;
 --
 nn=СортРасшифр;
 if ver<11:
    if not FindObject("T1",Obj1): Message("Объект T1 не найден",mtError); Exit; fi;
    if not FindObject("T2",Obj2): Message("Объект T2 не найден",mtError); Exit; fi;
   else
    if not FindObject("T1_11",Obj1): Message("Объект T1_11 не найден",mtError); Exit; fi;
    if not FindObject("T2_11",Obj2): Message("Объект T2_11 не найден",mtError); Exit; fi;
 fi;
 Obj1.Visible=Flag;
 Obj2.Visible=Flag;
 Obj2.Row(1,RowVisible,False);
 Obj2.Row(2,RowVisible,False);
 Obj2.Row(3,RowVisible,False);
 Obj2.Row(4,RowVisible,False);
 hlast=ВысотаОбласти ("S17",1,"SC2",4);
 hsub=ВысотаОбласти ("SC2",1,"SC2",4);
 --Первая часть таблицы
 Obj1.RowsCount=4;
 if Flag:
    r1=4;
    y0=AsInteger(T0.Row(1,RowTop,""));  --начальная координата текущего листа
    h=hsub;
    for n=1..nn do
     hr=r1+1;
     r1=ДобавитьСтроку1(Obj1,r1+1,n);
     y=AsInteger(Obj1.Row(r1+1,RowTop,""));
     if y-y0>yy-h:
        y=AsInteger(Obj1.Row(hr,RowTop,""));
        r1=ДобавитьТитулН1(Obj1,hr,yy-h-(y-y0),True,True);
        r1=ДобавитьТитулВ1(Obj1,r1+1);
        r1=ДобавитьШапку1(Obj1,r1+1);
        r1=ДобавитьСтроку1(Obj1,r1+1,n);
     fi;
    od;
    r1=ДобавитьТитулН1(Obj1,r1+1,0,True,False);
    Obj1.RowsCount=r1;
 fi;
 --Вторая часть таблицы
 Obj2.RowsCount=7;
 if Flag:
    r2=7;
    h=hsub;
    Obj2.Row(4,RowVisible,True);
    for n=1..nn do
     hr=r2+1;
     r2=ДобавитьСтроку2(Obj2,r2+1,n);
     y=AsInteger(Obj2.Row(r2+1,RowTop,""));
     if y-y0>yy-h:
        if n=1: --таблица не поместилась на лист, надо закрыть первую таблицу
           Obj2.Row(1,RowVisible,True); Obj2.Row(1,RowNewPage,True);
           Obj2.Row(2,RowVisible,True);
           Obj2.Row(3,RowVisible,True);
           y=AsInteger(Obj2.Row(1,RowTop,""));
           r1=ДобавитьТитулН1(Obj1,r1,yy-h-(y-y0),False,True);
           Obj1.RowsCount=r1;
           y0=AsInteger(Obj2.Row(1,RowTop,""));  --начальная координата текущего листа
          else
           y=AsInteger(Obj2.Row(hr,RowTop,""));
           r2=ДобавитьТитулН2(Obj2,hr,yy-h-(y-y0),True,True);
           r2=ДобавитьТитулВ2(Obj2,r2+1);
           r2=ДобавитьШапку2(Obj2,r2+1);
           r2=ДобавитьСтроку2(Obj2,r2+1,n);
        fi;
     fi;
    od;
    r2=ДобавитьТитулН2(Obj2,r2+1,0,True,False);
    h=hlast;
    y=AsInteger(Obj2.Row(r2+1,RowTop,""));
    if y-y0>yy-h: --проверяем влезла ли таблица и штам если нет то переносим последнию строчку
       h=hsub; --сбрасываем размер на промежуточный
       y=AsInteger(Obj2.Row(hr,RowTop,""));
       r2=ДобавитьТитулН2(Obj2,hr,yy-h-(y-y0),True,True);
       r2=ДобавитьТитулВ2(Obj2,r2+1);
       r2=ДобавитьШапку2(Obj2,r2+1);
       r2=ДобавитьСтроку2(Obj2,r2+1,nn);
       r2=ДобавитьТитулН2(Obj2,r2+1,0,True,False);
    fi;
    Obj2.RowsCount=r2;
    hr=y0;
 fi;
 --Разметка страницы на первом и последнем листе
 y0=0;
 for s=1..2 do
  if FindObject("SC"+Str(s),Obj):
     if Flag:
        if s=1: h0=ВысотаОбласти("S0",1,if(fУтвДок,"sУтвДок","S1"),1); --Предупрждение
          |s=2: h0=-10;
        fi;
        y=AsInteger(Obj.Row(4,RowTop,""));
        h=yy-(y-y0)+h0;
        if h<10: Message("Внимание ! Страница "+Str(s)+" выходит за границы листа^MОбратитесь к разработчику или уменьшите количество строк раздела "+if(s=1:"1, 2, 3, 4"|true:""),mtWarning); fi;
       else
        h=10;
     fi;
     h=Max(h,10);
     Obj.Row(1,RowHeight,h);
     y0=hr+h;
  fi;
 od;
end;

Proc Очистить (aР:I);
 if aР=1 or aР=-1:
    ClearVariable(Осн_ДокВид);
    ClearVariable(Осн_ДокНаим);
    ClearVariable(Осн_ДокНом);
    ClearVariable(Осн_ДокДат);
    ClearVariable(Осн_ДокДН);
    ClearVariable(Осн_ДокДК);
    ClearVariable(Осн_ДокСум);
    ClearVariable(Осн_ДокОКВ);
    ClearVariable(Осн_ДокСумРуб);
    ClearVariable(Осн_ДокПроцАв);
    ClearVariable(Осн_ДокСумАв);
 fi;
 if aР=2 or aР=-1:
    ClearVariable(РеквП);
    ClearVariable(БанкП);
    ClearVariable(Призн_К);
    ClearVariable(Раздел2);
 fi;
 if aР=3 or aР=-1:
    ClearVariable(Исп_ДокДат);
    ClearVariable(Исп_Орган);
    ClearVariable(Исп_ДокСум);
    ClearVariable(Исп_УведНом);
    ClearVariable(Исп_УведДат);
 fi;
 if aР=4 or aР=-1:
    ClearVariable(Доп_РазмещЗаказ);
    ClearVariable(Доп_ДатаИтог);
    ClearVariable(Доп_ВидДокОсн);
    ClearVariable(Доп_НомДокОсн);
    ClearVariable(Доп_ДатаДокОсн);
    ClearVariable(Доп_Ном_Реестр);
 fi;
 if aР=5 or aР=-1:
    ClearVariable(Расшифр);
    ClearVariable(lenПредм);
 fi;
end;

Proc НеПустаяТаблица;
 if Расшифр<1: 
    InsertFrame(Расшифр,1);
    Расшифр[1].Нов=ТипДок=1;
 fi;
end;

Proc ОбработатьНомер (aНомерДок:S; isИзм:L);
var tmp:i;
var ff:s;
 tmp=Int(aНомерДок);
 if isИзм:
    if tmp=0:
       ff="(ТипДок=1 or OverrideТипДок='1') and not UKey="+RecordToString(Current);
       if not Изм_ФорматНомер=0:
          ff=ff+" and Изм_Префикс='"+Изм_Префикс+"'";
       fi;
       if Изм_ДатаДок=1.1.100:
          tmp=Раб.Обл.СледСУчетомГодаФ(SelfCrd,"Изм_Номер","Изм_ДатаДок",ff);
         else
          tmp=Раб.Обл.СледСУчетомДатыФ(SelfCrd,"Изм_Номер","Изм_ДатаДок",Изм_ДатаДок,ff);
       fi;
    fi;
    if not Изм_Номер=tmp:
       Изм_Номер=tmp;
       if Раб.Бюджет2005.Сетевая: EditorApply; fi;
    fi;
   else
    if tmp=0:
       ff="(ТипДок=0 or ТипДок=2 or OverrideТипДок='0' or OverrideТипДок='2') and not UKey="+RecordToString(Current);
       if not ФорматНомер=0:
          ff=ff+" and Префикс='"+Префикс+"'";
       fi;
       if ДатаДок=1.1.100:
          tmp=Раб.Обл.СледСУчетомГодаФ(SelfCrd,"Номер","ДатаДок",ff);
         else
          tmp=Раб.Обл.СледСУчетомДатыФ(SelfCrd,"Номер","ДатаДок",ДатаДок,ff);
       fi;
    fi;
    if not Номер=tmp:
       Номер=tmp;
       if Раб.Бюджет2005.Сетевая: EditorApply; fi;
    fi;
 fi;
end;

Proc ОбработатьДату (prevДата:D; newДата:D; isИзм:L);
var prevYYYY,newYYYY:I;
var ff:s;
 ver=if(newДата<1.7.2013,0,11);
 if isИзм:
    if prevДата=newДата: Exit; fi;
    if not prevДата=1.1.100:
       if EnqOkCancel("Изменилась дата документа, получить новый номер документа ?",mtWarning)=cmCancel: Exit; fi;
    fi;
    ff="(ТипДок=1 or OverrideТипДок='1') and not UKey="+RecordToString(Current);
    if not Изм_ФорматНомер=0:
       ff=ff+" and Изм_Префикс='"+Изм_Префикс+"'";
    fi;
    Изм_НомерДок=Str(Раб.Обл.СледСУчетомДатыФ(SelfCrd,"Изм_Номер","Изм_ДатаДок",newДата,ff));
    ОбработатьНомер(Изм_НомерДок,True);
    Template.Field="Изм_НомерДок";
   else
    prevYYYY=Year(prevДата);
    newYYYY=Year(newДата);
    if prevYYYY=newYYYY: Exit; fi;
    if not prevYYYY=100:
       if EnqOkCancel("Изменился отчетный год ("+Str(prevYYYY)+") документа, получить номер документа соответствуещего года ("+Str(newYYYY)+") ?",mtWarning)=cmCancel: Exit; fi;
    fi;
    ff="(ТипДок=0 or ТипДок=2 or OverrideТипДок='0' or OverrideТипДок='2') and not UKey="+RecordToString(Current);
    if not ФорматНомер=0:
       ff=ff+" and Префикс='"+Префикс+"'";
    fi;
    НомерДок=Format("%."+Str(setДлинаНомер)+"D",Раб.Обл.СледСУчетомДатыФ(SelfCrd,"Номер","ДатаДок",newДата,ff));
    ОбработатьНомер(НомерДок,False);
    Template.Field="НомерДок";
 fi;
end;

Proc БанкВПризн;
var tmp:S;
var i,nn:I;
 RefreshAna;
 Призн_ЛС="";
 if Банк.РПО_ЛСчет="": Exit; fi;
 tmp="ЛС."+Банк.РПО_ЛСчет;
 if not Name_A(tmp)=" ":
    Призн_ЛС=tmp;
   else
    nn=RecSignsCount("БАНК_СЧЕТА",Банк);
    for i=1..nn do
     tmp=RecSign("БАНК_СЧЕТА",Банк,i);
      if Substr(Trim(tmp),1,3)='ЛС.' then
        ПРИЗН_ЛС=tmp;
      fi;
     od;
 fi;
end;

Proc ЗаполнитьКлиента (vRec: Record);
 if not vRec=nil:
    Глава=Рекв.РПО_ППП;
    ГРБС=Раб.Бюджет.НаимКБК("ППП2006",Глава);
    ДолжнРук=Рекв.ДолжнРук;
    ФИОРук=Рекв.ФИОРук;
    Банк=Раб.Бюджет2005.БанкСчет(Рекв,False);
    БанкВПризн;
 fi;
 if Глава="":
    Глава=hГлава;
    ГРБС=hГРБС;
 fi;
end;

Func ВыборЭК(aТип:S; hЭК:S):S;
var z:i;
var tmp,tmp2:s;
 ClearVariable(Buf);
 ClearVariable(Buf2);
 if aТип="10": tmp2=Раб.Бюджет2005.МаскаРасхКОСГУ;
   |aТип="31" or aТип="32": tmp2=Раб.Бюджет2005.МаскаДефицитКОСГУ;
 fi;
 for Sign tmp=tmp2,Sort do
  tmp=SubStr(tmp,7,3);
  z=SearchInArray(Buf,tmp,True);
  if z=-1:
     z=InsertInArraySort(Buf,tmp);
     InsertInArray(Buf2,z,tmp+" --"+Name_A("КОСГУ."+tmp));
  fi;
 od;
 z=Alternate("Выбор ЭК",Buf2,-1,SearchInArray(Buf,hЭК,True),12);
 if z=0: ^""; fi;
 if aТип="10": hЭКР=Buf[z];
   |aТип="31" or aТип="32": hЭКИФД=Buf[z];
 fi;
 ^Buf[z];
end;

Func ВзятьКБК (aКБК:S; aТипКБК:S; aЗнач:S):S;
var Ret:S;
 if aКБК="" or aТипКБК="": ^""; fi;
 Ret="";
 if aТипКБК="10":
    Ret=SubStr(aКБК,1,3)+"."+SubStr(aКБК,4,4)+"."+SubStr(aКБК,8,7)+"."+SubStr(aКБК,15,3)+"."+SubStr(aКБК,18,3);
    if aЗнач="БК":  Ret=SubStr(Ret,1,20);
      |aЗнач="КОСГУ": Ret=SubStr(Ret,22,3);
    fi;
   |aТипКБК="31" or aТипКБК="32":
    Ret=SubStr(aКБК,1,3)+"."+SubStr(aКБК,4,2)+"."+SubStr(aКБК,6,2)+"."+SubStr(aКБК,8,2)+"."+SubStr(aКБК,10,2)+"."+SubStr(aКБК,12,2)+"."+SubStr(aКБК,14,4)+"."+SubStr(aКБК,18,3);
    if aЗнач="БК":  Ret=SubStr(Ret,1,23);
      |aЗнач="КОСГУ": Ret=SubStr(Ret,25,3);
    fi;
 fi;
 ^Ret;
end;

Func ИстВБух (aИст:S):S;
 if  aИст="3": ^"1"; fi;
 ^aИст;
end;

Func МаскаПризн (Iter:I):S;
var y:i;
var Сч,Mask:S;
 Mask="";
 for y=1..3 do
  Сч=GetVariableS("Расшифр["+Str(Iter)+"].СчДеб"+Str(y));
  if not Name_S(Сч)=" ": Mask=Mask+"|"+Сч; fi;
  Сч=GetVariableS("Расшифр["+Str(Iter)+"].СчКре"+Str(y));
  if not Name_S(Сч)=" ": Mask=Mask+"|"+Сч; fi;
 od;
 Mask=SubStr(Mask,2,255);
 if not Mask="":
    Mask=Раб.Бюджет2005.СписокСправ(Mask,0,ИсклПризн);
 fi;
 ^Mask;
end;

Proc ОбновитьСч (Iter:I);
var n1,n2,y:i;
var ВД,БК,КОСГУ,Сч:S;
var Flag:L;
 if Iter=-1: n1=1; n2=Расшифр; else n1=Iter; n2=Iter; fi;
 Раб.КСА.Начать;
 for Iter=n1..n2 do
  БК=ВзятьКБК(Расшифр[Iter].КБК,Расшифр[Iter].ТипКБК,"БК");
  КОСГУ=ВзятьКБК(Расшифр[Iter].КБК,Расшифр[Iter].ТипКБК,"КОСГУ");
  ВД=ИстВБух(Расшифр[Iter].Ист);
  if not БК="" and not КОСГУ="":
     if ВД="1":
        for y=1..3 do
         if y>1:
            Flag=not GetVariableN("Расшифр["+Str(Iter)+"].Сум"+Str(y))=0;
           else
            Flag=True;
         fi;
         if Flag:
            Сч=БК+"."+ВД+".501."+Str(y)+"3."+КОСГУ;
            Раб.КСА.Добавить(Сч);
           else
            Сч="";
         fi;
         PutVariableS("Расшифр["+Str(Iter)+"].СчДеб"+Str(y),Сч);
         if Flag:
            Сч=БК+"."+ВД+".502."+Str(y)+"1."+КОСГУ;
            Раб.КСА.Добавить(Сч);
           else
            Сч="";
         fi;
         PutVariableS("Расшифр["+Str(Iter)+"].СчКре"+Str(y),Сч);
        od;
       |not ВД="3":
        for y=1..2 do
         if y>1:
            Flag=not GetVariableN("Расшифр["+Str(Iter)+"].Сум"+Str(y))=0;
           else
            Flag=True;
         fi;
         if Flag:
            Сч=БК+"."+ВД+".506."+Str(y)+"0."+КОСГУ;
            Раб.КСА.Добавить(Сч);
           else
            Сч="";
         fi;
         PutVariableS("Расшифр["+Str(Iter)+"].СчДеб"+Str(y),Сч);
         if Flag:
            Сч=БК+"."+ВД+".502."+Str(y)+"1."+КОСГУ;
            Раб.КСА.Добавить(Сч);
           else
            Сч="";
         fi;
         PutVariableS("Расшифр["+Str(Iter)+"].СчКре"+Str(y),Сч);
        od;
        PutVariableS("Расшифр["+Str(Iter)+"].СчДеб3","");
        PutVariableS("Расшифр["+Str(Iter)+"].СчКре3","");
     fi;
  fi;
 od;
 if Раб.КСА.Закончить(False): Message("Добавление счетов завершено"); fi;
end;

Proc ОбновитьПризн(Iter:I);
var n1,n2:i;
 if Iter=-1:  n1=1; n2=Расшифр; else n1=Iter; n2=Iter; fi;
 for Iter=n1..n2 do
  if not Расшифр[Iter].КБК="":
     Расшифр[Iter].Призн=Раб.Бюджет2005.ПривестиВСоотвНаборСлов(Расшифр[Iter].Призн," ",МаскаПризн(Iter),"|");
  fi;
 od;
end;

Proc ПоУмолчанию;
 Осн_ДокОКВ="643";
end;

Proc ПодтаблицаИзБО (Iter:I; OA:I; i:I; Тип:I);
 Расшифр[Iter].ФАИП=GetFieldR(OA,i,"ФАИП");
 Расшифр[Iter].Ист=GetFieldS(OA,i,"Ист");
 Расшифр[Iter].ТипКБК=GetFieldS(OA,i,"ТипКБК");
 Расшифр[Iter].КБК=GetFieldS(OA,i,"КБК");
 Расшифр[Iter].Призн=GetFieldS(OA,i,"Призн");
 Расшифр[Iter].Предм1=GetFieldS(OA,i,"Предм1");
 Расшифр[Iter].Предм2=GetFieldS(OA,i,"Предм2");
 Расшифр[Iter].Предм3=GetFieldS(OA,i,"Предм3");
 Расшифр[Iter].Предм4=GetFieldS(OA,i,"Предм4");
 Расшифр[Iter].Сум1_1=GetFieldN(OA,i,"Сум1_1");
 Расшифр[Iter].Сум1_2=GetFieldN(OA,i,"Сум1_2");
 Расшифр[Iter].Сум1_3=GetFieldN(OA,i,"Сум1_3");
 Расшифр[Iter].Сум1_4=GetFieldN(OA,i,"Сум1_4");
 Расшифр[Iter].Сум1_5=GetFieldN(OA,i,"Сум1_5");
 Расшифр[Iter].Сум1_6=GetFieldN(OA,i,"Сум1_6");
 Расшифр[Iter].Сум1_7=GetFieldN(OA,i,"Сум1_7");
 Расшифр[Iter].Сум1_8=GetFieldN(OA,i,"Сум1_8");
 Расшифр[Iter].Сум1_9=GetFieldN(OA,i,"Сум1_9");
 Расшифр[Iter].Сум1_10=GetFieldN(OA,i,"Сум1_10");
 Расшифр[Iter].Сум1_11=GetFieldN(OA,i,"Сум1_11");
 Расшифр[Iter].Сум1_12=GetFieldN(OA,i,"Сум1_12");
 Расшифр[Iter].Сум2=GetFieldN(OA,i,"Сум2");
 Расшифр[Iter].Сум3=GetFieldN(OA,i,"Сум3");
 Расшифр[Iter].Сум4=GetFieldN(OA,i,"Сум4");
 Расшифр[Iter].Сум5=GetFieldN(OA,i,"Сум5");
 Расшифр[Iter].Сум6=GetFieldN(OA,i,"Сум6");
 if Тип=1:
    Расшифр[Iter].Сум_Пре1_1=Расшифр[i].Сум1_1;
    Расшифр[Iter].Сум_Пре1_2=Расшифр[i].Сум1_2;
    Расшифр[Iter].Сум_Пре1_3=Расшифр[i].Сум1_3;
    Расшифр[Iter].Сум_Пре1_4=Расшифр[i].Сум1_4;
    Расшифр[Iter].Сум_Пре1_5=Расшифр[i].Сум1_5;
    Расшифр[Iter].Сум_Пре1_6=Расшифр[i].Сум1_6;
    Расшифр[Iter].Сум_Пре1_7=Расшифр[i].Сум1_7;
    Расшифр[Iter].Сум_Пре1_8=Расшифр[i].Сум1_8;
    Расшифр[Iter].Сум_Пре1_9=Расшифр[i].Сум1_9;
    Расшифр[Iter].Сум_Пре1_10=Расшифр[i].Сум1_10;
    Расшифр[Iter].Сум_Пре1_11=Расшифр[i].Сум1_11;
    Расшифр[Iter].Сум_Пре1_12=Расшифр[i].Сум1_12;
    Расшифр[Iter].Сум_Пре2=Расшифр[i].Сум2;
    Расшифр[Iter].Сум_Пре3=Расшифр[i].Сум3;
    Расшифр[Iter].Сум_Пре4=Расшифр[i].Сум4;
    Расшифр[Iter].Сум_Пре5=Расшифр[i].Сум5;
    Расшифр[Iter].Сум_Пре6=Расшифр[i].Сум6;
 fi;
 Расшифр[Iter].Примеч=GetFieldS(OA,i,"Примеч");
 Расшифр[Iter].ДопКл=GetFieldS(OA,i,"ДопКл");
 Расшифр[Iter].СчДеб1=GetFieldS(OA,i,"СчДеб1");
 Расшифр[Iter].СчКре1=GetFieldS(OA,i,"СчКре1");
 Расшифр[Iter].СчДеб2=GetFieldS(OA,i,"СчДеб2");
 Расшифр[Iter].СчКре2=GetFieldS(OA,i,"СчКре2");
 Расшифр[Iter].СчДеб3=GetFieldS(OA,i,"СчДеб3");
 Расшифр[Iter].СчКре3=GetFieldS(OA,i,"СчКре3");
 Расшифр[Iter].Нов=False;
end;

Func ЗаполнитьИзБО (Rec: Record; Синхро:L; Тип:I):L;
var OWA,OA,nr,i,ii,Iter:i;
var tmp:S;
var pRec: Record;
 OWA=OpenWorkArea(SelfCrd,"ТипДок;Изм;Доп_Статус","Учитывать and UKey="+RecordToString(Rec)+" or БО="+RecordToString(Rec)+" and not UKey="+RecordToString(Current));
 Try
  nr=Records(OWA);
  if nr=0: Message("Обязательство не найдено",mtError);  ^False; fi;
  if (not GetFieldR(OWA,nr,"ДОГОВОР")=nil or not GetFieldR(OWA,nr,"ДО")=nil) and not Test="Test": Message("Выбранное обязательство сформировано автоматически, через документ основание, внесение изменений следует производить через документ основание",mtError); ^False; fi;
  tmp=GetFieldS(OWA,nr,"Доп_Статус");
  if not tmp="": Message("Статус обязательства: "+if(Tmp="1":"Исполнено"|tmp="2":"Аннулировано (расторгнуто)"|True:"???")+"^MИзменение не возможно",mtError); ^False; fi;
  pRec=GetRecordKey(OWA,nr);
  if Синхро:
     if not RecordExists(SelfCrd,БО_Пре) or not БО_Пре=pRec:
        if EnqOkCancel("Внимание! Предыдущие сведения о бюджетном обязательстве "+RecordToString(БО_Пре)+" не найдены (отличны), сохранить данную заявку как текущие сведения ?",mtWarning)=cmCancel: Template.Field="НомерДок_"; ^False; fi;
        БО_Пре=pRec;
     fi;
    else
     БО=Rec;
     БО_Пре=pRec;
     if Тип=1:
        ТекГод=БО_Пре.ТекГод;
        ФорматНомер=БО_Пре.ФорматНомер;
        Номер=БО_Пре.Номер;
        Префикс=БО_Пре.Префикс;
        Сепаратор=БО_Пре.Сепаратор;
        НомерДок=БО_Пре.НомерДок;
        ДатаДок=БО_Пре.ДатаДок;
        Изм=БО_Пре.Изм+1;
        Признак=БО_Пре.Признак;
        Признак_Кмнт=БО_Пре.Признак_Кмнт;
       else
        ТекГод=Year(ДатаДок);
        Изм_ФорматНомер=БО_Пре.ФорматНомер;
        Изм_Префикс=БО_Пре.Префикс;
        Изм_Сепаратор=БО_Пре.Сепаратор;
        Изм_НомерДок=БО_Пре.НомерДок;
        Изм_ДатаДок=БО_Пре.ДатаДок;
     fi;
     Рекв=БО_Пре.Рекв;
     Банк=БО_Пре.Банк;
     ГРБС=БО_Пре.ГРБС;
     Глава=БО_Пре.Глава;
     Осн_ДокВид=БО_Пре.Осн_ДокВид;
     Осн_ДокНаим=БО_Пре.Осн_ДокНаим;
     Осн_ДокНом=БО_Пре.Осн_ДокНом;
     Осн_ДокДат=БО_Пре.Осн_ДокДат;
     Осн_ДокДН=БО_Пре.Осн_ДокДН;
     Осн_ДокДК=БО_Пре.Осн_ДокДК;
     Осн_ДокСум=БО_Пре.Осн_ДокСум;
     Осн_ДокОКВ=БО_Пре.Осн_ДокОКВ;
     Осн_ДокСумРуб=БО_Пре.Осн_ДокСумРуб;
     Осн_ДокПроцАв=БО_Пре.Осн_ДокПроцАв;
     Осн_ДокСумАв=БО_Пре.Осн_ДокСумАв;
     РеквП=БО_Пре.РеквП;
     БанкП=БО_Пре.БанкП;
     Исп_ДокНом=БО_Пре.Исп_ДокНом;
     Исп_ДокДат=БО_Пре.Исп_ДокДат;
     Исп_Орган=БО_Пре.Исп_Орган;
     Исп_ДокСум=БО_Пре.Исп_ДокСум;
     Исп_УведНом=БО_Пре.Исп_УведНом;
     Исп_УведДат=БО_Пре.Исп_УведДат;
     Доп_РазмещЗаказ=БО_Пре.Доп_РазмещЗаказ;
     Доп_ДатаИтог=БО_Пре.Доп_ДатаИтог;
     Доп_ВидДокОсн=БО_Пре.Доп_ВидДокОсн;
     Доп_НомДокОсн=БО_Пре.Доп_НомДокОсн;
     Доп_ДатаДокОсн=БО_Пре.Доп_ДатаДокОсн;
     Доп_Статус=БО_Пре.Доп_Статус;
     Доп_Ном_Реестр=БО_Пре.Доп_Ном_Реестр;
     ДолжнРук=БО_Пре.ДолжнРук;
     ФиоРук=БО_Пре.ФиоРук;
     ЭтоАссигн=БО_Пре.ЭтоАссигн;
     Призн_ЛС=БО_Пре.Призн_ЛС;
     Призн_К=БО_Пре.Призн_К;
     Призн_К_Пре=БО_Пре.Призн_К;
     Призн_Договор=БО_Пре.Призн_Договор;
     Вал=БО_Пре.Вал;
     Секрет=БО_Пре.Секрет;
     Договор=БО_Пре.Договор;
     ДО=БО_Пре.ДО;
     РегНомер=БО_Пре.РегНомер;
     Ver=БО_Пре.Ver;
     УчетФК=БО_Пре.УчетФК;
     ClearVariable(Раздел2);
     for i=1..БО_Пре.Раздел2 do
      Iter=InsertFrame(Раздел2,Раздел2+1);
      Раздел2[Iter].РеквП=БО_Пре.Раздел2[i].РеквП;
      Раздел2[Iter].БанкП=БО_Пре.Раздел2[i].БанкП;
      Раздел2[Iter].Призн_К=БО_Пре.Раздел2[i].Призн_К;
     od;
  fi;
  OA=OpenArray(OWA,nr,"Расшифр","");
  ii=Records(OA);
  if Синхро and not Расшифр=0:
     for Iter=1..Расшифр do
      Расшифр[Iter].Нов=True;
     od;
     for i=1..ii do
      for Iter=1..Расшифр do
       if Расшифр[Iter].ФАИП=GetFieldR(OA,i,"ФАИП") and
          Расшифр[Iter].Ист=GetFieldS(OA,i,"Ист") and
          Расшифр[Iter].ТипКБК=GetFieldS(OA,i,"ТипКБК") and
          Расшифр[Iter].КБК=GetFieldS(OA,i,"КБК") and
          Расшифр[Iter].Призн=GetFieldS(OA,i,"Призн") and
          Расшифр[Iter].Предм1=GetFieldS(OA,i,"Предм1") and
          Расшифр[Iter].Предм2=GetFieldS(OA,i,"Предм2") and
          Расшифр[Iter].Предм3=GetFieldS(OA,i,"Предм3") and
          Расшифр[Iter].Предм4=GetFieldS(OA,i,"Предм4") and
          Расшифр[Iter].Примеч=GetFieldS(OA,i,"Примеч") and
          Расшифр[Iter].ДопКл=GetFieldS(OA,i,"ДопКл"):
          Расшифр[Iter].Сум_Пре1_1 =GetFieldN(OA,i,"Сум1_1");
          Расшифр[Iter].Сум_Пре1_2 =GetFieldN(OA,i,"Сум1_2");
          Расшифр[Iter].Сум_Пре1_3 =GetFieldN(OA,i,"Сум1_3");
          Расшифр[Iter].Сум_Пре1_4 =GetFieldN(OA,i,"Сум1_4");
          Расшифр[Iter].Сум_Пре1_5 =GetFieldN(OA,i,"Сум1_5");
          Расшифр[Iter].Сум_Пре1_6 =GetFieldN(OA,i,"Сум1_6");
          Расшифр[Iter].Сум_Пре1_7 =GetFieldN(OA,i,"Сум1_7");
          Расшифр[Iter].Сум_Пре1_8 =GetFieldN(OA,i,"Сум1_8");
          Расшифр[Iter].Сум_Пре1_9 =GetFieldN(OA,i,"Сум1_9");
          Расшифр[Iter].Сум_Пре1_10=GetFieldN(OA,i,"Сум1_10");
          Расшифр[Iter].Сум_Пре1_11=GetFieldN(OA,i,"Сум1_11");
          Расшифр[Iter].Сум_Пре1_12=GetFieldN(OA,i,"Сум1_12");
          Расшифр[Iter].Сум_Пре2=GetFieldN(OA,i,"Сум2");
          Расшифр[Iter].Сум_Пре3=GetFieldN(OA,i,"Сум3");
          Расшифр[Iter].Сум_Пре4=GetFieldN(OA,i,"Сум4");
          Расшифр[Iter].Сум_Пре5=GetFieldN(OA,i,"Сум5");
          Расшифр[Iter].Сум_Пре6=GetFieldN(OA,i,"Сум6");
          Расшифр[Iter].Нов=False;
          Break;
       fi;
      od;
      if Iter>Расшифр:
         Iter=InsertFrame(Расшифр,Iter);
         ПодтаблицаИзБО(Iter,OA,i,Тип);
      fi;
     od;
    else
     ClearVariable(Расшифр);
     for i=1..ii do
      Iter=InsertFrame(Расшифр,Расшифр+1);
      ПодтаблицаИзБО(Iter,OA,i,Тип);
     od;
  fi;
 Finally
  CloseWorkArea(OWA);
 end;
 ^True;
end;

Proc СинхроПризнИспДок;
var Iter:I;
 if Призн_ИспДок="":
    for Iter=1..Расшифр do
     if ТипДок=0 or ТипДок=2 or (ТипДок=1 and Расшифр[Iter].Нов):
        Расшифр[Iter].Призн=Раб.Бюджет2005.УдалитьСловоИзНабораПоМаске(Расшифр[Iter].Призн," ","ИСПДОК.*","");
     fi;
    od;
   else
    for Iter=1..Расшифр do
     if ТипДок=0 or ТипДок=2 or (ТипДок=1 and Расшифр[Iter].Нов):
        Расшифр[Iter].Призн=Раб.Бюджет2005.ДобавитьСловоВНаборСЗаменой(Расшифр[Iter].Призн," ",Призн_ИспДок,"ИСПДОК.*","");
     fi;
    od;
 fi;
end;

Func Проверить:L;
var Iter,Iter2,y,yy,i:I;
var СчДеб,СчКре:S;
var Flag:L;
var СумРОбщ:N;
var vДата:D;
var isФАИП:L;
 Refresh;
 УдалитьПустыеСтроки;
 if ТипДок=1:
    if Изм_НомерДок="": Message("Заполните номер заявки",mtError); Template.Field="Изм_НомерДок"; ^False; fi;
    if БО=nil or БО_Пре=nil: Message("Выберите бюджетное обязательство",mtError); Template.Name="S2"; Template.Field="НомерДок705_"; ^False; fi;
    vДата=if(БО_Пре.ТипДок=1,Изм_ДатаДок,ДатаДок);
    if Изм_ДатаДок<vДата: Message("Дата внесения изменений ("+DateToString(Изм_ДатаДок)+") не может быть ранее даты ("+DateToString(vДата)+") предущих сведений",mtError); Template.Name="S2"; Template.Field="НомерДок_"; ^False; fi;
    if Изм<=БО_Пре.Изм: Message("Порядковый номер изменений ("+Str(Изм)+") не может быть меньше ("+Str(БО_Пре.Изм)+") номера изменений предыдущих сведений",mtError); Template.Name="S2"; Template.Field="Изм_"; ^False; fi;
    if not Year(vДата)=Year(Изм_ДатаДок): Message("Текущий год внесения изменений "+Str(Year(Изм_ДатаДок))+" должен совпадать с текущим годом обязательства "+Str(Year(vДата))+"^MИспользуете заявку на перерегистрацию бюджетного обязательства, для внесения изменений на следующий год",mtError); Template.Field="Изм_ДатаДок"; ^False; fi;
    ЗаполнитьИзБО(БО,True,ТипДок);
 fi;
 if not ФорматНомер=0:
    if Префикс="": Message("Заполните префикс номера сведений",mtError); Template.Field="НомерДок_"; ^False; fi;
    if Сепаратор="": Message("Заполните разделитель префикса и номера сведений",mtError); Template.Field="НомерДок_"; ^False; fi;
 fi;
 if НомерДок="": Message("Заполните номер сведений",mtError); Template.Field="НомерДок_"; ^False; fi;
 if ДатаДок=1.1.100: Message("Заполните дату сведений",mtError); Template.Field="ДатаДок"; ^False; fi;
 if ТипДок=2:
    if БО=nil or БО_Пре=nil: Message("Выберите бюджетное обязательство",mtError); Template.Name="S2"; Template.Field="НомерДок706_"; ^False; fi;
    if Изм_НомерДок="": Message("Заполните номер заявки",mtError); Template.Field="НомерДок706_"; ^False; fi;
    ТекГод=Year(ДатаДок);
    if Year(Изм_ДатаДок)>=ТекГод: Message("Текущий год перерегистрации "+Str(ТекГод)+" для данного обязательства должен быть больше чем "+Str(Year(Изм_ДатаДок)),mtError); Template.Field="ДатаДок"; ^False; fi;
 fi;
 if Рекв=nil or Клиент="": Message("Заполните получателя бюджетных средств",mtError); Template.Field="Клиент"; ^False; fi;
 if Банк=nil: Message("Заполните поле 'Федеральное казначейство, орган Федерального казначейства'",mtError); Template.Field="Банк.РПО_ОФК_Имя"; ^False; fi;
 if Банк.РПО_КодБюдж="1" and Рекв.РПО_КБП="": Message("Заполните код клиента по сводному реестру",mtError); Template.Field="Рекв.РПО_КБП"; ^False; fi;
 if Банк.РПО_ЛСчет="": Message("Заполните номер лицевого счета",mtError); Template.Field="Банк.РПО_ЛСчет"; ^False; fi;
 --if Призн_ЛС="": Message("Введите аналитический признак лицевого счета",mtError); Template.Field="Призн_ЛС"; ^False; fi;
 --if Name_A(Призн_ЛС)=" ": 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 ФинОрган="": Message("Заполните поле 'Финансовый орган'",mtError); Template.Field="ФинОрган"; ^False; fi;
 if Банк.РПО_ФО_ОКПО="" and ver>=11: Message("Заполните ОКПО финансового органа (значение кода можно найти в выписке)",mtError); Template.Field="Банк_РПО_ФО_ОКПО"; ^False; fi;
 if Банк.РПО_ОФК_Код="": Message("Заполните код федерального казначейства, органа федерального казначейства",mtError); Template.Field="Банк.РПО_ОФК_Код"; ^False; fi;
 if ДолжнРук="" and ДатаДок<10.08.2009: Message("Заполните должность руководителя",mtError); Template.Field="ДолжнРук"; ^False; fi;
 if ФИОРук="": Message("Заполните ФИО руководителя",mtError); Template.Field="ФИОРук"; ^False; fi;
 if ДатаПодписи=1.1.100: Message("Заполните дату подписи",mtError); Template.Field="ДатаПодписи"; ^False; fi;
 if ДатаПодписи<ДатаДок: Message("Дата подписи не может быть ранее даты документа",mtError); Template.Field="ДатаПодписи"; ^False; fi;
 --Раздел 1.
 if not Осн_ДокВид="" or ver>=11:
    if Р3 and ver<11: Message("Заполнение Раздела 1 необязательно, при заполненом Разделе 3",mtWarning); fi;
    if Осн_ДокВид="" and ver>=11 and not f20130901: Message("Введите вид документа-основания",mtError); Template.Field="Осн_ДокВид"; ^False; fi;
    if not (Осн_ДокВид="государственный контракт" or Осн_ДокВид="договор" or Осн_ДокВид="соглашение" or Осн_ДокВид="-") and ver>=11 and not f20130901: Message("Недопустимый вид документа-основания '"+Осн_ДокВид+"'",mtError); Template.Field="Осн_ДокВид"; ^False; fi;
    if Осн_ДокНом="": Message("Введите номер документа-основания",mtError); Template.Field="Осн_ДокНом"; ^False; fi;
    if Осн_ДокДат=1.1.100: Message("Введите дату документа-основания",mtError); Template.Field="Осн_ДокДат"; ^False; fi;
    if Осн_ДокДН=1.1.100 and not f20130901: Message("Введите дату начала действия документа-основания",mtError); Template.Field="Осн_ДокДН"; ^False; fi;
    if not Осн_ДокДК=1.1.100 and Осн_ДокДК<Осн_ДокДН: Message("Дата окончания действия не может быть ранее дату начала действия документа-основания",mtError); Template.Field="Осн_ДокДК"; ^False; fi;
    if Round(Осн_ДокСум,2)=0 and (ТипДок_=0 or ТипДок_=2) and not Р3: Message("Введите сумму в валюте обязательства",mtError); Template.Field="Осн_ДокСум"; ^False; fi;
    if Осн_ДокОКВ="" and not Р3: Message("Введите код валюты по ОКВ",mtError); Template.Field="Осн_ДокОКВ"; ^False; fi;
    if not Round(Осн_ДокСум,2)=0 and Round(Осн_ДокСумРуб,2)=0 and ((ver>=11 and (setЗаполР1_Гр8 or f20130901)) or not Осн_ДокОКВ="643") and not Р3: Message("Введите сумму в валюте Российской Федерации",mtError); Template.Field="Осн_ДокСумРуб"; ^False; fi;
    if not RoundПроцАв(Осн_ДокПроцАв)=0:
       if not RoundПроцАв(Осн_ДокПроцАв)=RoundПроцАв(Осн_ДокСумАв*100/Осн_ДокСум):
          if EnqOkCancel("Указанный процент авансового платежа ("+Str(RoundПроцАв(Осн_ДокПроцАв),4)+") не равен проценту исчисленного от общей суммы документа ("+Str(RoundПроцАв(Осн_ДокСумАв*100/Осн_ДокСум),4)+")^MИгнорировать ?",mtWarning)=cmCancel:
             Template.Field="Осн_ДокПроцАв";
             ^False;
          fi;
       fi;
    fi;
    if Round(Осн_ДокСумАв,2)>Round(Осн_ДокСум,2) and not Round(Осн_ДокСум,2)=0: Message("Сумма аванса не может превышать сумму документа-основания",mtError); Template.Field="Осн_ДокСум"; ^False; fi;
   else
    if not Р3 and (not Осн_ДокНом="" or not Осн_ДокДат=1.1.100 or not Осн_ДокДН=1.1.100 or not Осн_ДокДК=1.1.100 or not Round(Осн_ДокСум,2)=0 or not Round(Осн_ДокСумРуб,2)=0 or not RoundПроцАв(Осн_ДокПроцАв)=0 or not Round(Осн_ДокСумАв,2)=0): Message("Введите вид документа - основания",mtError); Template.Field="Осн_ДокВид_"; ^False; fi;
 fi;
 --Раздел 2.
 if РеквП=nil and ((not Р3 and ver<11) or ver>=11): Message("Введите наименование / фамилия, имя, отчество",mtError); Template.Field="РеквП.ПолнИмя"; ^False; fi;
 if Р3 and (not РеквП=nil or not БанкП=nil) and ver<11: Message("Заполнение Раздела 2 необязательно, при заполненом Разделе 3",mtWarning); fi;
 if not РеквП=nil or ver>=11:
    if РеквП.ПолнИмя="": Message("Введите наименование / фамилия, имя, отчество",mtError); Template.Field="РеквП.ПолнИмя"; ^False; fi;
    if РеквП.ИНН="" and РеквП.РПО_ОКСМ="643": Message("Введите ИНН",mtError); Template.Field="РеквП.ИНН"; ^False; fi;
    if not f20130901:
       if РеквП.РПО_Страна="": Message("Введите наименование страны",mtError); Template.Field="РеквП.РПО_Страна"; ^False; fi;
       if РеквП.РПО_ОКСМ="" and РеквП.Тип=0: Message("Введите код страны по ОКСМ",mtError); Template.Field="РеквП.РПО_ОКСМ"; ^False; fi;
       if РеквП.ЮрАдрес="": Message("Введите юридический адрес",mtError); Template.Field="РеквП.ЮрАдрес"; ^False; fi;
    fi;
    if Призн_К="": Message("Заполните аналитический признак контрагента",mtError); Template.Field="Призн_К"; ^False; fi;
    if Name_A(Призн_К)=" ": Message("Неизвестный идентификатор аналитического признака контрагента '"+Призн_К+"'",mtError); Template.Field="Призн_К"; ^False; fi;
    if not CardFileRecSign("Контрагент","Признак","К",РеквП,"")=Призн_К:
       if EnqOkCancel("Аналитический признак контрагента по реквизитам ("+CardFileRecSign("Контрагент","Признак","К",РеквП,"")+") отличен от выбранного признака ("+Призн_К+")^MИгнорировать ?",mtWarning)=cmCancel: Template.Field="Призн_К"; ^False; fi;
    fi;
 fi;
 if (БанкП=nil and not Р3 and ver<11) or (БанкП=nil and ver>=11):
    if EnqOkCancel("Не заполнены банковские реквизиты контрагента. Игнорировать ?",mtWarning)=cmCancel:
       Template.Field="БанкП.РСчет";
       ^False; 
    fi;
 fi;
 if not БанкП=nil:
    if БанкП.РСчет="": 
       if verТФФ<10:
          Message("Введите номер банковского счета",mtError); Template.Field="БанкП.РСчет"; ^False;
         else
          if EnqOkCancel("Внимание!^MНе указан номер банковского счета контрагента^MВ случае, когда получателем выступает кредитная организация, расчетный счет может не указываться^MИгнорировать данное предупреждение ?",mtWarning)=cmCancel: Template.Field="БанкП.РСчет"; ^False; fi;
       fi;
    fi;
    if БанкП_Банк="": Message("Введите наименование банка",mtError); Template.Field="БанкП_Банк"; ^False; fi;
    if БанкП.БИК="": Message("Введите БИК банка",mtError); Template.Field="БанкП.БИК"; ^False; fi;
    i=Раб.Вспом.Справ_БИК.Контроль(БанкП,"банковских реквизитов контрагента");
    if i=-2: Template.Field="БанкП.БИК"; ^False;
      |i=-6: Template.Field="БанкП.КСчет"; ^False;
      |i< 0: Template.Field="БанкП_Банк"; ^False;
    fi;
 fi;
 if ver>=11:
    ClearVariable(Buf);
    Buf[1]=RecordToString(РеквП)+RecordToString(БанкП);
    Template.Name="S6";
    for Iter=1..Раздел2 do
     if Раздел2[Iter].РеквП.ПолнИмя="": Message("Введите наименование / фамилия, имя, отчество",mtError); Template.Field="РеквП.ПолнИмя"; Template.Frame=Iter; ^False; fi;
     if Раздел2[Iter].РеквП.ИНН="" and Раздел2[Iter].РеквП.РПО_ОКСМ="643": Message("Введите ИНН",mtError); Template.Field="РеквП.ИНН"; Template.Frame=Iter; ^False; fi;
     if not f20130901:
        if Раздел2[Iter].РеквП.РПО_Страна="": Message("Введите наименование страны",mtError); Template.Field="РеквП.РПО_Страна"; Template.Frame=Iter; ^False; fi;
        if Раздел2[Iter].РеквП.РПО_ОКСМ="" and РеквП.Тип=0: Message("Введите код страны по ОКСМ",mtError); Template.Field="РеквП.РПО_ОКСМ"; Template.Frame=Iter; ^False; fi;
        if Раздел2[Iter].РеквП.ЮрАдрес="": Message("Введите юридический адрес",mtError); Template.Field="РеквП.ЮрАдрес"; Template.Frame=Iter; ^False; fi;
     fi;
     if Раздел2[Iter].Призн_К="": Message("Заполните аналитический признак контрагента",mtError); Template.Field="Призн_К"; Template.Frame=Iter; ^False; fi;
     if Name_A(Раздел2[Iter].Призн_К)=" ": Message("Неизвестный идентификатор аналитического признака контрагента '"+Призн_К+"'",mtError); Template.Field="Призн_К"; Template.Frame=Iter; ^False; fi;
     if not CardFileRecSign("Контрагент","Признак","К",Раздел2[Iter].РеквП,"")=Раздел2[Iter].Призн_К:
        if EnqOkCancel("Аналитический признак контрагента по реквизитам ("+CardFileRecSign("Контрагент","Признак","К",Раздел2[Iter].РеквП,"")+") отличен от выбранного признака ("+Раздел2[Iter].Призн_К+")^MИгнорировать ?",mtWarning)=cmCancel: Template.Field="Призн_К"; Template.Frame=Iter; ^False; fi;
     fi;
     if not Раздел2[Iter].БанкП=nil:
        if Раздел2[Iter].БанкП.РСчет="":
           if EnqOkCancel("Внимание!^MНе указан номер банковского счета контрагента^MВ случае, когда получателем выступает кредитная организация, расчетный счет может не указываться^MИгнорировать данное предупреждение ?",mtWarning)=cmCancel: Template.Field="БанкП.РСчет"; Template.Frame=Iter; ^False; fi;
        fi;
        if БанкП_Банк2[Iter]="": Message("Введите наименование банка",mtError); Template.Field="БанкП_Банк2"; Template.Frame=Iter; ^False; fi;
        if Раздел2[Iter].БанкП.БИК="": Message("Введите БИК банка",mtError); Template.Field="БанкП.БИК"; Template.Frame=Iter; ^False; fi;
        i=Раб.Вспом.Справ_БИК.Контроль(Раздел2[Iter].БанкП,"банковских реквизитов контрагента");
        if i=-2: Template.Field="БанкП.БИК"; Template.Frame=Iter; ^False;
          |i=-6: Template.Field="БанкП.КСчет"; Template.Frame=Iter; ^False;
          |i< 0: Template.Field="БанкП_Банк"; Template.Frame=Iter; ^False;
        fi;
     fi;
    od;
    i=SearchInArray(Buf,RecordToString(Раздел2[Iter].РеквП)+RecordToString(Раздел2[Iter].БанкП));
    if i=-1:
       AddInArray(Buf,True,False,RecordToString(Раздел2[Iter].РеквП)+RecordToString(Раздел2[Iter].БанкП));
      else
       Message("Повторный ввод контрагента (банковских реквизитов) оп строке №"+Str(Iter+1),mtError);
       Template.Field="РеквП.ПолнИмя";
       Template.Frame=Iter;
       ^False;
    fi;
 fi;
 --Раздел 3.
 if Р3:
    if Исп_ДокНом="": Message("Введите номер исполнительного документа",mtError); Template.Field="Исп_ДокНом"; ^False; fi;
    if Исп_ДокДат=1.1.100: Message("Введите дату исполнительного документа",mtError); Template.Field="Исп_ДокДат"; ^False; fi;
    if Исп_Орган="": Message("Введите наименование судебного органа",mtError); Template.Field="Исп_Орган"; ^False; fi;
    if Round(Исп_ДокСум,2)=0: Message("Введите сумму исполнительного документа",mtError); Template.Field="Исп_ДокСум"; ^False; fi;
    if Исп_УведНом="": Message("Введите номер уведомления о поступлении исполнительного документа",mtError); Template.Field="Исп_УведНом"; ^False; fi;
    if Исп_УведДат=1.1.100: Message("Введите дату уведомления о поступлении исполнительного документа",mtError); Template.Field="Исп_УведДат"; ^False; fi;
    if Призн_ИспДок="": Message("Укажите аналитический признак исполнительного документа",mtError); Template.Field="Призн_ИспДок"; ^False; fi;
    if Name_A(Призн_ИспДок)=" ": Message("Неизвестный идентификатор аналитического признака исполнительного документа '"+Призн_ИспДок+"'",mtError); Template.Field="Призн_ИспДок"; ^False; fi;
    if not Исп_Док=nil:
       if not РеквП=Исп_Док.Контр: Message("Контрагент по исполнительному документу 'К."+Исп_Док.Контр.Признак+" отличен от контрагента по бюджетному обязательству '"+Призн_К+"'",mtError); Template.Field="Призн_ИспДок"; ^False; fi;
    fi;
 fi;
 СинхроПризнИспДок;
 --Раздел 4.
 if Осн_ДокВид="1" or (ver>=11 and Р4):
    if not f20130901:
       if Доп_РазмещЗаказ="": Message("Введите способ размещения заказа",mtError); Template.Field="Доп_РазмещЗаказ_"; ^False; fi;
       if Доп_ДатаИтог=1.1.100 and not Доп_РазмещЗаказ="6": Message("Введите дату подведения итогов конкурса, аукциона, запроса котировок",mtError); Template.Field="Доп_ДатаИтог"; ^False; fi;
       if Доп_ВидДокОсн="": Message("Введите вид документа, подтверждающего основание заключения контракта",mtError); Template.Field="Доп_ВидДокОсн"; ^False; fi;
       if Доп_НомДокОсн="": Message("Введите номер документа, подтверждающего основание заключения контракта",mtError); Template.Field="Доп_НомДокОсн"; ^False; fi;
       if Доп_ДатаДокОсн=1.1.100: Message("Введите дату документа, подтверждающего основание заключения контракта",mtError); Template.Field="Доп_ДатаДокОсн"; ^False; fi;
    fi;
    if Доп_Ном_Реестр="": Message("Введите номер реестровой записи в реестре государственных контрактов",mtError); Template.Field="Доп_Ном_Реестр"; ^False; fi;
   else
    if Р4: Message("Раздел 4 должен быть заполнен, только в случае, если вид документа-основания государственный контракт",mtError); Template.Field="Осн_ДокВид_"; ^False; fi;
 fi;
 if not Р1 and not Р3 and ver<11: Message("Должен быть заполнен один из разделов 1 или 3",mtError); Template.Field="Осн_ДокВид_"; ^False; fi;
 ОбновитьСч(-1);
 if Расшифр=0: Message("Заполните расшифровку обязательства",mtError); Template.Field="Ист_"; Template.Frame=1; ^False; fi;
 ShowProgress(Расшифр,"Проверка...");
 Try
  Раб.Бюджет.ПроверитьПризнакиНачать;
  СумРОбщ=0;
  isФАИП=False;
  for Iter=1..Расшифр do
   if not Расшифр[Iter].ФАИП=nil and not (Round(Итог_Сум1[Iter],2)=0 and Round(Расшифр[Iter].Сум2,2)=0 and Round(Расшифр[Iter].Сум3,2)=0 and Round(Расшифр[Iter].Сум4,2)=0 and Round(Расшифр[Iter].Сум5,2)=0 and Round(Расшифр[Iter].Сум6,2)=0): isФАИП=True; Break; fi;
  od;
  for Iter=1..Расшифр do
   ProgressPos(Iter);
   if isФАИП and Расшифр[Iter].ФАИП=nil and not (Round(Итог_Сум1[Iter],2)=0 and Round(Расшифр[Iter].Сум2,2)=0 and Round(Расшифр[Iter].Сум3,2)=0 and Round(Расшифр[Iter].Сум4,2)=0 and Round(Расшифр[Iter].Сум5,2)=0 and Round(Расшифр[Iter].Сум6,2)=0): Message("Выберите объект ФАИП",mtError); Template.Field="ФАИП.Код"; Template.Frame=Iter; ^False; fi;
   if not Расшифр[Iter].ФАИП=nil:
      if ФАИП_Наим[Iter]="": Message("Заполните наименование объекта ФАИП",mtError); Template.Field="ФАИП_Наим"; Template.Frame=Iter; ^False; fi;
      if Расшифр[Iter].ФАИП.Код="": Message("Заполните код объекта ФАИП",mtError); Template.Field="ФАИП.Код"; Template.Frame=Iter; ^False; fi;
   fi;
   if Расшифр[Iter].Ист="": Message("Заполните наименование вида средств для исполнения обязательства",mtError); Template.Field="Ист_"; Template.Frame=Iter; ^False; fi;
   if Расшифр[Iter].КБК="": Message("Заполните код по БК",mtError); Template.Field="КБК_"; Template.Frame=Iter; ^False; fi;
   if Предм[Iter]="" and not Р3: Message("Заполните предмет по документу основанию",mtError); Template.Field="Предм_"; Template.Frame=Iter; ^False; fi;
   if Расшифр[Iter].Ист="2": yy=2; else yy=3; fi;
   for y=1..yy do
    if y>1:
       Flag=not GetVariableN("Расшифр["+Str(Iter)+"].Сум"+Str(y))=0;
      else
       Flag=True;
    fi;
    if Flag:
       СчДеб=GetVariableS("Расшифр["+Str(Iter)+"].СчДеб"+Str(y));
       СчКре=GetVariableS("Расшифр["+Str(Iter)+"].СчКре"+Str(y));
       if Name_S(СчДеб)=" ": Message("Неизвестный идентификатор счета "+СчДеб,mtError); Template.Field="КБК_"; Template.Frame=Iter; ^False; fi;
       if Name_S(СчКре)=" ": Message("Неизвестный идентификатор счета "+СчКре,mtError); Template.Field="КБК_"; Template.Frame=Iter; ^False; fi;
       if not Correspond(СчДеб,СчКре): Message("Счета не могут корреспондировать "+СчДеб+"/"+СчКре,mtError);  Template.Field="КБК_"; Template.Frame=Iter; ^False; fi;
       if Раб.Бюджет.ПроверитьПризнакиОбязательные(СчДеб,СчКре,Расшифр[Iter].Призн,ИсклПризн)=False : Template.Field="Призн_"; Template.Frame=Iter; ^False; fi;
       if Раб.Бюджет.ПроверитьПризнакиСвязанные(СчДеб,СчКре,Расшифр[Iter].Призн,ИсклПризн)=False : Template.Field="Призн_"; Template.Frame=Iter; ^False; fi;
    fi;
   od;
   СумРОбщ=СумРОбщ+Итог_Сум1[Iter]+Расшифр[Iter].Сум2+Расшифр[Iter].Сум3+Расшифр[Iter].Сум4+Расшифр[Iter].Сум5+Расшифр[Iter].Сум6;
   if (ТипДок_=0 or ТипДок_=2) and Round(Итог_Сум1[Iter],2)=0 and Round(Расшифр[Iter].Сум2,2)=0 and Round(Расшифр[Iter].Сум3,2)=0 and Round(Расшифр[Iter].Сум4,2)=0 and Round(Расшифр[Iter].Сум5,2)=0 and Round(Расшифр[Iter].Сум6,2)=0: Message("Заполните одну из сумм",mtError); Template.Field="Сум1_1"; Template.Frame=Iter; ^False; fi;
   for Iter2=Iter+1..Расшифр do
    if Расшифр[Iter].ФАИП=Расшифр[Iter2].ФАИП and
       Расшифр[Iter].Ист=Расшифр[Iter2].Ист and
       Расшифр[Iter].ТипКБК=Расшифр[Iter2].ТипКБК and
       Расшифр[Iter].КБК=Расшифр[Iter2].КБК and
       Расшифр[Iter].Призн=Расшифр[Iter2].Призн and
       Расшифр[Iter].Предм1=Расшифр[Iter2].Предм1 and
       Расшифр[Iter].Предм2=Расшифр[Iter2].Предм2 and
       Расшифр[Iter].Предм3=Расшифр[Iter2].Предм3 and
       Расшифр[Iter].Предм4=Расшифр[Iter2].Предм4 and
       Расшифр[Iter].Примеч=Расшифр[Iter2].Примеч and
       Расшифр[Iter].ДопКл=Расшифр[Iter2].ДопКл: Message("Повторный ввод данных, строка "+Str(Iter)+" и "+Str(Iter2),mtError); Template.Field="пп"; Template.Frame=Iter2; ^False;
    fi;
   od;
  od;
  if Р3 and (Round(СумРОбщ,2)<>Round(Исп_ДокСум,2)) and ТипДок_=0 then
     Message("Сумма исполнительного документа ("+Str(Исп_ДокСум,2)+") не равна сумме по расшифровке ("+Str(СумРОбщ,2)+")",mtWarning);
    |Р1 and (Round(СумРОбщ,2)<>Round(Осн_ДокСум,2)) and ТипДок_=0 then
     Message("Сумма документа-основания ("+Str(Осн_ДокСум,2)+") не равна сумме по расшифровке ("+Str(СумРОбщ,2)+")",mtWarning);
  fi;
 Finally
  CloseProgress;
 end;
 if not fКонтрольЛБО=-1:
    Раб.Вспом.ОстЛБО.ОчиститьВх;
    Раб.Вспом.ОстЛБО.ОчиститьВх2;
    vДата=if(Рег:РегДата|ТипДок=1:Изм_ДатаДок|True:ДатаДок);
    for i=1..Расшифр do
     if Расшифр[i].Ист="1" and Расшифр[i].ТипКБК="10":
        Раб.Вспом.ОстЛБО.ДобавитьПБО(vДата+1,ВзятьКБК(Расшифр[i].КБК,Расшифр[i].ТипКБК,""),Расшифр[i].Призн,if(ТипДок=1,Итог_Изм1[i],Итог_Сум1[i]));
        Раб.Вспом.ОстЛБО.ДобавитьПБО2(vДата+1,"БО."+Признак,ВзятьКБК(Расшифр[i].КБК,Расшифр[i].ТипКБК,""),Расшифр[i].Призн,if(ТипДок=1,Итог_Изм1[i],Итог_Сум1[i]));
     fi;
    od;
    i=Раб.Вспом.ОстЛБО.Проверить;
    if fКонтрольЛБО=1 and i=-1:
       ^False;
      |not i=1:
       if EnqOkCancel("Игнорировать данное предупреждение ?",mtWarning)=cmCancel:
          ^False;
       fi;
    fi;
 fi;
 ^True;
end;

Func ТекЗапись:Record;
 ^Current;
end;

Func ЗаполнитьКлючДок:L;
var Flag:L;
 Flag=True;
 if FuncExists(extКлюч): 
    Flag=ExecuteFuncL(extКлюч);
    if not Flag and (Учитывать or ВБанк or Рег):
       SkipEvent=True;
       Try
        Рег=Flag;       cbРег.State=Рег;
        ВБанк=Flag;     cbВБанк.State=ВБанк;
        Учитывать=Flag; cbУчитывать.State=Учитывать;
       Finally
        SkipEvent=False;
       end;
       Оформление;
    fi;
 fi;
 ^Flag;
end;

Func КонтрольТипДок(Iter:I; Silent:L):L;
 if ТипДок=1 and БО=nil: 
    if not Silent:
       Message("Выберите бюджетное обязательство",mtError);
       Template.Name="S2";
       Template.Field="НомерДок_";
    fi;
    ^False;
 fi;
 if ТипДок=1 and not Расшифр[Iter].Нов: 
    if not Silent:
       Message("Изменение данной строки невозможно, если необходимо аннулировать значение данной строки проставте '0' в суммовые показатели",mtError);
    fi;
    ^False;
 fi;
 ^True;
end;

Func УчетНомСущ (aУчетНом:S):I;
var OWA,nr:I;
var ff,tmp,v:S;
 if ТипДок=2:
    ff=if(ФорматНомер=0,"and not НомерДок='"+Изм_НомерДок+"'"," and not Префикс='"+Изм_Префикс+"' and not НомерДок='"+Изм_НомерДок+"'")+" and not UKey="+RecordToString(Current);
   else
    ff=if(ФорматНомер=0,"and not НомерДок='"+НомерДок+"'"," and not Префикс='"+Префикс+"' and not НомерДок='"+НомерДок+"'");
 fi;
 OWA=OpenWorkArea(SelfCrd,"","РегНомер='"+aУчетНом+"' "+ff);
 Try
  nr=Records(OWA);
  if not nr=0:
     if GetFieldI(OWA,nr,"ТипДок")=1:
        tmp="Заявка на изменение №";
        if GetFieldI(OWA,nr,"Изм_ФорматНомер")=0:
           tmp=tmp+GetFieldS(OWA,nr,"Изм_НомерДок")+" от "+DateToString(GetFieldD(OWA,nr,"Изм_ДатаДок"));
          else
           tmp=tmp+GetFieldS(OWA,nr,"Изм_Префикс")+GetFieldS(OWA,nr,"Изм_Сепаратор")+GetFieldS(OWA,nr,"Изм_НомерДок")+" от "+DateToString(GetFieldD(OWA,nr,"Изм_ДатаДок"));
        fi;
       else
        tmp=if(GetFieldI(OWA,nr,"ТипДок")=2,"Заявка на перерегистрацию №","Сведения №");
        if GetFieldI(OWA,nr,"ФорматНомер")=0:
           tmp=tmp+GetFieldS(OWA,nr,"НомерДок")+" от "+DateToString(GetFieldD(OWA,nr,"ДатаДок"));
          else
           tmp=tmp+GetFieldS(OWA,nr,"Префикс")+GetFieldS(OWA,nr,"Сепаратор")+GetFieldS(OWA,nr,"НомерДок")+" от "+DateToString(GetFieldD(OWA,nr,"ДатаДок"));
        fi;
     fi;
     v=GetFieldS(OWA,nr,"Осн_ДокВид");
     if v="":
        tmp=tmp+" (Исполнительный документ "+GetFieldS(OWA,nr,"Исп_ДокНом")+" от "+DateToString(GetFieldD(OWA,nr,"Исп_ДокДат"))+")";
       else
        v=if(v="1","Государственный контракт",GetFieldS(OWA,nr,"Осн_ДокНаим"));
        if v="": v="Иной договор"; fi;
        tmp=tmp+" ("+v+"№ "+GetFieldS(OWA,nr,"Осн_ДокНом")+" от "+DateToString(GetFieldD(OWA,nr,"Осн_ДокДат"))+")";
     fi;
     ^EnqOkCancel("Учетный номер "+aУчетНом+" уже присвоен другому документу:^M"+tmp+"^MИгнорировать данное предупреждение ?",mtWarning);
  fi;
 Finally
  CloseWorkArea(OWA);
 end;
 ^cmOk;
end;
--Процедуры и функции -------------                           
--
--
--Обработчики событий полей шаблона-----
Proc Коды_OnClick(Row: Integer; Col: Integer; Double: Logical);
 if Double:
    if Input(Test,"Вы уверены?")=cmOk:
       Test=Up(Test);
       if SubStr(Test,1,1)=Chr(198) and SubStr(Test,2,1)=Chr(206) and SubStr(Test,3,1)=Chr(207) and SubStr(Test,4,1)=Chr(192):
          Message("Фу как грубо, в следующий раз, пароль следует набирать правильно: ;JGF",mtWarning);

          Test="Test";
         else
          if Test=";jgf": Test="Test";
             Message("Ok");
            else
             Test="";
             Message("Видимо нет");
          fi;
       fi;
       Оформление;
    fi;
 fi;
end;

Proc Форма_OnClick(Row: Integer; Col: Integer; Double: Logical);
var n:i;
var ff:s;
 if Double:
    ClearVariable(Buf);
    Buf[1]="ф.0531702 Сведения о принятом бюджетном обязательстве";
    Buf[2]="ф.0531705 Заявка на внесение изменений в бюджетное обязательство";
    Buf[3]="ф.0531706 Заявка на на перерегистрацию бюджетного обязательства";
    n=Alternate("Выберите тип формы",Buf,-1,ТипДок+1,12);
    if not n=0:
       if EnqOkCancel("Вы уверены, что хотите изменить тип формы:^M"+Buf[ТипДок+1]+"^Mна:^M"+Buf[n],mtWarning)=cmOk:
          OverrideТипДок=Str(n-1);
          if Int(OverrideТипДок)=ТипДок: OverrideТипДок=""; fi;
          Оформление;
          if OverrideТипДок="1" and (Изм_НомерДок="" or Изм_ДатаДок=1.1.100):
             Изм_ФорматНомер=setФорматНомер;
             Изм_ДатаДок=ToDay;
             ff="(ТипДок=1 or OverrideТипДок='1')";
             if not Изм_ФорматНомер=0:
                Изм_Префикс=hПрефикс;
                Изм_Сепаратор=setСепаратор;
                ff=ff+" and Изм_Префикс='"+Изм_Префикс+"'";
             fi;
             Изм_Номер=Раб.Обл.СледСУчетомДатыФ(SelfCrd,"Изм_Номер","Изм_ДатаДок",Изм_ДатаДок,ff);
             Изм_НомерДок=Str(Изм_Номер);
          fi;
          EditorApply;
       fi;
    fi;
 fi;
end;

Func НастрПоУмолч_OnEnter(FieldName: String; Iter: Integer): logical;
 if FieldName="НастрПоУмолч":
    if EnqOkCancel("Восстановить значения по умолчанию ?",mtWarning)=cmCancel: ^False; fi;
 fi;
 fУтвДок=False;
 fДобГородВБанк=False;
 setФорматНомер=0;
 setСепаратор="/";
 setДлинаНомер=5;
 setВариантР5=0;
 fCMF_onРег=False;
 setЗаполР1_Гр8=True;
 setФорматР1_Гр9="";
 setПоказИтогФАИП=False;
 setОкрПроцАв="4";
 fGUID_FK=False;
 f20130901=ToDay>=1.9.2013;
 if FieldName="НастрПоУмолч":
    Message("Значения по умолчанию восстановлены");
 fi;
 Return False;
end;

Func НастрЗакр_OnEnter(FieldName: String; Iter: Integer): logical;
 if not setФорматНомер=0 and setСепаратор="": Message("Задайте разделитель префикса и номера документа",mtError); Template.Field="setСепаратор"; ^False; fi;
 ОткрНастр(False);
 Настр(True);
 Return False;
end;

Func Flags_OnEnter(FieldName: String; Iter: Integer): logical;
 FieldName=SubStr(FieldName,1,Length(FieldName)-1);
 PutVariableL(FieldName,not GetVariableL(FieldName));
 Return False;
end;

Func setФорматНомер_OnEnter(FieldName: String; Iter: Integer): logical;
var n:i;
 ClearVariable(Buf);
 Buf[1]="Простой номер";
 Buf[2]="Номер с префиксом";
 n=Alternate("Выберите формат номера",Buf,-1,setФорматНомер+1,12);
 if not n=0:
    setФорматНомер=n-1;
 fi;
 ^False;
end;

Func setСепаратор_OnVerify(FieldName: String; Iter: Integer; Value: String): Logical;
 if not Length(Value)=1: Message("Сепаратор должен состоять из одного символа",mtError); ^False; fi;
 Return True;
end;

Func setВариантР5_OnEnter(FieldName: String; Iter: Integer): logical;
var n:i;
 ClearVariable(Buf);
 Buf[1]="Вариант 1 --Показывать удаленные позиции (как нулевые суммы)";
 Buf[2]="План 'Б' --Не показывать удаленные позиции";
 n=Alternate("Выберите вариант",Buf,-1,setВариантР5+1,12);
 if not n=0:
    setВариантР5=n-1;
 fi;
 ^False;
end;

Func fCMF_onРег_OnEnter(FieldName: String; Iter: Integer): logical;
 fCMF_onРег=not fCMF_onРег;
 Return False;
end;

Func setЗаполР1_Гр8_OnEnter(FieldName: String; Iter: Integer): logical;
 setЗаполР1_Гр8=not setЗаполР1_Гр8;
 Return False;
end;

Func setФорматР1_гр9_OnEnter(FieldName: String; Iter: Integer): logical;
var n:i;
 ClearVariable(Buf);
 Buf[1]="   --(пусто)";
 Buf[2]="0 --(ноль)";
 n=Alternate("Выберите вариант",Buf,-1,if(setФорматР1_гр9="",1,2),12);
 if n=1: setФорматР1_гр9="";
   |n=2: setФорматР1_гр9="0";
   |true: ^False;
 fi;
 S4.Cell(6,11,CellFormat,if(setФорматР1_Гр9="0","0.####;;0","0.####;; "));
 Return False;
end;

Func setОкрПроцАв_OnEnter(FieldName: String; Iter: Integer): logical;
var n:i;
 ClearVariable(Buf);
 Buf[1]="Округлять значение до 4 знаков после запятой";
 Buf[2]="Обрезать до 4 знаков после запятой";
 n=Alternate("Выбирите ",Buf,-1,if(setОкрПроцАв="" or setОкрПроцАв="4",1,2),12);
 if n=1: setОкрПроцАв="4";
   |n=2: setОкрПроцАв="-4";
 fi;
 Return False;
end;

Func setПоказИтогФАИП_OnEnter(FieldName: String; Iter: Integer): logical;
 setПоказИтогФАИП=not setПоказИтогФАИП;
 Return False;
end;

Func fGUID_FK_OnEnter(FieldName: String; Iter: Integer): logical;
 fGUID_FK=not fGUID_FK;
 Return False;
end;

Func fКонтрольЛБО_OnEnter(FieldName: String; Iter: Integer): logical;
var n:i;
 ClearVariable(Buf);
 Buf[1]="Отключить";
 Buf[2]="Мягкий контроль (предупреждать)";
 Buf[3]="Жесткий контроль (сообщение об ошибке)";
 n=Alternate("Выберите режим контроля",Buf,-1,if(fКонтрольЛБО=1:3|fКонтрольЛБО=-1:1|True:2),12);
 if not n=0:
    fКонтрольЛБО=if(n=1:-1|n=2:0|n=3:1);
 fi;
 Return False;
end;


Func extFunc_OnVerify(FieldName: String; Iter: Integer; Value: String): Logical;
 if not Value="":
    if not FuncExists(Value): Message("Функция '"+Value+"' не найдена",mtError); ^False; fi;
 fi;
 Return True;
end;

Func НомерДок_OnEnter(FieldName: String; Iter: Integer): logical;
var tmp:S;
var Rec: Record;
var Flag:L;
 if FieldName="НомерДок_":
    if not ФорматНомер=setФорматНомер:
       ФорматНомер=setФорматНомер;
       if ФорматНомер=0:
          Префикс="";
          Сепаратор="";
         else
          Префикс=hПрефикс;
          Сепаратор=setСепаратор;
       fi;
       tmp=ExecuteFuncS("НомерДок_OnLookup","",0,0,"");
    fi;
    Flag=True;
   |FieldName="Изм_НомерДок_":
    if not Изм_ФорматНомер=setФорматНомер:
       Изм_ФорматНомер=setФорматНомер;
       if Изм_ФорматНомер=0:
          Изм_Префикс="";
          Изм_Сепаратор="";
         else
          Изм_Префикс=hПрефикс;
          Изм_Сепаратор=setСепаратор;
       fi;
       tmp=ExecuteFuncS("НомерДок_OnLookup","",0,0,"");
    fi;
    Flag=True;
   |True:
    if not БО_Пре=nil:
       if EnqOkCancel("Текущие значение будут утеряны, продолжить ?",mtWarning)=cmCancel: ^False; fi;
    fi;
    if БО=nil:
       Rec=Раб.Поиск.ВыборИзКартотеки("Выбор сведений...",SelfCrd,"НомерДок|РегНомер|Осн_ДокНом","Номер сведений|Учетный номер|Номер документа основания","Учитывать and ТекГод"+if(ТипДок=2,"<","=")+Str(Year(if(ТипДок=2,ДатаДок,Изм_ДатаДок))));
      else
       Rec=OpenCardFile(SelfCrd,"Учитывать and ТекГод"+if(ТипДок=2,"<","=")+Str(Year(if(ТипДок=2,ДатаДок,Изм_ДатаДок))),БО);
    fi;
    if not Rec=nil:
       ЗаполнитьИзБО(Rec,False,ТипДок);
    fi;
    Flag=False;
 fi;
 Return Flag;
end;

Func НомерДок_OnVerify(FieldName: String; Iter: Integer; Value: String): logical;
var p:i;
var prevПрефикс,prevНомерДок,ff:S;
 if FieldName="Изм_НомерДок_":
    if Изм_ФорматНомер=0:
       Изм_НомерДок=Value;
      else
       prevПрефикс=Изм_Префикс;
       prevНомерДок=Изм_НомерДок;
       p=Pos(Изм_Сепаратор,Value);
       if p=0:
          Изм_НомерДок=Value;
          Изм_Префикс=hПрефикс;
         else
          Изм_НомерДок=SubStr(Value,p+1,255);
          Изм_Префикс=SubStr(Value,1,p-1);
          hПрефикс=Изм_Префикс;
       fi;
       if not prevПрефикс=Изм_Префикс and prevНомерДок=Изм_НомерДок:
          ff="(ТипДок=1 or OverrideТипДок='1') and not UKey="+RecordToString(Current)+" and Изм_ДатаДок="+DateToString(if(Изм_ДатаДок=1.1.100,ToDay,Изм_ДатаДок))+" and Изм_Префикс='"+Изм_Префикс+"'";
          Изм_НомерДок=Str(Раб.Обл.СледФ(SelfCrd,"Изм_Номер",ff));
       fi;
    fi;
   else
    if ФорматНомер=0:
       НомерДок=Value;
      else
       prevПрефикс=Префикс;
       prevНомерДок=НомерДок;
       p=Pos(Сепаратор,Value);
       if p=0:
          НомерДок=Value;
          Префикс=hПрефикс;
         else
          НомерДок=SubStr(Value,p+1,255);
          Префикс=SubStr(Value,1,p-1);
          hПрефикс=Префикс;
       fi;
       if not prevПрефикс=Префикс and prevНомерДок=НомерДок:
          ff="(ТипДок=0 or ТипДок=2 or OverrideТипДок='0' or OverrideТипДок='2') and not UKey="+RecordToString(Current)+" and Префикс='"+Префикс+"'";
          if ДатаДок=1.1.100:
             НомерДок=Format("%."+Str(setДлинаНомер)+"D",Раб.Обл.СледСУчетомГодаФ(SelfCrd,"Номер","ДатаДок",ff));
            else
             НомерДок=Format("%."+Str(setДлинаНомер)+"D",Раб.Обл.СледСУчетомДатыФ(SelfCrd,"Номер","ДатаДок",ДатаДок,ff));
          fi;
       fi;
    fi;
 fi;
 Return True;
end;

Proc НомерДок_OnExit(FieldName: String; Iter: Integer);
 if FieldName="НомерДок_":
    ФорматНомер=setФорматНомер;
    if ФорматНомер=0:
       Префикс="";
       Сепаратор="";
      else
       Префикс=hПрефикс;
       Сепаратор=setСепаратор;
    fi;
    НомерДок=RepStr("0",setДлинаНомер-Length(НомерДок))+НомерДок;
    ОбработатьНомер(НомерДок,False);
   else
    Изм_ФорматНомер=setФорматНомер;
    if Изм_ФорматНомер=0:
       Изм_Префикс="";
       Изм_Сепаратор="";
      else
       Изм_Префикс=hПрефикс;
       Изм_Сепаратор=setСепаратор;
    fi;
    ОбработатьНомер(Изм_НомерДок,True);
 fi;
end;

Func НомерДок_OnLookup(Sect: String; Row: Integer; Col: Integer; Cur: String): String;
var Field,ff:S;
 Template.HideEditor(False);
 Field=AsString(Template.Field);
 if Field="НомерДок_" or Field="НомерДок706":
    ff="(ТипДок=0 or ТипДок=2 or OverrideТипДок='0' or OverrideТипДок='2') and not UKey="+RecordToString(Current);
    if not ФорматНомер=0:
       ff=ff+" and Префикс='"+Префикс+"'";
    fi;
    if ДатаДок=1.1.100:
       НомерДок=Format("%."+Str(setДлинаНомер)+"D",Раб.Обл.СледСУчетомГодаФ(SelfCrd,"Номер","ДатаДок",ff));
      else
       НомерДок=Format("%."+Str(setДлинаНомер)+"D",Раб.Обл.СледСУчетомДатыФ(SelfCrd,"Номер","ДатаДок",ДатаДок,ff));
    fi;
    ОбработатьНомер(НомерДок,False);
   else
    ff="(ТипДок=1 or OverrideТипДок='1') and not UKey="+RecordToString(Current);
    if not Изм_ФорматНомер=0:
       ff=ff+" and Изм_Префикс='"+Изм_Префикс+"'";
    fi;
    Изм_НомерДок=Str(Раб.Обл.СледСУчетомДатыФ(SelfCrd,"Изм_Номер","Изм_ДатаДок",Изм_ДатаДок,ff));
    ОбработатьНомер(Изм_НомерДок,True);
 fi;
 ^Cur;
end;

Func Изм_OnEnter(FieldName: String; Iter: Integer): logical;
var Rec: Record;
 if БО_Пре=nil: Message("Выберите бюджетное обязательство",mtError); Template.Name="S2"; Template.Field="НомерДок705_"; ^False; fi;
 Rec=OpenCardFile(SelfCrd,"Учитывать and БО="+RecordToString(БО)+" or UKey="+RecordToString(БО),БО);
 Return False;
end;

Func ДатаДок_OnVerify(FieldName: String; Iter: Integer; Value: Date):Logical;
var prevД:D;
 prevД=GetVariableD(FieldName);
 PutVariableD("ДатаДок",Value);
 ОбработатьДату(prevД,Value,if(FieldName="ДатаДок",False,True));
 Return True;
end;

Proc ДатаДок_OnExit(FieldName: String; Iter: Integer);
var vДата:D;
 vДата=GetVariableD(FieldName);
 if not vДата=1.1.100 and not ДатаПодписи=vДата:
    if ДатаПодписи=1.1.100:
       ДатаПодписи=vДата;
      else
       if EnqOkCancel("Изменить дату подписи с "+DateToString(ДатаПодписи)+" на "+DateToString(vДата)+" ?",mtWarning)=cmOk:
          ДатаПодписи=vДата;
       fi;
    fi;
 fi;
end;

Func Дата_OnLookup(Sect:S; Row:I; Col:I; Cur:S) :S;
var tmp,prevД:d;
var Field:S;
 Template.HideEditor(False);
 Field=AsString(Template.Field);
 tmp=Calendar;
 if tmp=1.1.100: ^Cur; fi;
 prevД=GetVariableD(Field);
 PutVariableD(Field,tmp);
 if Field="ДатаДок" or Field="Изм_ДатаДок":
    ОбработатьДату(prevД,tmp,if(Field="ДатаДок",False,True));
    ДатаДок_OnExit(Field,1);
 fi;
end;

Func Клиент_OnEnter(FieldName: String; Iter: Integer): logical;
var Rec:Record;
 Rec=OpenCardFile("Контрагент","Наше",Рекв,crdRecordOnly);
 if not Rec=nil:
    Рекв=Rec;
    ЗаполнитьКлиента(Рекв);
 fi;
 Return False;
end;

Proc Рекв_OnClick(Row: Integer; Col: Integer; Double: Logical);
var Field:S;
 if Double:
    if Рекв=nil: Message("Выберите получателя бюджетных средств",mtError); Template.Field="Клиент"; Exit; fi;
    Field=AsString(Template.Field);
    Field=SubStr(Field,6,255);
    ExecuteProc("Инфо.Контрагент.Вызвать",Рекв,"",Field,1);
 fi;
end;

Func Призн_ЛС_OnEnter(FieldName: String; Iter: Integer): logical;
var tmp:S;
 if Банк=nil: Message("Заполните поле 'Федеральное казначейство, орган Федерального казначейства'",mtError); Template.Field="Банк.РПО_ОФК_Имя"; ^False; fi;
 tmp=AnaElection("ЛС.*",False,False,Призн_ЛС);
 if not tmp="":
    Призн_ЛС=tmp;
 fi;
 Return False;
end;

Proc Глава_OnExit(FieldName: String; Iter: Integer);
var tmp:S;
 tmp=GetVariableS(FieldName);
 if not tmp="":
    PutVariableS("h"+FieldName,tmp);
    if FieldName="Глава": 
       ГРБС=Раб.Бюджет.НаимКБК("ППП2006",Глава);
       hГРБС=ГРБС;
    fi;
 fi;
end;

Func Глава_OnLookup(Sect: String; Row: Integer; Col: Integer; Cur: String): String;
var Rec: Record;
 Template.HideEditor(False);
 Rec=OpenCardFile("РПО_БЮДЖ_КЛАСС_000","NAME_VOC='ППП2006'",nil,crdRecordOnly);
 if not Rec=nil:
    Глава=GetCardFieldS("РПО_БЮДЖ_КЛАСС",Rec,"CODE");
    ГРБС=GetCardFieldS("РПО_БЮДЖ_КЛАСС",Rec,"TXT");
    hГлава=Глава;
    hГРБС=ГРБС;
 fi;
 Return Cur;
end;

Proc Банк_OnClick(Row: Integer; Col: Integer; Double: Logical);
var Field:S;
 if Double:
    if Банк=nil: Message("Выберите банковские реквизиты",mtError); Template.Field="Банк.РПО_ОФК_Имя"; Exit; fi;
    Field=AsString(Template.Field);
    if Field="Банк.РПО_ЛСчет": Field="РПО_ЛСчет";
      |Field="Банк.РПО_НаимБюдж": Field="РПО_НаимБюдж";
      |Field="ФинОрган": Field="РПО_ФО_Наим1";
      |Field="Банк_РПО_ФО_ОКПО": Field="РПО_ФО_ОКПО";
      |Field="Банк.РПО_ОФК_Код": Field="РПО_ОФК_Код";
      |True: Field="";
    fi;
    ExecuteProc("ИНФО.БАНКСЧЕТА.Вызвать",Банк,Field,0);
 fi;
end;

Func Банк_OnEnter(FieldName: String; Iter: Integer): logical;
var Rec: Record;
 if Рекв=nil: Message("Выберите получателя бюджетных средств",mtError); Template.Field="Клиент"; ^False; fi;
 Rec=OpenCardFile("Банк_Счета","Контрагент="+RecordToString(Рекв),Банк,crdRecordOnly);
 if not Rec=nil:
    Банк=Rec;
    БанкВПризн;
 fi;
 Return False;
end;

Func Секрет_OnEnter(FieldName: String; Iter: Integer): logical;
var tmp:I;
 tmp=Секрет;
 Секрет=Int(Раб.Договор.Секретность(Секрет,True));
 if not tmp=Секрет:
    Доп_РазмещЗаказ="";
 fi;
 Return False;
end;

Func Очистить_OnEnter(FieldName: String; Iter: Integer): logical;
var n:i;
 if not Статус:
    if ТипДок=1:
       ЗаполнитьИзБО(БО,True,ТипДок);
       ^False;
    fi;
    n=Int(SubStr(FieldName,10,1));
    if EnqOkCancel("Очистить раздел "+Str(n)+" ?",mtWarning)=cmOk:
       Очистить(n);
    fi;
 fi;
 Return False;
end;

Func Осн_ДокВид_OnEnter(FieldName: String; Iter: Integer): logical;
var n:i;
var hОсн_ДокВид,val:S;
 ClearVariable(Buf);
 if ver<11:
    Buf[1]="Государственный контракт";
    Buf[2]="Иной договор";
   else
    Buf[1]="государственный контракт";
    Buf[2]="договор";
    Buf[3]="соглашение";
    Buf[4]="- (прочерк) заполняется в случае отсутствия необходимости указания вида документа-основания в предусмотренных законодательством случаях";
 fi;
 n=Alternate("Вид документа основания",Buf,-1,Int(Осн_ДокВид),12);
 if not n=0:
    if n=4: val="-";
      |True:val=Buf[n];
    fi;
    hОсн_ДокВид=Осн_ДокВид;
    if not hОсн_ДокВид=Str(n) and Р4 and ver<11:
       if not hОсн_ДокВид="":
          if EnqOkCancel("Изменился вид документа-основания, раздел 4 будет очищен. Продолжить ?",mtWarning)=cmCancel: ^False; fi;
       fi;
       Очистить(4);
    fi;
    if ver<11:
       Осн_ДокВид=Str(n);
       if Осн_ДокВид="1": Осн_ДокНаим=""; fi;
      else
       Осн_ДокВид=val;
       if not Осн_ДокВид="-": Осн_ДокНаим=""; fi;
    fi;
    Оформление;
 fi;
 Return False;
end;

Proc Осн_ДокВид_OnExit(FieldName: String; Iter: Integer);
 Осн_ДокВид="";
end;

Func Осн_ДокНаим_OnLookup(Sect: String; Row: Integer; Col: Integer; Cur: String): String;
var Rec: Record;
 Template.HideEditor(False);
 Rec=Раб.Вспом.Договор_Наим.Выполнить(-1);
 if not Rec=nil:
    Осн_ДокНаим=GetCardFieldS("РПО_ДОГОВОР_НАИМ",Rec,"Наим");
 fi;
 Return Cur;
end;

Func Осн_ДокОКВ_OnLookup(Sect: String; Row: Integer; Col: Integer; Cur: String): String;
var Rec: Record;
var Iter:I;
 Template.HideEditor(False);
 Iter=AsInteger(Template.Frame);
 if fОКВ=0: fОКВ=Раб.Договор.ЗагрузСправ("РПО_ОКВ",PlanVar("Std_Rpo")+"\DBF\РПО_ОКВ",ieCRD,"Загрузить справочник видов валют ОКВ ?"); fi;
 if fОКВ=1:
    Rec=Раб.Поиск.ВыборИзКартотеки("Выбор валюты","РПО_ОКВ","КОД|ИМЯ|НАИМЕНОВАНИЕ","Цифровой код|Буквенный код|Наименование","");
    if not Rec=nil:
       Осн_ДокОКВ=GetCardFieldS("РПО_ОКВ",Rec,"КОД");
    fi;
 fi;
 Return Cur;
end;

Proc Осн_ДокСум_OnExit(FieldName: String; Iter: Integer);
 if ver>=11 and Осн_ДокОКВ="643" and (setЗаполР1_Гр8 or f20130901): Осн_ДокСумРуб=Осн_ДокСум; fi;
 if not RoundПроцАв(Осн_ДокПроцАв)=0: ExecuteProc("Осн_ДокПроцАв_onExit",FieldName,Iter); fi;
end;

Func Осн_ДокСумРуб_OnLookup(Sect: String; Row: Integer; Col: Integer; Cur: String): String;
 Template.HideEditor(False);
 if Осн_ДокОКВ="": Message("Введите код валюты",mtError); ^Cur; fi;
 if Осн_ДокОКВ="643" and (setЗаполР1_Гр8 or f20130901) and ver>=11:
    Осн_ДокСумРуб=Осн_ДокСум;
   |not Осн_ДокОКВ="643":
    Осн_ДокСумРуб=Calculator;
 fi;
 Return Cur;
end;

Func Осн_ДокПроцАв_OnEnter(FieldName: String; Iter: Integer): logical;
 if Round(Осн_ДокСум,2)=0: Message("Введите сумму в валюте обязательства",mtError); Template.Field="Осн_ДокСум"; ^False; fi;
 Return True;
end;

Proc Осн_ДокПроцАв_OnExit(FieldName: String; Iter: Integer);
 Осн_ДокПроцАв=RoundПроцАв(Осн_ДокПроцАв);
 if not RoundПроцАв(Осн_ДокПроцАв)=0:
    Осн_ДокСумАв=Round(Осн_ДокСум/100*Осн_ДокПроцАв,2);
 fi;
end;

Proc Осн_ДокСумАв_OnExit(FieldName: String; Iter: Integer);
 Осн_ДокСумАв=Round(Осн_ДокСумАв,2);
 if not RoundПроцАв(Осн_ДокПроцАв)=0 or ver>=11:
    Осн_ДокПроцАв=RoundПроцАв(Осн_ДокСумАв*100/Осн_ДокСум);
 fi;
end;

Func РеквП_OnEnter(FieldName: String; Iter: Integer): logical;
var rec:record;
 if (not РеквП=nil and AsString(Template.Name)="S5") or (not Раздел2[Iter].РеквП=nil and AsString(Template.Name)="S6"):
    rec=OpenCardFile("Контрагент","",РеквП,crdRecordOnly);
   else
    rec=Раб.Поиск.ВыборИзКартотеки("Выбор контрагента","КОНТРАГЕНТ","ПРИЗНАК|ПОЛНИМЯ|КОРИМЯ|ИНН","Код|Полное имя|Краткое имя|ИНН","");
 fi;
 if not Rec=nil:
    if AsString(Template.Name)="S5":
       РеквП=Rec;
       БанкП=Раб.Бюджет2005.БанкСчет(РеквП,False);
       Призн_К=CardFileRecSign("Контрагент","Признак","К",РеквП,"");
      else
       Раздел2[Iter].РеквП=Rec;
       Раздел2[Iter].БанкП=Раб.Бюджет2005.БанкСчет(Раздел2[Iter].РеквП,False);
       Раздел2[Iter].Призн_К=CardFileRecSign("Контрагент","Признак","К",Раздел2[Iter].РеквП,"");
    fi;
 fi;
 Return  False;
end;

Proc РеквП_OnExit(FieldName: String; Iter: Integer);
 if AsString(Template.Name)="S6":
    if Раздел2[Iter].РеквП=nil:
       Раздел2[Iter].БанкП=nil;
       Раздел2[Iter].Призн_К="";
    fi;
   else
    if РеквП=nil:
       БанкП=nil;
       Призн_К="";
    fi;
 fi;
end;

Func Призн_К_OnEnter(FieldName: String; Iter: Integer): logical;
var tmp:S;
 if AsString(Template.Name)="S5":
    if РеквП=nil: Message("Выберите контрагента",mtError); Template.Field="РеквП.ПолнИмя"; ^False; fi;
    if EnqOkCancel("Изменение аналитического признака контрагента может привести к ошибке^MВы уверены, что хотите изменить признак ?",mtWarning)=cmOk:
       tmp=AnaElection("К.*",False,False,Призн_К);
       if not tmp="":
          Призн_К=tmp;
       fi;
    fi;
   else
    Template.Name="S6";
    if Раздел2[Iter].РеквП=nil: Message("Выберите контрагента",mtError); Template.Field="РеквП.ПолнИмя"; Template.Frame=Iter; ^False; fi;
    if EnqOkCancel("Изменение аналитического признака контрагента может привести к ошибке^MВы уверены, что хотите изменить признак ?",mtWarning)=cmOk:
       tmp=AnaElection("К.*",False,False,Раздел2[Iter].Призн_К);
       if not tmp="":
          Раздел2[Iter].Призн_К=tmp;
       fi;
    fi;
 fi;
 Return False;
end;

Proc Призн_К_OnExit(FieldName: String; Iter: Integer);
 if AsString(Template.Name)="S5":
    if not РеквП=nil:
       Призн_К=CardFileRecSign("Контрагент","Признак","К",РеквП,"");
    fi;
   else
    if not Раздел2[Iter].РеквП=nil:
       Раздел2[Iter].Призн_К=CardFileRecSign("Контрагент","Признак","К",Раздел2[Iter].РеквП,"");
    fi;
 fi;
end;

Proc РеквП_OnClick(Row: Integer; Col: Integer; Double: Logical);
var Field,bln:S;
var Iter:I;
var Rec: Record;
 if Double:
    Iter=AsInteger(Template.Frame);
    if AsString(Template.Name)="S5":
       if РеквП=nil: Message("Выберите контрагента",mtError); Template.Field="РеквП.ПолнИмя"; Exit; fi;
       Rec=РеквП;
      else
       if Раздел2[Iter].РеквП=nil: Message("Выберите контрагента",mtError); Template.Name="S6"; Template.Field="РеквП.ПолнИмя"; Template.Frame=Iter; Exit; fi;
       Rec=Раздел2[Iter].РеквП;
    fi;
       Field=AsString(Template.Field);
       Field=SubStr(Field,7,255);
       if Field="РПО_Страна" or Field="РПО_ОКСМ" or Field="РПО_Статус": Bln="РАБ.ВСПОМ.КОНТРАГЕНТ_ИНФОДОП"; else bln=""; fi;
       ExecuteProc("Инфо.Контрагент.Вызвать",Rec,bln,Field,1);
 fi;
end;

Func БанкП_OnEnter(FieldName: String; Iter: Integer): logical;
var Rec: Record;
 if AsString(Template.Name)="S5":
    if РеквП=nil: Message("Выберите контрагента",mtError); Template.Field="РеквП_"; ^False; fi;
    Rec=OpenCardFile("Банк_Счета","Контрагент="+RecordToString(РеквП),БанкП,crdRecordOnly);
    if not Rec=nil:
       БанкП=Rec;
    fi;
   else
    Template.Name="S6";
    if Раздел2[Iter].РеквП=nil: Message("Выберите контрагента",mtError); Template.Field="РеквП_"; ^False; fi;
    Rec=OpenCardFile("Банк_Счета","Контрагент="+RecordToString(Раздел2[Iter].РеквП),Раздел2[Iter].БанкП,crdRecordOnly);
    if not Rec=nil:
       Раздел2[Iter].БанкП=Rec;
    fi;
 fi;
 Return False;
end;

Proc БанкП_OnClick(Row: Integer; Col: Integer; Double: Logical);
var Field:S;
var Iter:I;
var Rec: Record;
 if Double:
    Iter=AsInteger(Template.Frame);
    if AsString(Template.Name)="S5":
       if БанкП=nil: Message("Выберите банковские реквизиты контрагента",mtError); Template.Field="БанкП.РСчет"; Exit; fi;
       Rec=БанкП;
      else
       if Раздел2[Iter].БанкП=nil: Message("Выберите банковские реквизиты контрагента",mtError); Template.Name="S6"; Template.Field="БанкП.РСчет"; Template.Frame=Iter; Exit; fi;
       Rec=Раздел2[Iter].БанкП;
    fi;
    Field=AsString(Template.Field);
    Field=SubStr(Field,7,255);
    ExecuteProc("ИНФО.БАНКСЧЕТА.Вызвать",Rec,Field,0);
 fi;
end;

Func СоздатьИспДок_OnEnter(FieldName: String; Iter: Integer): logical;
var bln:S;
var Rec:Record;
 if not Учитывать and Призн_ИспДок="":
    bln="ИНФО.ИСПДОК";
    PutVariableS(bln+".inНом",Исп_ДокНом);
    PutVariableD(bln+".inДат",Исп_ДокДат);
    PutVariableS(bln+".inСуд_Орган",Исп_Орган);
    PutVariableN(bln+".inСум",Исп_ДокСум);
    PutVariableS(bln+".inУведНом",Исп_УведНом);
    PutVariableD(bln+".inУведДат",Исп_УведДат);
    PutVariableR(bln+".inКонтр",РеквП);
    PutVariableR(bln+".inКонтр_Банк",БанкП);
    OpenBlank(bln,True,nil);
    Rec=GetVariableR(bln+".SelfRecord");
    if not Rec=nil:
       Исп_Док=Rec;
       Призн_ИспДок="ИСПДОК."+Исп_Док.Признак;
       Исп_ДокНом=Исп_Док.Ном;
       Исп_ДокДат=Исп_Док.Дат;
       Исп_Орган=Исп_Док.Суд_Орган;
       Исп_ДокСум=Исп_Док.Сум;
       Исп_УведНом=Исп_Док.УведНом;
       Исп_УведДат=Исп_Док.УведДат;
       if РеквП=nil:
          РеквП=Исп_Док.Контр;
          БанкП=Исп_Док.Контр_Банк;
       fi;
       СинхроПризнИспДок;
    fi;
 fi;
 Return False;
end;

Func Призн_ИспДок_OnEnter(FieldName: String; Iter: Integer): logical;
var tmp:S;
var Rec:Record;
 tmp=AnaElection("ИСПДОК.*",False,False,Призн_ИспДок);
 if not tmp="":
    Призн_ИспДок=tmp;
    Rec=SignToRecord(Призн_ИспДок);
    if not Rec=nil:
       Исп_Док=Rec;
       if "ИСПДОК."+Исп_Док.Признак=Призн_ИспДок:
          Исп_ДокНом=Исп_Док.Ном;
          Исп_ДокДат=Исп_Док.Дат;
          Исп_Орган=Исп_Док.Суд_Орган;
          Исп_ДокСум=Исп_Док.Сум;
          Исп_УведНом=Исп_Док.УведНом;
          Исп_УведДат=Исп_Док.УведДат;
          if РеквП=nil:
             РеквП=Исп_Док.Контр;
             БанкП=Исп_Док.Контр_Банк;
          fi;
         else
          Исп_Док=nil;
          Призн_ИспДок="";
       fi;
    fi;
    СинхроПризнИспДок;
 fi;
 Return False;
end;


Proc Призн_ИспДок_OnExit(FieldName: String; Iter: Integer);
 Призн_ИспДок="";
 Исп_Док=nil;
 СинхроПризнИспДок;
end;


Func Исп_Док_OnLookup(Sect: String; Row: Integer; Col: Integer; Cur: String): String;
var Rec: Record;
 Template.HideEditor(False);
 Rec=Раб.Поиск.ВыборИзКартотеки("Выбор исполнительного документа...","РПО_ИСПДОК","НомДок|НомУвед","Номер документа|Номер уведомления","not Признак=''");
 if not Rec=nil:
    Исп_Док=Rec;
    Призн_ИспДок="ИСПДОК."+Исп_Док.Признак;
    Исп_ДокНом=Исп_Док.Ном;
    Исп_ДокДат=Исп_Док.Дат;
    Исп_Орган=Исп_Док.Суд_Орган; 
    Исп_ДокСум=Исп_Док.Сум;
    Исп_УведНом=Исп_Док.УведНом;
    Исп_УведДат=Исп_Док.УведДат;
    СинхроПризнИспДок;
 fi;
 Return Cur;
end;

Func Доп_РазмещЗаказ_OnEnter(FieldName: String; Iter: Integer): logical;
 if ver<11:
    if Осн_ДокВид="" : Message("Выберите вид документа основания",mtError); Template.Field="Осн_ДокВид_"; ^False;
      |Осн_ДокВид="2": Message("Для документа-основания ("+Осн_ДокВид_+") заполнять данный раздел не требуется",mtError); Template.Field="Осн_ДокВид_"; ^False;
    fi;
 fi;
 Доп_РазмещЗаказ=Раб.Договор.РазмещениеЗаказа(Доп_РазмещЗаказ,True,if(ФЗ=1:"44ФЗ"|Секрет<2:"1191"|true:"491"));
-- if Доп_РазмещЗаказ="0":
--    Message("Недопустимый способ размещения заказа",mtError);
--    Доп_РазмещЗаказ="";
-- fi;
 Return False;
end;

Func Доп_Статус_OnEnter(FieldName: String; Iter: Integer): logical;
var n:i;
 ClearVariable(Buf);
 Buf[1]="завершен (исполнен)";
 Buf[2]="аннулирован (расторгнут)";
 n=Alternate("Статус исполнения контракта",Buf,-1,1,12);
 if not n=0:
    Доп_Статус=Str(n);
 fi;
 Return False;
end;

Proc Доп_Статус_OnExit(FieldName: String; Iter: Integer);
 ClearVariable(Доп_Статус);
end;

Func Гр_onEnter(FieldName: String; Iter: Integer): logical;
 if not Статус:
    FieldName=SubStr(FieldName,1,2)+SubStr(FieldName,4,255);
    PutVariableL(FieldName,not GetVariableL(FieldName));
 fi;
 ^False;
end;

Func A_OnEnter(FieldName: String; Iter: Integer): logical;
var Iter_:I;
 if not Статус:
    if FieldName="A":
       Iter_=InsertFrame(Расшифр,Iter+1);
       if Гр[3]: Расшифр[Iter_].ФАИП=Расшифр[Iter].ФАИП; fi;
       if Гр[4]: Расшифр[Iter_].Ист=Расшифр[Iter].Ист; fi;
       if Гр[5]: Расшифр[Iter_].КБК=Расшифр[Iter].КБК; Расшифр[Iter_].ТипКБК=Расшифр[Iter].ТипКБК; fi;
       if Гр[6]: Расшифр[Iter_].Предм1=Расшифр[Iter].Предм1; Расшифр[Iter_].Предм2=Расшифр[Iter].Предм2; Расшифр[Iter_].Предм3=Расшифр[Iter].Предм3; Расшифр[Iter_].Предм4=Расшифр[Iter].Предм4; fi;
       if Гр[7]: Расшифр[Iter_].Призн=Расшифр[Iter].Призн; fi;
       Расшифр[Iter_].Нов=ТипДок=1;
      |FieldName="A2":
       if ver<11: Message("Добавление контрагента предусмотрено для версии документа >=11",mtError); Template.Field="ver"; ^False; fi;
       Iter_=InsertFrame(Раздел2,Iter+1);
    fi;
 fi;
 Return False;
end;

Func D_OnEnter(FieldName: String; Iter: Integer): logical;
 if not Статус:
    if FieldName="D":
       if ТипДок=1 and not Расшифр[Iter].Нов: Message("Для удаления данной строки проставте нулевые значения в суммовые показатели",mtError); ^False; fi;
       DeleteFrame(Расшифр,Iter);
      |FieldName="D2":
       DeleteFrame(Раздел2,Iter);
    fi;
 fi;
 Return False;
end;

Func ФАИП_OnEnter(FieldName: String; Iter: Integer): logical;
var Rec: Record;
var tmp:S;
 if ver<11: Message("Не заполняется для версии документа <11",mtError); Template.Field="ver"; ^False; fi;
 НеПустаяТаблица;
 if not КонтрольТипДок(Iter,False): ^False; fi;
 rec=OpenCardFile("РПО_ФАИП","",Расшифр[Iter].ФАИП,crdRecordOnly);
-- if not Расшифр[Iter].ФАИП=nil:
--    rec=OpenCardFile("РПО_ФАИП","",Расшифр[Iter].ФАИП,crdRecordOnly);
--   else
--    rec=Раб.Поиск.ВыборИзКартотеки("Выбор объекта ФАИП","РПО_ФАИП","КОД|НАИМ1|КМНТ","Код|Наименование|Комментарий","");
-- fi;
 if not Rec=nil:
    Расшифр[Iter].ФАИП=Rec;
    tmp=CardFileRecSign("РПО_ФАИП","Признак","ФАИП",Rec);
    Расшифр[Iter].Призн=Раб.Бюджет2005.ДобавитьСловоВНаборСЗаменой(Расшифр[Iter].Призн," ",tmp,SubStr(tmp,1,Pos(".",tmp))+"*","");
 fi;
 Return False;
end;

Proc ФАИП_OnExit(FieldName: String; Iter: Integer);
 if not КонтрольТипДок(Iter,False): Exit; fi;
 Расшифр[Iter].ФАИП=nil;
 Расшифр[Iter].Призн=Раб.Бюджет2005.УдалитьСловоИзНабораПоМаске(Расшифр[Iter].Призн," ","ФАИП.*","");
end;

Func Ист_OnEnter(FieldName: String; Iter: Integer): logical;
var n:i;
var hИст:S;
 НеПустаяТаблица;
 if not КонтрольТипДок(Iter,False): ^False; fi;
 ClearVariable(Buf);
 Buf[1]="1 -- средства бюджета";
 Buf[2]="3 -- средств дополнительного бюджетного финансирования";
 n=Alternate("Вид средств",Buf,-1,Int(Расшифр[Iter].Ист),12);
 if not n=0:
    hИст=Расшифр[Iter].Ист;
    Расшифр[Iter].Ист=Str(n);
    if not hИст=Расшифр[Iter].Ист: Расшифр[Iter].КБК=""; fi;
 fi;
 Return False;
end;

Func КБК_OnEnter(FieldName: String; Iter: Integer): logical;
var КОСГУ_,КБК_,ТипКБК_:S;
 НеПустаяТаблица;
 if not КонтрольТипДок(Iter,False): ^False; fi;
 if Расшифр[Iter].Ист="": Message("Выберите наименование вида средств для исполнения обязательства",mtError); Template.Field="Ист_"; Template.Frame=Iter; ^False; fi;
 if Расшифр[Iter].КБК="":
    КБК_=hКБК;
   else
    if Расшифр[Iter].ТипКБК="10": КБК_="ФКР."+SubStr(Расшифр[Iter].КБК,1,3)+"."+SubStr(Расшифр[Iter].КБК,4,4)+"."+SubStr(Расшифр[Iter].КБК,8,7)+"."+SubStr(Расшифр[Iter].КБК,15,3);
      |Расшифр[Iter].ТипКБК="31" or Расшифр[Iter].ТипКБК="32": КБК_="КИФД."+SubStr(Расшифр[Iter].КБК,1,3)+"."+SubStr(Расшифр[Iter].КБК,4,2)+"."+SubStr(Расшифр[Iter].КБК,6,2)+"."+SubStr(Расшифр[Iter].КБК,8,2)+"."+SubStr(Расшифр[Iter].КБК,10,2)+"."+SubStr(Расшифр[Iter].КБК,12,2)+"."+SubStr(Расшифр[Iter].КБК,14,4);
    fi;
    КОСГУ_=SubStr(Расшифр[Iter].КБК,18,3);
 fi;
 КБК_=AnaElection("ФКР.???.????.???????.???|КИФД.???.??.??.??.??.??.????",False,False,КБК_);
 if not КБК_="":
    hКБК=КБК_;
    if Match(КБК_,"ФКР.*"): ТипКБК_="10"; if КОСГУ_="": КОСГУ_=hЭКР; fi;
      |Match(КБК_,"КИФД.???.01.*"): ТипКБК_="31"; if КОСГУ_="": КОСГУ_=hЭКИФД; fi;
      |Match(КБК_,"КИФД.???.02.*"): ТипКБК_="32"; if КОСГУ_="": КОСГУ_=hЭКИФД; fi;
    fi;
    КОСГУ_=ВыборЭК(ТипКБК_,КОСГУ_);
    if КОСГУ_="": ^False; fi;
    КБК_=SubStr(КБК_,Pos(".",КБК_)+1,255);
    КБК_=Раб.Формат.ReplaceSubstr(КБК_,".","");
    Расшифр[Iter].КБК=КБК_+КОСГУ_;
    Расшифр[Iter].ТипКБК=ТипКБК_;
    ОбновитьСч(Iter);
    ОбновитьПризн(Iter);
 fi;
 Return False;
end;

Proc КБК_OnExit(FieldName: String; Iter: Integer);
 if not КонтрольТипДок(Iter,False): Exit; fi;
 Расшифр[Iter].КБК="";
 Расшифр[Iter].ТипКБК="";
end;

Func Предм_OnEnter(FieldName: String; Iter: Integer): logical;
 if FieldName="exПредм" or LenПредм[Iter]>255:
    ClearVariable(Раб.Договор.BufLS);
    Раб.Договор.BufLS[1]=Расшифр[Iter].Предм1;
    Раб.Договор.BufLS[2]=Расшифр[Iter].Предм2;
    Раб.Договор.BufLS[3]=Расшифр[Iter].Предм3;
    Раб.Договор.BufLS[4]=Расшифр[Iter].Предм4;
    Раб.Договор.ВводДлинСтр("Предмет по документу- основанию",4,(Статус or not КонтрольТипДок(Iter,True)));
    if not Раб.Договор.ROLS:
       Расшифр[Iter].Предм1=Раб.Договор.BufLS[1];
       Расшифр[Iter].Предм2=Раб.Договор.BufLS[2];
       Расшифр[Iter].Предм3=Раб.Договор.BufLS[3];
       Расшифр[Iter].Предм4=Раб.Договор.BufLS[4];
    fi;
    ^False;
 fi;
 FlagEdit=True;
 Return True;
end;

Func Предм_OnVerify(FieldName: String; Iter: Integer; Value: String): Logical;
 Расшифр[Iter].Предм1=Value;
 Расшифр[Iter].Предм2="";
 Расшифр[Iter].Предм3="";
 Расшифр[Iter].Предм4="";
 Return True;
end;

Proc Предм_OnExit(FieldName: String; Iter: Integer);
 if FlagEdit: 
    FlagEdit=False;
   else
    if not КонтрольТипДок(Iter,False): Exit; fi;
    Расшифр[Iter].Предм1="";
    Расшифр[Iter].Предм2="";
    Расшифр[Iter].Предм3="";
    Расшифр[Iter].Предм4="";
 fi;
end;

Func Предм_OnLookup(Sect: String; Row: Integer; Col: Integer; Cur: String): String;
var Iter,crcПредм,z:I;
 Template.HideEditor(False);
 НеПустаяТаблица;
 ClearVariable(Buf);
 ClearVariable(Buf2);
 ClearVariable(BufI);
 for Iter=1..Расшифр do
  if not Предм_[Iter]="":
     crcПредм=Раб.CRC16.CRC16_(0,Расшифр[Iter].Предм1);
     crcПредм=Раб.CRC16.CRC16_(crcПредм,Расшифр[Iter].Предм2);
     crcПредм=Раб.CRC16.CRC16_(crcПредм,Расшифр[Iter].Предм3);
     crcПредм=Раб.CRC16.CRC16_(crcПредм,Расшифр[Iter].Предм4);
     z=SearchInArray(Buf,Str16(crcПредм),True);
     if z=-1:
        z=InsertInArraySort(Buf,Str16(crcПредм));
        InsertInArray(Buf2,z,Предм_[Iter]);
        InsertInArray(BufI,z,Iter);
     fi;
  fi;
 od;
 if LengthOfArray(Buf)=0: Message("Еще не введено ни одного значения",mtError); ^Cur; fi;
 z=Alternate("Предмет",Buf2,-1,1,12);
 if not z=0:
    Iter=AsInteger(Template.Frame);
    Расшифр[Iter].Предм1=Расшифр[BufI[z]].Предм1;
    Расшифр[Iter].Предм2=Расшифр[BufI[z]].Предм2;
    Расшифр[Iter].Предм3=Расшифр[BufI[z]].Предм3;
    Расшифр[Iter].Предм4=Расшифр[BufI[z]].Предм4;
 fi;
 Return Cur;
end;

Func Призн_OnEnter(FieldName: String; Iter: Integer): logical;
var tmp:S;
 НеПустаяТаблица;
 if not КонтрольТипДок(Iter,False): ^False; fi;
 if Расшифр[Iter].Ист="": Message("Выберите наименование вида средств для исполнения обязательства",mtError); Template.Field="Ист_"; Template.Frame=Iter; ^False; fi;
 if Расшифр[Iter].КБК="": Message("Выберите КБК",mtError); Template.Field="КБК_"; Template.Frame=Iter; ^False; fi;
 ОбновитьСч(Iter);
 tmp=МаскаПризн(Iter);
 if tmp="": Message("Аналитические признаки не требуются"); ^False; fi;
 tmp=AnaElection(tmp);
 if not tmp="":
    Расшифр[Iter].Призн=Раб.Бюджет2005.ДобавитьСловоВНаборСЗаменой(Расшифр[Iter].Призн," ",tmp,SubStr(tmp,1,Pos(".",tmp))+"*","");
 fi;
 Return False;
end;

Proc Призн_OnExit(FieldName: String; Iter: Integer);
var tmp:S;
 НеПустаяТаблица;
 if not КонтрольТипДок(Iter,False): Exit; fi;
 Расшифр[Iter].Призн=Раб.Бюджет2005.УдалитьСловоИзНабора_Диалог2(Расшифр[Iter].Призн," ","Name_A");
 if not Расшифр[Iter].ФАИП=nil:
    tmp=CardFileRecSign("РПО_ФАИП","Признак","ФАИП",Расшифр[Iter].ФАИП);
    Расшифр[Iter].Призн=Раб.Бюджет2005.ДобавитьСловоВНаборСЗаменой(Расшифр[Iter].Призн," ",tmp,SubStr(tmp,1,Pos(".",tmp))+"*","");
 fi;
 СинхроПризнИспДок;
end;

Func ФИО_OnLookup(Sect: String; Row: Integer; Col: Integer; Cur: String): String;
var Field:S;
var Rec:Record;
var v1,v2:S;
 Template.HideEditor(False);
 Field=AsString(Template.Field);
 Rec=OpenCardFile("Сотрудники");
 if not Rec=nil:
    v1=GetCardFieldS("Сотрудники",rec,"ДОЛЖНОСТЬ.Долж");
    v2=GetCardFieldS("Сотрудники",rec,"ФАМИЛИЯ")+" "+GetCardFieldS("Сотрудники",rec,"ИНИЦИАЛЫ");
    if Field="ДолжнРук" or Field="ФИОРук": ДолжнРук=v1; ФИОРук=v2; fi;
 fi;
 Return Cur;
end;
--Обработчики событий полей шаблона-----
--
--Обработчики событий объектов шаблона-----
Proc btnНастр_OnClick(Sender: String);
 ОткрНастр(True);
end;

Proc cbf20130901_OnChange(Sender: String);
 Настр(True);
end;

Proc cbУчитывать_OnChange(Sender: String);
var hУчитывать:L;
 if SkipEvent: Exit; fi;
 if Учитывать:
    hУчитывать=Учитывать;
    Учитывать=Проверить;
    if hУчитывать=Учитывать: EditorApply; fi;
   else
    if EnqOkCancel("Вы уверены, что хотите исключить документ из обработки ?",mtWarning)=cmCancel:
       Учитывать=True;
      else
       if ВБанк:
          ВБанк=False;
          cbВБанк.State=ВБанк;
       fi;
    fi;
    EditorApply;
 fi;
 cbУчитывать.State=Учитывать;
 Оформление;
end;

Proc cbУчетФК_OnChange(Sender: String);
 if УчетФК and GUID_FK="":
    GUID_FK=Раб.Бюджет2005.MyGUID("FK");
    EditorApply;
 fi;
end;

Proc cbВБанк_OnChange(Sender: String);
 if SkipEvent: Exit; fi;
 if not УчетФК and ВБанк:
    ВБанк=not ВБанк; 
    cbВБанк.State=ВБанк;
    Message("Установите флаг 'Подлежит учету в ФК'",mtError); 
    Template.Object="cbУчетФК"; 
    Exit; 
 fi;
 НомРейс=-(Abs(НомРейс));
 if not Учитывать and ВБанк and not isChild:
    Учитывать=True;
    cbУчитывать.State=Учитывать;
    ВБанк=Учитывать;
    cbВБанк.State=ВБанк;
 fi;
 Оформление;
 EditorApply;
end;

Proc cbРег_OnChange(Sender: String);
 if SkipEvent: Exit; fi;
 Try
  if Рег:
     if not УчетФК:  Message("Установите флаг 'Подлежит учету в ФК'",mtError); Template.Object="cbУчетФК"; Рег=False; Exit; fi;
     if РегДата=1.1.100: Message("Введите дату постановки на учет",mtError); Template.Object="btnРегДата"; Рег=False; Exit; fi;
     if РегДата<ДатаДок: Message("Дата постановки на учет "+DateToString(РегДата)+" не может быть меньше чем дата документа "+DateToString(ДатаДок),mtError);  Рег=False; Exit; fi;
     if Year(РегДата)<>Year(ДатаДок): Message("Дата постановки на учет "+DateToString(РегДата)+" должна находиться в пределах "+Str(Year(ДатаДок)),mtError);  Рег=False; Exit; fi;
     if РегНомер="": Message("Введите учетный номер",mtError); Template.Object="edРегНомер"; Рег=False; Exit; fi;
     if not УчетНомСущ(РегНомер)=cmOk: Template.Object="edРегНомер"; Рег=False; Exit; fi;
     if not ВБанк:
        ВБанк=True;
        cbВБанк.State=ВБанк;
        Рег=ВБанк;
     fi;
    else
     if EnqOkCancel("Вы уверены, что хотите исключить документ из обработки ?",mtWarning)=cmCancel:
        Рег=True;
     fi;
  fi;
 Finally
  cbРег.State=Рег;
  Оформление;
 end;
 EditorApply;
 if Рег and fCMF_onРег and not ClosedModFob:
    ClosedModFob=True;
    cbЗакрытьДок.State=ClosedModFob;
 fi;
end;

Proc btnДата_OnClick(Sender: String);
var tmp:D;
 if not УчетФК: Message("Установите флаг 'Подлежит учету в ФК'",mtError); Template.Object="cbУчетФК"; Exit; fi;
 tmp=Calendar;
 if tmp=1.1.100: Exit; fi;
 if Sender="btnРегДата": РегДата=tmp;
 fi;
end;

Proc cbЗакрытьДок_OnChange(Sender: String);
var Flag:L;
 Flag=True;
 if not Договор=nil: 
    Flag=Раб.Договор.УстанCMF(SelfCrd,"РПО_ДОГОВОР",Договор,ClosedModFob,True)="";
   |not ДО=nil:
    Flag=Раб.Договор.УстанCMF(SelfCrd,"РПО_ДО",ДО,ClosedModFob,True)="";
 fi;
 if Flag:
    EditorApply;
   else
    ClosedModFob=not ClosedModFob;
    cbЗакрытьДок.State=ClosedModFob;
 fi;
end;

Proc btnПечать_onClick (Obj:S);
 if КолКопий<=0: КолКопий=1; fi;
 if КолКопий>2:
    if EnqOkCancel("Вы уверены, что хотите распечатать "+Str(КолКопий)+" копий документа ?")=cmCancel:
       Message("Отказ от печати"); 
       Exit;
    fi;
 fi;
 if not preView:
    ПоказатьШапку(ТипДок_,True);
    РазметкаЛиста(True);
    preView=True;
 fi;
 Try
  Раб.Настр_Печать.Prn("","",SelfCfg,"",КолКопий);
 Finally
  РазметкаЛиста(False);
  ПоказатьШапку(ТипДок_,False);
  СкрытьОбъекты(False,True);
 end;
end;

Proc btnПросмотр_OnClick(Sender: String);
 preView=not preView;
 СкрытьОбъекты(preView,True);
 ПоказатьШапку(ТипДок_,preView);
 РазметкаЛиста(preView);
 btnПросмотр.Caption=if(preView,"Выйти из просмотра","Предварительный просмотр");
end;

Proc btnДокОсн_OnClick(Sender: String);
var bln,crd:S;
var rec: Record;
 if not Договор=nil: crd=Раб.Договор.crdДоговор; bln=Раб.Договор.blnДоговор; rec=Договор;
   |not ДО=nil: crd=Раб.Договор.crdДО; bln=Раб.Договор.blnДО; rec=ДО;
   |true: Message("Документ - основание не найден",mtWarning); Exit;
 fi;
 if not RecordExists(Crd,Rec): Message("Документ - основание не найден",mtError); Exit; fi;
 if ModalMode and isBlankOpen(Bln): Message("Бланк документа - основания уже открыт. Для возврата закройте текущий бланк",mtWarning); Exit; fi;
 if isBlankOpen(Bln): Close(Bln); fi;
 OpenBlank(Bln,True,Rec);
end;

Proc btnКонтрольЛБО_OnClick(Sender: String);
var i:i;
var Дат_:D;
 if CurrentState=CrdusInserted:
    EditorApply;
 fi;
 Раб.Вспом.ОстЛБО.ОчиститьВх;
 Раб.Вспом.ОстЛБО.ОчиститьВх2;
 Дат_=if(Рег:РегДата|ТипДок=1:Изм_ДатаДок|True:ДатаДок);
 for i=1..Расшифр do
  if Расшифр[i].Ист="1" and Расшифр[i].ТипКБК="10" and not Расшифр[i].КБК="":
     Раб.Вспом.ОстЛБО.ДобавитьПБО(Дат_+1,ВзятьКБК(Расшифр[i].КБК,Расшифр[i].ТипКБК,""),Расшифр[i].Призн,if(Учитывать:0|ТипДок=1:Итог_Изм1[i]|True:Итог_Сум1[i]));
     Раб.Вспом.ОстЛБО.ДобавитьПБО2(Дат_+1,"БО."+Признак,ВзятьКБК(Расшифр[i].КБК,Расшифр[i].ТипКБК,""),Расшифр[i].Призн,if(Учитывать:0|ТипДок=1:Итог_Изм1[i]|True:Итог_Сум1[i]));
  fi;
 od;
 Раб.Вспом.ОстЛБО.Вызвать;
end;

Proc btnВыгрузить_OnClick(Sender: String);
var bln:S;
 if not Учитывать: Message("Документ должен принят к учету",mtError);  Template.Object="cbУчитывать"; Exit; fi;
 if not УчетФК: Message("Установите флаг 'Подлежит учету в ФК'",mtError); Template.Object="cbУчетФК"; Exit; fi;
 if ModalMode and isBlankOpen(Bln): Message("Бланк документа - основания уже открыт. Для возврата закройте текущий бланк",mtWarning); Exit; fi;
 if isBlankOpen(Bln): Close(Bln); fi;
 bln="ДОКУМЕНТЫ.ЛБО.СВЕД_БО_ВЫГРУЗКА_FK_TXBN"+if(verТФФ<11:"130101"|verТФФ<12:"130701"|verТФФ<13:"140101"|true:"140401");
 if isBlankOpen(bln): Close(bln); fi;
 PutVariableS(bln+".XXXXX",Рекв.РПО_КБП);
 PutVariableR(bln+".Рекв",Рекв);
 PutVariableR(bln+".Банк",Банк);
 PutVariableS(bln+".Отправ",Рекв.КорИмя);
 PutVariableS(bln+".ОтправБанк",Банк.РПО_ЛСчет+" ("+Банк.РПО_ОФК_Имя+")");
 PutVariableI(bln+".Секрет",Секрет);
 if verТФФ<10:
    PutVariableL(bln+".FlagЛВС",Секрет>1);
   else
    PutVariableL(bln+".FlagВЛВС",Секрет>1);
 fi;
 ExecuteProc(bln+".Вызвать",ТипДок_,Current,True);
end;

Proc cbGUID_FK_OnChange(Sender: String);
 if GUID_FK="": GUID_FK=Раб.Бюджет2005.MyGUID("FK"); fi;
 Оформление;
end;

Proc btnОбновGUID_FK_OnClick(Sender: String);
var OWA,n:I;
var Crd,tmp:S;
var Rec: Record;
 if EnqOkCancel("Вы уверены, что хотите обновить значение GUID_FK",mtWarning)=cmOk:
    tmp=GUID_FK;
    GUID_FK=Раб.Бюджет2005.MyGUID("FK");
    if not Договор=nil or not ДО=nil:
       if ДО=nil: 
          Crd=Раб.Договор.crdДоговор; Rec=Договор;
         else
          Crd=Раб.Договор.crdДО; Rec=ДО;
       fi;
       OWA=OpenWorkArea(Crd,"","UKey="+RecordToString(Rec));
       Try
        BeginChanging(OWA,False);
        Try
         n=PutFieldS(OWA,1,"БО_GUID_FK",GUID_FK);
         EndChanging(OWA);
        Except
         GUID_FK=tmp;
         CancelChanging(OWA);
         Raise;
        end;
       Finally
        CloseWorkArea(OWA);
       end;
    fi;
    EditorApply;
    Message("Значение GUID_FK успешно обновлено, в случае если существуют заявки на кассовый расход, по данному БО, необходимо обновить GUID_FK в данных заявках");
 fi;
end;

Func OnInsert(SectName: String): Logical;
var Iter:I;
 if not Статус:
    Iter=AsInteger(Template.Frame);
    hИст=Расшифр[Iter].Ист;
    hКБК=Расшифр[Iter].КБК;
    hТипКБК=Расшифр[Iter].ТипКБК;
    hПредм1=Расшифр[Iter].Предм1;
    hПредм2=Расшифр[Iter].Предм2;
    hПредм3=Расшифр[Iter].Предм3;
    hПредм4=Расшифр[Iter].Предм4;
    hПризн=Расшифр[Iter].Призн;
 fi;
 Return not Статус;
end;

Proc AfterInsert(SectName: String; Iter: Integer);
 if Гр[2]: Расшифр[Iter].Ист=hИст; fi;
 if Гр[3]: Расшифр[Iter].КБК=hКБК; Расшифр[Iter].ТипКБК=hТипКБК; fi;
 if Гр[4]: Расшифр[Iter].Предм1=hПредм1; Расшифр[Iter].Предм2=hПредм2; Расшифр[Iter].Предм3=hПредм3; Расшифр[Iter].Предм4=hПредм4; fi;
 if Гр[5]: Расшифр[Iter].Призн=hПризн; fi;
 Расшифр[Iter].Нов=ТипДок=1;
end;

Func OnDelete(SectName: String; Iter: Integer): Logical;
 if not Статус and ТипДок=1 and not Расшифр[Iter].Нов: Message("Для удаления данной строки проставте нулевые значения в суммовые показатели",mtError); ^False; fi;
 Return not Статус;
end;
--Обработчики событий объектов шаблона-----
--
--
--Обработчики событий шаблона -----
Proc OnOpen(Create: Logical);
 preView=False;
 Раб.CRC16.Init;
 FlagInit=True;
 fОКВ=0;
 Раб.Настр_Печать.Cfg("",SelfCfg);
end;

Proc AfterOpen(Destroy: Logical);
 Инициализация;
 Оформление;
 FlagInit=False;
 if inПечать:
    inПечать=False;
    btnПечать_onClick("AfterOpen");
    Close;
 fi;
end;

Proc OnRead;
var n:i;
var ff:S;
 ОткрНастр(False);
 Настр(False);
 if preView:
    btnПросмотр_OnClick("");
 fi;
 Призн_ИспДок="";
 for n=1..Расшифр do
  if ТипДок=0 or ТипДок=2 or (ТипДок=1 and Расшифр[n].Нов):
     Призн_ИспДок=Раб.Бюджет2005.ВзятьСловоИзНабораПоМаске(Расшифр[n].Призн," ","ИСПДОК.*"," ");
     if not Призн_ИспДок="":
        Break;
     fi;
  fi;
 od;
 if НоваяЗапись:
    if Номер=0:
       if inТипДок="":
          ClearVariable(Buf);
          Buf[1]="ф.0531702 Сведения о принятом бюджетном обязательстве";
          Buf[2]="ф.0531705 Заявка на внесение изменений в бюджетное обязательство";
          Buf[3]="ф.0531706 Заявка на на перерегистрацию бюджетного обязательства";
          n=Alternate("Выберите тип документа",Buf,-1,1,12);
          if not n=0: n=n-1; fi;
          ТипДок=n;
         else
          ТипДок=Int(inТипДок);
       fi;
       if ТипДок=0:
          ДатаДок=ToDay;
          ДатаПодписи=ДатаДок;
          Рекв=Раб.Бюджет2005.НашРекв;
          ЗаполнитьКлиента(Рекв);
          ПоУмолчанию;
         |ТипДок=1:
          Изм_ДатаДок=ToDay;
          ДатаПодписи=Изм_ДатаДок;
         |ТипДок=2:
          ДатаДок=ToDay;
          ДатаПодписи=ДатаДок;
       fi;
    fi;
    if ((ТипДок=0 or ТипДок=2) and ДатаДок>=1.7.2013) or (ТипДок=1 and Изм_ДатаДок>=1.7.2013):
       ver=11;
    fi;
    if ТипДок=0 and УчетФК: GUID_FK=Раб.Бюджет2005.MyGUID("FK"); fi;
    if ТипДок=0 or ТипДок=2:
       ФорматНомер=setФорматНомер;
       ff="(ТипДок=0 or ТипДок=2 or OverrideТипДок='0' or OverrideТипДок='2')";
       if not ФорматНомер=0:
          Префикс=hПрефикс;
          Сепаратор=setСепаратор;
          ff=ff+" and Префикс='"+Префикс+"'";
       fi;
       Номер=Раб.Обл.СледСУчетомДатыФ(SelfCrd,"Номер","ДатаДок",ДатаДок,ff);
       НомерДок=Format("%."+Str(setДлинаНомер)+"D",Номер);
      |ТипДок=1:
       Изм_ФорматНомер=setФорматНомер;
       ff="(ТипДок=1 or OverrideТипДок='1')";
       if not Изм_ФорматНомер=0:
          Изм_Префикс=hПрефикс;
          Изм_Сепаратор=setСепаратор;
          ff=ff+" and Изм_Префикс='"+Изм_Префикс+"'";
       fi;
       Изм_Номер=Раб.Обл.СледСУчетомДатыФ(SelfCrd,"Изм_Номер","Изм_ДатаДок",Изм_ДатаДок,ff);
       Изм_НомерДок=Str(Изм_Номер);
    fi;
    Рег=False;
    ВБанк=False;
    Учитывать=False;
    Аннул=False;
    НомРейс=0;
    ДатаРейс=1.1.100;
    Призн_Договор="";
    Договор=nil;
    ДО=nil;
    БО=nil;
    БО_Пре=nil;
    Изм=0;
    OverrideТипДок="";
    OverrideЗнач="";
    ClosedModFob=False;
    if Раб.Бюджет2005.Сетевая: EditorApply; fi;
 fi;
 if not FlagInit: Оформление; fi;
 inТипДок=Str(ТипДок);
end;

Func OnVerify: Logical;
var OWA:I;
var ff:s;
 if preView:
    btnПросмотр_OnClick("");
 fi;
 if ТипДок=0 or ТипДок=2:
    if not ФорматНомер=0: 
       if Префикс="": Message("Заполните префикс номера сведений",mtError); Template.Field="НомерДок_"; ^False; fi;
       if Сепаратор="": Message("Заполните разделитель префикса и номера сведений",mtError); Template.Field="НомерДок_"; ^False; fi;
    fi;
    if НомерДок="": Message("Заполните номер сведений",mtError); Template.Field=if(ТипДок=2,"НомерДок_","НомерДок706_"); ^False; fi;
    if ДатаДок=1.1.100: Message("Заполните дату сведений",mtError); Template.Field="ДатаДок"; ^False; fi;
   else
    if ТипДок=1 and not Изм=БО_Пре.Изм+1: Изм=БО_Пре.Изм+1; fi;
 fi;
 ТекГод=Year(ДатаДок);
 Признак=Str(ТекГод);
 Признак=Признак+if(ФорматНомер=0,"","."+Раб.Договор.ConvertStr(Префикс));
 Признак=Признак+"."+Раб.Договор.ConvertStr(НомерДок);
 if not Договор=nil: Признак_Кмнт=Договор.НаимДок.Наим;
   |not ДО=nil: Признак_Кмнт=ДО.НаимДок.Наим;
   |Р3: Признак_Кмнт="Исполнительный лист";
   |True: Признак_Кмнт=if(Осн_ДокВид="1","Государственный контракт",Осн_ДокНаим);
 fi;
 Признак_Кмнт=if(Рег,"Учетный номер "+РегНомер+" ","")+Признак_Кмнт+" №"+if(Р3,Исп_ДокНом+" от "+DateToString(Исп_ДокДат),Осн_ДокНом+" от "+DateToString(Осн_ДокДат))+" "+РеквП.КорИмя;
 if УчетФК and GUID_FK="":
    GUID_FK=Раб.Бюджет2005.MyGUID("FK");
 fi;
 ff="not UKey="+RecordToString(Current)+" and ТекГод="+Str(ТекГод);
 if ФорматНомер=0:
    ff=ff+" and НомерДок='"+НомерДок+"'";
   else
    ff=ff+" and Префикс='"+Префикс+"' and НомерДок='"+НомерДок+"'";
 fi;
 if ТипДок=1 or OverrideТипДок="1":
    ff=ff+" and Изм="+Str(Изм)+" and ТипДок=1";
   else
    ff=ff+" and (ТипДок=0 or ТипДок=2)";
 fi;
 if ((ТипДок=0 or ТипДок=2) and ДатаДок>=1.7.2013) or (ТипДок=1 and Изм_ДатаДок>=1.7.2013):
    ver=11;
 fi;
 OWA=OpenWorkArea(SelfCrd,"",ff);
 Try
  if not Records(OWA)=0:
     if ТипДок=1:
        Message("Заявка на внесение изменений "+НомерДок_+"/"+Str(Изм)+", уже существуют в базе данных",mtError);
       else
        Message("Сведения с номером "+НомерДок_+", уже существуют в базе данных",mtError);
     fi;
     ^False;
  fi;
 Finally
  CloseWorkArea(OWA);
 end;
 СинхроПризнИспДок;
 Return ЗаполнитьКлючДок;
end;

Proc OnCancel;
 Оформление;
 if preView:
    btnПросмотр_OnClick("");
 fi;
end;
--Обработчики событий шаблона -----
--

Конец
