-- Шаблон создан мастером бланков
-- 04.01.2011 12:10:28
--
БланкСШаблоном "Заявка на включение реквизитов в сводный реестр";
HeadDoc:Section;
Head1:Section;
Head2:Section;
Table:Section;
Table_Head:Section;
Table_H1:Section;
TableD:Section;
T1:Section;
SD:Section;
SD1:Section;
SD2:Section;
var SelfBln:S="ДОКУМЕНТЫ.БАНК.ЗАЯВКА_0531664";
var SelfCfg:S="ТББ.ДОКУМЕНТЫ.0531664.000.cfg";
var Pages:I=[1];
var Page:I=Pages;
var XS:I=2100; --Размер листа чистый
var YS:I=2970; --Размер листа чистый


--Шапка
Рекв:record;
Банк:record;
Выш:Record;
НомДок:S;
Грасп:S;
ППП:S;
var Учр:S;
var Учр_код:S;
var ОФК:S;
var ОФК_код:S;
var Вышест:S;
var Вышест_код:S;
ДатаДок:D;
Отзыв:L;
--Таблица
Упр:I;
var Add[]:S='+';
var Del[]:S='-';
Орг[]:Record;
УБП[]:S;
ПолнИмя[]:S;
ПолнИмя_2[]:S;
КорИмя[]:S;
ОКФС[]:S;
ОКОПФ[]:S;
ГР      []:I;
П       []:I;
ИП      []:I;
ГАД     []:I;
АД      []:I;
ГАИФДВне[]:I;
ГАИФДВну[]:I;
АИФДВне []:I;
АИФДВну []:I;
ПВРЕ    []:I;
ДАТАВВ  []:Date;
--Подвал
ДолжнРук:S;
ФИОРук  :S;
ДолжнИсп:S;
ФИОИсп  :S;
ТелИсп  :S;
ДатаПодп:D;
var ВидОп:S=if(Отзыв,"Отзыв заявки","");
--Дополнительно
НомРейс_:I=1;
ДатаРейс:D=Today;
var accept:S;
var Ver:S="TXZD090101";
var Head:S="FK|"+Ver+"|Турбо Бухгалтер 6.9 Бюджет-148н"+SubStr(Str(Версия.Сборка0),1,2)+"|"+SubStr(Str(Версия.Сборка0)+if(Версия.Сборка1<>0,"."+Str(Версия.Сборка1),"")+Версия.Сборка2,3,10)+"||";
var НомРейс :S=Раб.Бюджет2005.Format36(НомРейс_);--if(fВЛВС,Раб.Бюджет2005.Format36(1007+НомРейс_),Раб.Бюджет2005.Format36(НомРейс_));
var DD:S=if(Day(ДатаРейс)<10, Str(Day(ДатаРейс)), Chr(65+Day(ДатаРейс)-10));
var M:S=if(Mon(ДатаРейс)<10,Str(Mon(ДатаРейс)),""+Chr(65+Mon(ДатаРейс)-10));
var ИмяРейс:S=Учр_код+DD+НомРейс+".ZD"+M;
var Err[]:I;
var Wrn[]:I;
var Cmt[]:I;
var BufE[]:S;
var BufW[]:S;
var BufC[]:S;

Proc Инициализация;
var i:i;
 accept='';
 for i=32..123 do
  accept=accept+chr(i);
 od;
 accept=accept+chr(125);
 accept=accept+chr(126);
 accept=accept+chr(185); --№
 accept=accept+chr(184); --№
 accept=accept+chr(168); --№
 for i=192..255 do
  accept=accept+chr(i); 
 od;
end;

Func Fix (Value:S):S;
 ^Trim(Value);
end;

Proc ДобавитьСообщение (Iter:I; aСообщ:S; aОбязат:I);
 if aОбязат=1:
    Err[Iter+1]=Err[Iter+1]+1;
    BufE[Iter+1]=BufE[Iter+1]+Chr(13)+aСообщ;
   |aОбязат=0:
    Wrn[Iter+1]=Wrn[Iter+1]+1;
    BufW[Iter+1]=BufW[Iter+1]+Chr(13)+aСообщ;
   |aОбязат=-1:
    Cmt[Iter+1]=Cmt[Iter+1]+1;
    BufC[Iter+1]=BufC[Iter+1]+Chr(13)+aСообщ;
 fi;
end;

Proc ПроверкаНаСтандарт (Iter:i; aИмя:S; aЗнач:S; aОбязат:I; aДлина:I); --aИмя имя поля, aЗнач значение поля, aОбязат =1 обзательное, =0 предупреждение, =-1 необазтельное, aДлина >0 равно, <0 меньше или равно, 0 не имеет значения
var l,ll:I;
 aЗнач=Fix(aЗнач);
 if aЗнач="" and not aОбязат=-1 then
    ДобавитьСообщение (Iter,"Поле '"+aИмя+"' не заполнено",aОбязат);
    Exit;
 fi;
 ll=Length(aЗнач);
 for l=1..ll do
  if not(Pos(SubStr(aЗнач,l,1),accept)>0):
     ДобавитьСообщение(Iter,"Поле '"+aИмя+"' содержит недопустимый символ ( "+SubStr(aЗнач,l,1)+" ) на позиции "+Str(l),1);
  fi;
 od;
 if not aДлина=0 and not aЗнач="":
    if Length(aЗнач)>Abs(aДлина) then ДобавитьСообщение(Iter,"Значение поля '"+aИмя+"' превышает максимальную длину "+Str(Abs(aДлина)),1);
      |aДлина>0 and Length(aЗнач)<aДлина then ДобавитьСообщение(Iter,"Значение поля '"+aИмя+"' меньше обязательной длины "+Str(aДлина),1);
    fi;
 fi;
end;

func Проверить:L;
var Iter:I;
 ClearVariable(Err); ClearVariable(BufE);
 ClearVariable(Wrn); ClearVariable(BufW);
 ClearVariable(Cmt); ClearVariable(BufC);
 Iter=0;
-- if ДатаРейс=1.1.100: Message("Введите дату формирования документов (рейса)",mtError); Template.Field="ДатаРейс"; ^False; fi;
 --if НомРейс_=0: Message("Введите порядковый номер рейса",mtError);  Template.Field="НомРейс"; ^False; fi;
-- if fВЛВС:
--    if НомРейс_<1 or НомРейс_>288: Message("Выход за границы диапазона номеров 1..288 для выделенной ЛВС",mtError); Template.Field="НомРейс_"; ^False; fi;
--   else
    if НомРейс_<1 or НомРейс_>1007: Message("Выход за границы диапазона номеров 1..1007",mtError); Template.Field="НомРейс_"; ^False; fi;
-- fi;
 --FROM Почтовая информация об отправителе файла
 if Рекв=nil:
    ДобавитьСообщение(Iter,"Не выбран реквизит",1);
   else
    ПроверкаНаСтандарт(Iter,"УБП(КБП) организации",Учр_код,1,5);--
    ПроверкаНаСтандарт(Iter,"Наименование организации",Учр,1,-255);--
 fi; --if GetFieldR(OWA,n,"Учр")=nil:
 if Банк=nil:
    ДобавитьСообщение(Iter,"Не выбран ОФК",1);
   else
    ПроверкаНаСтандарт(Iter,"Уровень бюджета",GetCardFieldS("БАНК_СЧЕТА",Банк,"РПО_КОДБЮДЖ"),1,1);--
    ПроверкаНаСтандарт(Iter,"Код ОрФК",ОФК_код,1,4);--
    ПроверкаНаСтандарт(Iter,"Наименование ОрФК плательщика",ОФК,1,-255);--
 fi; --if GetFieldR(OWA,n,"Учр_Банк")=nil:
 if ДатаДок=1.1.100 then
    ДобавитьСообщение (Iter,"Поле 'Дата заявки' не заполнено",1);--
 fi;
 ПроверкаНаСтандарт(Iter,"Номер заявки",НомДок,1,-15);--
 ПроверкаНаСтандарт(Iter,"Глава по БК",ППП,1,3);--
 ПроверкаНаСтандарт(Iter,"Наименование ГРБС",Грасп,1,-255);--
 ПроверкаНаСтандарт(Iter,"Наименование вышестоящей организации",Вышест,-1,-255);--
 ПроверкаНаСтандарт(Iter,"УБП(КБП) вышестоящей организации",Вышест_код,-1,5);--
 ПроверкаНаСтандарт(Iter,"Должность руководителя",ДолжнРук,1,-100);--
 ПроверкаНаСтандарт(Iter,"ФИО руководителя",ФИОРук,1,-50);--
 ПроверкаНаСтандарт(Iter,"Должность исполнителя",ДолжнИсп,1,-50);--
 ПроверкаНаСтандарт(Iter,"ФИО исполнителя",ФИОИсп,1,-50);--
 ПроверкаНаСтандарт(Iter,"Телефон исполнителя",ТелИсп,-1,-50);--
 if ДатаПодп=1.1.100 then
    ДобавитьСообщение (Iter,"Поле 'Дата подписи' не заполнено",1);--
 fi;
 for Iter=1..Упр do
    ПроверкаНаСтандарт(Iter,"Код участника бюджетного процесса (строка"+Str(Iter)+")",УБП[Iter],-1,5);--
    ПроверкаНаСтандарт(Iter,"Полное наименование (строка"+Str(Iter)+")",ПолнИмя[Iter],1,-255);--
    ПроверкаНаСтандарт(Iter,"Полное наименование (строка"+Str(Iter)+")",ПолнИмя_2[Iter],-1,-255);--
    ПроверкаНаСтандарт(Iter,"Краткое наименование (строка"+Str(Iter)+")",КорИмя[Iter],1,-255);--
    ПроверкаНаСтандарт(Iter,"Код ОКФС (строка"+Str(Iter)+")",ОКФС[Iter],1,2);--
    ПроверкаНаСтандарт(Iter,"Код ОКОПФ (строка"+Str(Iter)+")",ОКОПФ[Iter],0,-2);--
    if ДатаВВ[Iter]<ДатаДок then ДобавитьСообщение (Iter,"Дата ввода (строка"+Str(Iter)+") ранее даты заявки",1); fi;
 od;
 if SumOfArray(Err)>0 then
    for Iter=0..LengthOfArray(BufE) do
      if Err[Iter+1]>0 then Message("Ошибка !"+BufE[Iter+1],mtError); ^False; fi;
    od;
 fi;
 if SumOfArray(Wrn)>0 then
    for Iter=0..LengthOfArray(BufW) do
      if Wrn[Iter+1]>0 then
         if EnqOkCancel("Предупреждение !"+BufW[Iter+1]+chr(13)+"Игнорировать ?",mtWarning)=cmCancel then ^False; fi;
      fi;
    od;
 fi;
 ^True;
end;

proc Выгрузка;
var OWA,OAосн,OAршф,State,Iter,F,iРейс,nРейс,iТабл,nТабл,n,nn,hНомРейс,w,ww:I;
var Buf,Cache,tmp,FileName:S;
  FileName=ИмяРейс;
  if ChooseFile(FileName,"")=cmOk then
     F=TextFileCreate(FileName);
     ShowProgress(Упр,"Формирование рейса....");
     Try
      TextFileWriteLn(F,Head);
      --FROM Почтовая информация об отправителе файла
      TextFileAppendLn(F,"FROM|");
      --Код ОФК
      TextFileAppendLn(F,"|");
      --Наименование ОФК
      TextFileAppendLn(F,"|");
      --Уровень бюджета
      Buf=GetCardFieldS("БАНК_СЧЕТА",Банк,"РПО_КОДБЮДЖ");
      Buf=Fix(Buf);
      TextFileAppendLn(F,Buf);
      TextFileAppendLn(F,"|");
      --Код УБП
      Buf=Учр_код;
      Buf=Fix(Buf);
      TextFileAppendLn(F,Buf);
      TextFileAppendLn(F,"|");
      --Наименование УБП
      Buf=Учр;
      Buf=Fix(Buf);
      TextFileAppendLn(F,Buf);
      TextFileWriteLn(F,"|");
      --ТО Почтовая информация о получателе файла
      TextFileAppendLn(F,"TO|");
      --Код ОрФК
      Buf=ОФК_Код;
      Buf=Fix(Buf);
      TextFileAppendLn(F,Buf);
      TextFileAppendLn(F,"|");
      --Наименование ОрФК
--      Buf=GetFieldS(OWA,n,"БАНК.РПО_ОФК_Имя");
--      Buf=Fix(Buf);
--      TextFileAppendLn(F,Buf);
      Buf=ОФК;
      Buf=Fix(Buf);
      TextFileAppendLn(F,Buf);
      TextFileAppendLn(F,"|");
      --Уровень бюджета
      TextFileAppendLn(F,"|");
      --Код УБП
      TextFileAppendLn(F,"|");
      --Наименование УБП
      TextFileWriteLn(F,"|");
      --ZD Общая информация
      TextFileAppendLn(F,"ZD|");
      --GUID
      TextFileAppendLn(F,"|");
      --Номер заявки
      Buf=Fix(НомДок);
      TextFileAppendLn(F,Buf);
      TextFileAppendLn(F,"|");
      --Дата заявки
      TextFileAppendLn(F,DateToString(ДатаДок));
      TextFileAppendLn(F,"|");
      --Наименование УБП
      Buf=Учр;
      Buf=Fix(Buf);
      TextFileAppendLn(F,Buf);
      TextFileWriteLn(F,"|");
      --Код УБП
      Buf=Учр_код;
      Buf=Fix(Buf);
      TextFileAppendLn(F,Buf);
      TextFileAppendLn(F,"|");
      --Наименование главы
      Buf=Грасп;
      Buf=Fix(Buf);
      TextFileAppendLn(F,Buf);
      TextFileAppendLn(F,"|");
      --Код главы
      Buf=ППП;
      Buf=Fix(Buf);
      TextFileAppendLn(F,Buf);
      TextFileAppendLn(F,"|");
      --Наименование вышестоящей организации
      Buf=Вышест;
      Buf=Fix(Buf);
      TextFileAppendLn(F,Buf);
      TextFileAppendLn(F,"|");
      --Код вышестоящей организации по УБП
      Buf=Вышест_код;
      Buf=Fix(Buf);
      TextFileAppendLn(F,Buf);
      TextFileAppendLn(F,"|");
      -- Должность руководителя
      Buf=ДолжнРук;
      Buf=Fix(Buf);
      TextFileAppendLn(F,Buf);
      TextFileAppendLn(F,"|");
      -- ФИО руководителя
      Buf=ФИОРук;
      Buf=Fix(Buf);
      TextFileAppendLn(F,Buf);
      TextFileAppendLn(F,"|");
      -- Должность исполнителя
      Buf=ДолжнИСП;
      Buf=Fix(Buf);
      TextFileAppendLn(F,Buf);
      TextFileAppendLn(F,"|");
      -- ФИО  исполнителя
      Buf=ФИОИСП;
      Buf=Fix(Buf);
      TextFileAppendLn(F,Buf);
      TextFileAppendLn(F,"|");
      -- Телефон исполнителя
      Buf=ТелИСП;
      Buf=Fix(Buf);
      TextFileAppendLn(F,Buf);
      TextFileAppendLn(F,"|");
      --Дата подписи документа
      TextFileAppendLn(F,DateToString(ДатаПодп));
      TextFileAppendLn(F,"|");
      -- Должность исполнителя ФК
      TextFileAppendLn(F,"|");
      -- ФИО  исполнителя ФК
      TextFileAppendLn(F,"|");
      -- Телефон исполнителя ФК
      TextFileAppendLn(F,"|");
      --Дата подписи документа в ФК
      TextFileAppendLn(F,"|");
      -- Вид операции
      TextFileAppendLn(F,if(Отзыв,"Отзыв заявки",""));
      TextFileAppendLn(F,"|");
      -- Код операции
      TextFileAppendLn(F,if(Отзыв,"2","0"));
      TextFileWriteLn(F,"|");
      for Iter=1..Упр do
        --ZDRICL Общая информация
        TextFileAppendLn(F,"ZDRICL|");
        --Номер строки
        Buf=if(Упр>1,Str(Iter),'');
        Buf=Fix(Buf);
        TextFileAppendLn(F,Buf);
        TextFileAppendLn(F,"|");
        --Код участника по УБП
        Buf=УБП[Iter];
        Buf=Fix(Buf);
        TextFileAppendLn(F,Buf);
        TextFileAppendLn(F,"|");
        --Полное наименование
        Buf=ПОЛНИМЯ[Iter];
        Buf=Fix(Buf);
        TextFileAppendLn(F,Buf);
        Buf=ПОЛНИМЯ_2[Iter];
        Buf=Fix(Buf);
        TextFileAppendLn(F,Buf);
        TextFileAppendLn(F,"|");
        --Сокращенное наименование
        Buf=КОРИМЯ[Iter];
        Buf=Fix(Buf);
        TextFileAppendLn(F,Buf);
        TextFileAppendLn(F,"|");
        --Код ОКФС
        Buf=ОКФС[Iter];
        Buf=Fix(Buf);
        TextFileAppendLn(F,Buf);
        TextFileAppendLn(F,"|");
        --Код ОКОПФ
        Buf=ОКОПФ[Iter];
        Buf=Fix(Buf);
        TextFileAppendLn(F,Buf);
        TextFileAppendLn(F,"|");
        --Полномочия главного распорядителя (распорядителя) средств бюджета
        TextFileAppendLn(F,Str(ГР[Iter]));
        TextFileAppendLn(F,"|");
        --Полномочия получателя средств бюджета
        TextFileAppendLn(F,Str(П[Iter]));
        TextFileAppendLn(F,"|");
        --Полномочия иного получателя средств бюджета
        TextFileAppendLn(F,Str(ИП[Iter]));
        TextFileAppendLn(F,"|");
        --Полномочия главного администратора доходов бюджета (администратора, осуществляющего отдельные полномочия главного администратора)
        TextFileAppendLn(F,Str(ГАД[Iter]));
        TextFileAppendLn(F,"|");
        --Полномочия администратора доходов бюджета
        TextFileAppendLn(F,Str(АД[Iter]));
        TextFileAppendLn(F,"|");
        --Полномочия главного администратора источников внутреннего финансирования дефицита бюджета (администратора, осуществляющего отдельные полномочия главного администратора)
        TextFileAppendLn(F,Str(ГАИФДВну[Iter]));
        TextFileAppendLn(F,"|");
        --Полномочия главного администратора источников внешнего финансирования дефицита бюджета (администратора, осуществляющего отдельные полномочия главного администратора)
        TextFileAppendLn(F,Str(ГАИФДВне[Iter]));
        TextFileAppendLn(F,"|");
        --Полномочия администратора источников внутреннего финансирования дефицита бюджета
        TextFileAppendLn(F,Str(АИФДВну[Iter]));
        TextFileAppendLn(F,"|");
        --Полномочия администратора источников внутреннего финансирования дефицита бюджета
        TextFileAppendLn(F,Str(АИФДВне[Iter]));
        TextFileAppendLn(F,"|");
        --Полномочия по осуществлению операций со средствами, поступающими во временное распоряжение
        TextFileAppendLn(F,Str(ПВРЕ[Iter]));
        TextFileAppendLn(F,"|");
        --Дата ввода в действие
        TextFileAppendLn(F,DateToString(ДАТАВВ[Iter]));
        TextFileAppendLn(F,"|");
      od;
     Finally
      TextFileClose(F);
      CloseProgress;
     end;
  fi;
end;

proc Шапка_Выш;
var OWA:I;
 if not RecordExists('КОНТРАГЕНТ',Выш) then
    Вышест='';
    Вышест_код='';
   else
    OWA=OpenWorkArea('КОНТРАГЕНТ','','Ukey='+RecordtoString(Выш));
    try
      Вышест=GetFieldS(OWA,1,'КорИмя');
      Вышест_код=GetFieldS(OWA,1,'РПО_КБП');
    finally
      CloseWorkArea(OWA);
    end;

 fi;
end;

Proc Шапка;
var OWA:I;
 if not RecordExists('КОНТРАГЕНТ',Рекв) then
    Рекв=Nil;
    Учр='';
    Учр_код='';
    Грасп='';
    ППП='';
    Выш=nil;
   else
    OWA=OpenWorkArea('КОНТРАГЕНТ','','Ukey='+RecordtoString(Рекв));
    try
      Учр=GetFieldS(OWA,1,'КорИмя');
      Учр_код=GetFieldS(OWA,1,'РПО_КБП');
      if ППП='' then
         ППП=GetFieldS(OWA,1,'РПО_ППП');
         Грасп=Раб.Бюджет.НаимКБК('ППП',ППП);
      fi;
      if Выш=nil then
         Выш=GetFieldR(OWA,1,'РПО_ПОДЧИНЕН');
         Шапка_Выш;
      fi;
      if Банк<>nil then
        if not GetCardFieldR("БАНК_СЧЕТА",Банк,"Контрагент")=Рекв then Банк=nil; fi;
      fi;
      if Банк=nil then
         Банк=Раб.Бюджет2005.БанкСчет(Рекв,False);
      fi;
    finally
      CloseWorkArea(OWA);
    end;
 fi;
 if not RecordExists('БАНК_Счета',Банк) then
    Банк=Nil;
    ОФК="";
    ОФК_Код="";
   else
    ОФК=GetCardFieldS("БАНК_СЧЕТА",Банк,"РПО_ОФК_Имя");
    ОФК_код=GetCardFieldS("БАНК_СЧЕТА",Банк,"РПО_ОФК_Код");
 fi;
end;

proc ИмяЛинк(Link:L);
var i:I;
   for i = 1 to Упр do
     if Link then
        if ПолнИмя_2[i]='' then
           Table.CellLinks(4,1+2*(i-1),4,2*i);
        fi;
       else
       Table.CellLinks(4,1+2*(i-1),4,2*i);
     fi;

   od;
end;

proc СтрокаОб(Iter:I);
var OWA:I;
 if not RecordExists('КОНТРАГЕНТ',Орг[Iter]) then
    Орг[Iter]=nil;
    УБП[Iter]='';
    ПолнИмя[Iter]='';
    ПолнИмя_2[Iter]='';
    КорИмя[Iter]='';
    ОКФС[Iter]='';
    ОКОПФ[Iter]='';
    ГР      [Iter]=0;
    П       [Iter]=0;
    ИП      [Iter]=0;
    ГАД     [Iter]=0;
    АД      [Iter]=0;
    ГАИФДВне[Iter]=0;
    ГАИФДВну[Iter]=0;
    АИФДВне [Iter]=0;
    АИФДВну [Iter]=0;
    ПВРЕ    [Iter]=0;
    ДАТАВВ  [Iter]=1.1.100;
   else
    OWA=OpenWorkArea('КОНТРАГЕНТ','','Ukey='+RecordtoString(Орг[Iter]));
    try
      УБП[Iter]=GetFieldS(OWA,1,'РПО_КБП');
      ПолнИмя[Iter]=GetFieldS(OWA,1,'ПолнИмя');
      ПолнИмя_2[Iter]=Trim(GetFieldS(OWA,1,'РПО_ПолнИмя2'));
      --Table.row(2,RowVisible,ПолнИмя_2[Iter]<>'');
--      if ПолнИмя_2[Iter]='' then
--         Table.CellLinks(4,1+2*(Iter-1),4,2*Iter);
--      fi;
      КорИмя[Iter]=GetFieldS(OWA,1,'КорИмя');
      ОКФС[Iter]=GetFieldS(OWA,1,'КФС');
      ОКОПФ[Iter]=GetFieldS(OWA,1,'КОПФ');
    finally
      CloseWorkArea(OWA);
    end;
 fi;

end;

proc Рендер;
var t,t0:i;
  Раб.Вспом.Печать2.SelfCfg=SelfCfg;
  Раб.Вспом.Печать2.Инициализация("ДОКУМЕНТЫ.БАНК.ЗАЯВКА_0531664","HeadDoc@Head1@Head2@Table_Head@Table_H1@Table@TableD@SD@SD1@SD2");
  Раб.Вспом.Печать2.ВывестиСекцию("ДОКУМЕНТЫ.БАНК.ЗАЯВКА_0531664","HeadDoc");
  Раб.Вспом.Печать2.ВывестиСекцию("ДОКУМЕНТЫ.БАНК.ЗАЯВКА_0531664","Head1");
  Раб.Вспом.Печать2.ВывестиСекцию("ДОКУМЕНТЫ.БАНК.ЗАЯВКА_0531664","Head2");
  Раб.Вспом.Печать2.ВывестиТаблицу("ДОКУМЕНТЫ.БАНК.ЗАЯВКА_0531664","Table_Head#1@Table_H1#3","Table","TableD#1@SD#1@SD1#5@SD2#5","",-1,"");
end;

--proc ПодготовкаЯчейки(Obj:Object;r:i;c:i;Border:s;Aligment:i);
--  Obj.Cell(r,c,CellBorder,Border);
--  Obj.Cell(r,c,CellAlignment,Aligment);
--  Obj.Cell(r,c,CellFieldType,cftStaticText);
--end;

--Func ДобавитьЭлементШапки(Obj: Object;r:i;c:i;d:i;ad:i):i;
--  ПодготовкаЯчейки(Obj,r,c+d,"1,1,1,2",2);
--  Obj.Cell(r,c+d,CellContents,Str(c),True);
--  if ad<>0 then Obj.CellLinks(c+d,r,c+d+ad,r); fi;
--  ^d+ad;
--end;

--Func ДобавитьШапку(Obj: Object; r:i):I;
--var c,d:i;
-- if r+1>AsInteger(Obj.RowsCount): Obj.RowsCount=AsInteger(Obj.RowsCount)+30; fi;
-- d=2;
-- d=ДобавитьЭлементШапки(Obj,r,1,d,0);
-- d=ДобавитьЭлементШапки(Obj,r,2,d,1);
-- d=ДобавитьЭлементШапки(Obj,r,3,d,0);
-- d=ДобавитьЭлементШапки(Obj,r,4,d,0);
-- d=ДобавитьЭлементШапки(Obj,r,5,d,0);
-- d=ДобавитьЭлементШапки(Obj,r,6,d,1);
-- d=ДобавитьЭлементШапки(Obj,r,7,d,0);
-- d=ДобавитьЭлементШапки(Obj,r,8,d,0);
-- d=ДобавитьЭлементШапки(Obj,r,9,d,1);
-- d=ДобавитьЭлементШапки(Obj,r,10,d,0);
-- d=ДобавитьЭлементШапки(Obj,r,11,d,2);
-- d=ДобавитьЭлементШапки(Obj,r,12,d,0);
-- d=ДобавитьЭлементШапки(Obj,r,13,d,0);
-- d=ДобавитьЭлементШапки(Obj,r,14,d,0);
-- d=ДобавитьЭлементШапки(Obj,r,15,d,0);
-- d=ДобавитьЭлементШапки(Obj,r,16,d,0);
-- ^r;
--end;

--Func ДобавитьСтроку (Obj: Object; r:i; n:i):I;
--var c:i;
--var Double:l;
-- Double=not (ПОЛНИМЯ_2[n]="");
-- if r+if(Double,2,1)>AsInteger(Obj.RowsCount): Obj.RowsCount=AsInteger(Obj.RowsCount)+30; fi;
-- c=3; ПодготовкаЯчейки(Obj,r,c,"1,1,1,1",2);
--      Obj.Cell(r,c,CellContents,УБП[n],True);
--      if Double then Obj.CellLinks(c,r,c,r+1); fi;
-- c=4; ПодготовкаЯчейки(Obj,r,c,"1,1,1,"+if(Double,"0","1"),0);
--      Obj.Cell(r,c,CellContents,ПолнИмя[n],True);
--      Obj.CellLinks(c,r,c+1,r);
--      if Double then
--         ПодготовкаЯчейки(Obj,r+1,c,"1,0,1,1",0);
--         Obj.Cell(r+1,c,CellContents,ПолнИмя_2[n],True);
--         Obj.CellLinks(c,r+1,c+1,r+1);
--      fi;
-- c=6; ПодготовкаЯчейки(Obj,r,c,"1,1,1,1",0);
--      Obj.Cell(r,c,CellContents,КОРИМЯ[n],True);
--      if Double then Obj.CellLinks(c,r,c,r+1); fi;
-- c=7; ПодготовкаЯчейки(Obj,r,c,"1,1,1,1",2);
--      Obj.Cell(r,c,CellContents,ОКФС[n],True);
--      if Double then Obj.CellLinks(c,r,c,r+1); fi;
-- c=8; ПодготовкаЯчейки(Obj,r,c,"1,1,1,1",2);
--      Obj.Cell(r,c,CellContents,ОКОПФ[n],True);
--      if Double then Obj.CellLinks(c,r,c,r+1); fi;
-- c=9; ПодготовкаЯчейки(Obj,r,c,"1,1,1,1",2);
--      Obj.Cell(r,c,CellContents,if(ГР[n]=0,"-",if(ГР[n]=1,"Да","Нет")),True);
--      Obj.CellLinks(c,r,c+1,r+if(Double,1,0));
-- c=11;ПодготовкаЯчейки(Obj,r,c,"1,1,1,1",2);
--      Obj.Cell(r,c,CellContents,if(П[n]=0,"-",if(П[n]=1,"Да","Нет")),True);
--      if Double then Obj.CellLinks(c,r,c,r+1); fi;
-- c=12;ПодготовкаЯчейки(Obj,r,c,"1,1,1,1",2);
--      Obj.Cell(r,c,CellContents,if(ИП[n]=0,"-",if(ИП[n]=1,"Да","Нет")),True);
--      if Double then Obj.CellLinks(c,r,c,r+1); fi;
-- c=13; ПодготовкаЯчейки(Obj,r,c,"1,1,1,1",2);
--      Obj.Cell(r,c,CellContents,if(ГАД[n]=0,"-",if(ГАД[n]=1,"Да","Нет")),True);
--      Obj.CellLinks(c,r,c+1,r+if(Double,1,0));
-- c=15;ПодготовкаЯчейки(Obj,r,c,"1,1,1,1",2);
--      Obj.Cell(r,c,CellContents,if(АД[n]=0,"-",if(АД[n]=1,"Да","Нет")),True);
--      if Double then Obj.CellLinks(c,r,c,r+1); fi;
-- c=16;ПодготовкаЯчейки(Obj,r,c,"1,1,1,1",2);
--      Obj.Cell(r,c,CellContents,if(ГАИФДВну[n]=0,"-",if(ГАИФДВну[n]=1,"Да","Нет")),True);
--      Obj.CellLinks(c,r,c+2,r+if(Double,1,0));
-- c=19;ПодготовкаЯчейки(Obj,r,c,"1,1,1,1",2);
--      Obj.Cell(r,c,CellContents,if(ГАИФДВне[n]=0,"-",if(ГАИФДВне[n]=1,"Да","Нет")),True);
--      if Double then Obj.CellLinks(c,r,c,r+1); fi;
-- c=20;ПодготовкаЯчейки(Obj,r,c,"1,1,1,1",2);
--      Obj.Cell(r,c,CellContents,if(АИФДВну[n]=0,"-",if(АИФДВну[n]=1,"Да","Нет")),True);
--      if Double then Obj.CellLinks(c,r,c,r+1); fi;
-- c=21;ПодготовкаЯчейки(Obj,r,c,"1,1,1,1",2);
--      Obj.Cell(r,c,CellContents,if(АИФДВне[n]=0,"-",if(АИФДВне[n]=1,"Да","Нет")),True);
--      if Double then Obj.CellLinks(c,r,c,r+1); fi;
-- c=22;ПодготовкаЯчейки(Obj,r,c,"1,1,1,1",2);
--      Obj.Cell(r,c,CellContents,if(ПВРЕ[n]=0,"-",if(ПВРЕ[n]=1,"Да","Нет")),True);
--      if Double then Obj.CellLinks(c,r,c,r+1); fi;
-- c=23;ПодготовкаЯчейки(Obj,r,c,"1,1,1,1",2);
--      Obj.Cell(r,c,CellContents,DateToString(ДАТАВВ[n]),True);
--      if Double then Obj.CellLinks(c,r,c,r+1); fi;
-- ^r+if(Double,1,0);
--end;

--Func ДобавитьТитулН (Obj: Object; r:i; h:i; Flag2:L):I;
--var c:i;
-- Obj.RowsCount=r; --уменьшаем размерность таблицы для сброса объеденных клеток, иначе может быть ошибка при переобъеденеии
-- Obj.RowsCount=r+30;
-- c=3;  ПодготовкаЯчейки(Obj,r,c,"0,2,0,0",0);
--       Obj.Cell(r,c,CellContents,"",True);
--       Obj.CellLinks(c,r,23,r);
-- if Flag2:
--          r=r+1;
--    c=3;  ПодготовкаЯчейки(Obj,r,c,"0,0,0,0",0);
--          Obj.Cell(r,c,CellContents,"Руководитель (уполномоченное лицо)",True);
--          Obj.CellLinks(c,r,4,r+1);
--    c=5;  ПодготовкаЯчейки(Obj,r,c,"0,0,0,1",0);
--          Obj.Cell(r,c,CellContents,ДолжнРук,True);
--          Obj.CellLinks(c,r,9,r);
--    c=10; ПодготовкаЯчейки(Obj,r,c,"0,0,0,0",0);
--          Obj.Cell(r,c,CellContents,"",True);
--    c=11; ПодготовкаЯчейки(Obj,r,c,"0,0,0,1",0);
--          Obj.Cell(r,c,CellContents,"",True);
--          Obj.CellLinks(c,r,12,r);
--    c=13; ПодготовкаЯчейки(Obj,r,c,"0,0,0,0",0);
--          Obj.Cell(r,c,CellContents,"",True);
--    c=14; ПодготовкаЯчейки(Obj,r,c,"0,0,0,1",0);
--          Obj.Cell(r,c,CellContents,ФИОРук,True);
--          Obj.CellLinks(c,r,16,r);

--          r=r+1;
--    c=5;  ПодготовкаЯчейки(Obj,r,c,"0,0,0,0",2);
--          Obj.Cell(r,c,CellContents,"(должность)",True);
--          --Obj.Cell(r,c,CellFontSize,7);
--          Obj.CellLinks(c,r,9,r);
--    c=11; ПодготовкаЯчейки(Obj,r,c,"0,0,0,0",2);
--          Obj.Cell(r,c,CellContents,"(подпись)",True);
--          --Obj.Cell(r,c,CellFontSize,7);
--          Obj.CellLinks(c,r,12,r);
--    c=14; ПодготовкаЯчейки(Obj,r,c,"0,0,0,0",2);
--          Obj.Cell(r,c,CellContents,"(расшифровка подписи)",True);
--          --Obj.Cell(r,c,CellFontSize,7);
--          Obj.CellLinks(c,r,16,r);
--          r=r+1;
--    c=3;  ПодготовкаЯчейки(Obj,r,c,"0,0,0,0",0);
--          Obj.Cell(r,c,CellContents,"Ответственный исполнитель",True);
--          Obj.CellLinks(c,r,4,r+1);
--    c=5;  ПодготовкаЯчейки(Obj,r,c,"0,0,0,1",0);
--          Obj.Cell(r,c,CellContents,ДолжнИсп,True);
--          Obj.CellLinks(c,r,9,r);
--    c=10; ПодготовкаЯчейки(Obj,r,c,"0,0,0,0",0);
--          Obj.Cell(r,c,CellContents,"",True);
--    c=11; ПодготовкаЯчейки(Obj,r,c,"0,0,0,1",0);
--          Obj.Cell(r,c,CellContents,"",True);
--          Obj.CellLinks(c,r,12,r);
--    c=13; ПодготовкаЯчейки(Obj,r,c,"0,0,0,0",0);
--          Obj.Cell(r,c,CellContents,"",True);
--    c=14; ПодготовкаЯчейки(Obj,r,c,"0,0,0,1",0);
--          Obj.Cell(r,c,CellContents,ФИОИсп,True);
--          Obj.CellLinks(c,r,16,r);
--    c=17; ПодготовкаЯчейки(Obj,r,c,"0,0,0,0",0);
--          Obj.Cell(r,c,CellContents,"",True);
--    c=18; ПодготовкаЯчейки(Obj,r,c,"0,0,0,1",0);
--          Obj.Cell(r,c,CellContents,ТелИсп,True);
--          Obj.CellLinks(c,r,19,r);

--          r=r+1;
--    c=5;  ПодготовкаЯчейки(Obj,r,c,"0,0,0,0",2);
--          Obj.Cell(r,c,CellContents,"(должность)",True);
--          --Obj.Cell(r,c,CellFontSize,7);
--          Obj.CellLinks(c,r,9,r);
--    c=11; ПодготовкаЯчейки(Obj,r,c,"0,0,0,0",2);
--          Obj.Cell(r,c,CellContents,"(подпись)",True);
--          --Obj.Cell(r,c,CellFontSize,7);
--          Obj.CellLinks(c,r,12,r);
--    c=14; ПодготовкаЯчейки(Obj,r,c,"0,0,0,0",2);
--          Obj.Cell(r,c,CellContents,"(расшифровка подписи)",True);
--          --Obj.Cell(r,c,CellFontSize,7);
--          Obj.CellLinks(c,r,16,r);
--    c=18; ПодготовкаЯчейки(Obj,r,c,"0,0,0,0",2);
--          Obj.Cell(r,c,CellContents,"(телефон исполнителя)",True);
--          --Obj.Cell(r,c,CellFontSize,7);
--          Obj.CellLinks(c,r,19,r);
--    c=20; ПодготовкаЯчейки(Obj,r,c,"0,0,0,0",1);
--          Obj.Cell(r,c,CellContents,"Номер страницы",True);
--          --Obj.Cell(r,c,CellFontSize,7);
--          Obj.CellLinks(c,r,21,r);
--    c=22; ПодготовкаЯчейки(Obj,r,c,"2,2,2,1",2);
--          Obj.Cell(r,c,CellContents,Str(Pages),True);
--          Obj.CellLinks(c,r,23,r);
--          r=r+1;
--    c=3;  ПодготовкаЯчейки(Obj,r,c,"0,0,0,0",0);
--          Obj.Cell(r,c,CellContents,Раб.Формат.ДатаСтр(ДатаПодп,11),True);
--          Obj.CellLinks(c,r,5,r);
--    c=20; ПодготовкаЯчейки(Obj,r,c,"0,0,0,0",1);
--          Obj.Cell(r,c,CellContents,"Всего страниц",True);
--          --Obj.Cell(r,c,CellFontSize,7);
--          Obj.CellLinks(c,r,21,r);
--    c=22; ПодготовкаЯчейки(Obj,r,c,"2,1,2,2",2);
--          Obj.Cell(r,c,CellFieldType,cftCommonField);
--          Obj.Cell(r,c,CellContents,"Pages",True);
--          Obj.CellLinks(c,r,23,r);

-- fi;
-- ^r;
--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;

--proc Разметка(flag:L);
--var Obj:Object;
--var r,r0,y,yy,h,h0,s,hr,n,nn,hlast,hsub:i;
--var y0:I;
-- Pages=1;
-- if Flag:
--    Раб.Настр_Печать.ReadCfg("",SelfCfg);
--    yy=Раб.Настр_Печать.Sheet(XS,YS); --размер рабочей области
-- fi;
-- --Настоящая таблица
-- Table.Visible=not Flag;
-- TableD.Visible=not Flag;
-- --Генерируемая таблица
-- T1.Visible=Flag;
-- nn=Упр;
-- hlast=ВысотаОбласти ("SD",1,"SD2",3);--Высота низа последней страницы
-- hsub=ВысотаОбласти ("SD",1,"SD1",1); --Высота низа каждой страницы
-- if FindObject("T1",Obj):
--    Obj.RowsCount=1;
--    if Flag:
--       r=0;
--       r0=0;
--       y0=0;--AsInteger(Table_Head.Row(4,RowTop,""));  --начальная координата текущего листа
--       h=hsub;
--       for n=1..nn do
--        hr=r+1;
--        r=ДобавитьСтроку(Obj,r+1,n);
--        y=AsInteger(Obj.Row(r+1,RowTop,""));
--        if y-y0>yy-h:
--           y=AsInteger(Obj.Row(hr,RowTop,""));
--           r=ДобавитьТитулН(Obj,hr,yy-h-(y-y0),True);
--           r0=r+1;
--           Pages=Pages+1;
--           Obj.Row(r+1,RowNewPage,True);
--           y0=AsInteger(Obj.Row(r+1,RowTop,""));  --начальная координата текущего листа (задаем каждый раз когда начинаем новую страницу)
--           r=ДобавитьШапку(Obj,r+1);
--           r=ДобавитьСтроку(Obj,r+1,n);
--        fi;
--       od;
--       r=ДобавитьТитулН(Obj,r+1,0,False);
--       h=hlast;
--       y=AsInteger(Obj.Row(r+1,RowTop,""));
--       if y-y0>yy-h: --проверяем влезла ли таблица и штам если нет то переносим последнию строчку
--          h=hsub; --сбрасываем размер на промежуточный
--          y=AsInteger(Obj.Row(hr,RowTop,""));
--          r=ДобавитьТитулН(Obj,hr,yy-h-(y-y0),True);
--          r0=r+1;
--          r=ДобавитьШапку(Obj,r+1);
--          r=ДобавитьСтроку(Obj,r+1,nn);
--          r=ДобавитьТитулН(Obj,r+1,0,False);
--       fi;
--       Obj.RowsCount=r;
--    fi;
-- fi;
--end;

--События шаблона
Func Учр_OnEnter(FieldName: String; Iter: Integer): logical;
var rec: record;
 if Рекв=nil:
    rec=Раб.Документы.ВыборСФильтром("Контрагент","КорИмя","");
   else
    rec=OpenCardFile("Контрагент","",Рекв,crdRecordOnly);
 fi;
 if rec=nil: ^False; fi;
 Рекв=Rec;
 Шапка;
 ^False;
end;


Proc Учр_OnExit(FieldName: String; Iter: Integer);
  Рекв=nil;
  Шапка;
end;


Func Стат_OnEnter(FieldName: String; Iter: Integer): logical;
var Стат:I;
  стат=GetVariableI(FieldName+'['+Str(Iter)+']');
  if Стат=1 then Стат=2; else стат=1; fi;
  PutVariableI(FieldName+'['+Str(Iter)+']',стат);
  Return false ;
end;


Proc Стат_OnExit(FieldName: String; Iter: Integer);
  PutVariableI(FieldName+'['+Str(Iter)+']',0);
end;


Func Вышест_OnEnter(FieldName: String; Iter: Integer): logical;
var rec: record;
 if Выш=nil:
    rec=Раб.Документы.ВыборСФильтром("Контрагент","КорИмя","");
   else
    rec=OpenCardFile("Контрагент","",Выш,crdRecordOnly);
 fi;
 if rec=nil: ^False; fi;
 Выш=Rec;
 Шапка_выш;
 ^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=РАБ.КБК.НайтиЗапись("РПО_БЮДЖ_КЛАСС","CODE",ППП,"NAME_VOC='ППП2006'");
  Rec=OpenCardFile("РПО_БЮДЖ_КЛАСС_000","NAME_VOC='ППП2006'",Rec,crdRecordOnly);
  ППП=GetCardFieldS("РПО_БЮДЖ_КЛАСС",Rec,"CODE");
  Грасп=Раб.Бюджет.НаимКБК('ППП',ППП);
  Return ППП;
end;


Func Add_OnEnter(FieldName: String; Iter: Integer): logical;
  InsertFrame(Упр,Iter+1);
  Return False;
end;


Func Del_OnEnter(FieldName: String; Iter: Integer): logical;
  if Упр>1 then Deleteframe(Упр,Iter); fi;
  Return False ;
end;


Func УБП_OnEnter(FieldName: String; Iter: Integer): logical;
var Rec:record;
 if Орг[Iter]=nil:
    rec=Раб.Документы.ВыборСФильтром("Контрагент","КорИмя","");
   else
    rec=OpenCardFile("Контрагент","",Орг[Iter],crdRecordOnly);
 fi;
 if rec=nil: ^False; fi;
 Орг[Iter]=Rec;
 СтрокаОб(Iter);
 ^False;
end;


Proc УБП_OnExit(FieldName: String; Iter: Integer);
 Орг[Iter]=nil;
 СтрокаОб(Iter);

end;


Proc AfterOpen(Destroy: Logical);
  if Упр=0 then InsertFrame(Упр,1); fi;
  Инициализация;
  Раб.Вспом.Подписи_Сегодня.Взять(ToDay,SelfBln,"ДолжнРук:ДолжнРук:S|ФИОРук:ФИОРук:S");
  if ДатаДок=1.1.100: ДатаДок=ToDay; fi;
  if ДатаПодп=1.1.100: ДатаПодп=ДатаДок; fi;
  if Рекв=nil then Рекв=Раб.Бюджет2005.НашРекв; fi;
  Шапка;
--  ЗаполнитьКлиента(nil);

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);
 Template.HideEditor(False);
 Rec=OpenCardFile("Сотрудники");
 if not Rec=nil:
    v1=GetCardFieldS("Сотрудники",rec,"ДОЛЖНОСТЬ.Долж");
    v2=GetCardFieldS("Сотрудники",rec,"ФАМИЛИЯ")+" "+GetCardFieldS("Сотрудники",rec,"ИНИЦИАЛЫ");
    if Field="ДолжнРук" or Field="ФИОРук": ДолжнРук=v1; ФИОРук=v2;
      |Field="ДолжнИсп" or Field="ФИОИсп": ДолжнИсп=v1; ФИОИсп=v2;
    fi;
 fi;
 Return Cur;
end;


Func ДатаПодп_OnEnter(FieldName: String; Iter: Integer): logical;
  ДатаПодп=Calendar;
  Return False;
end;


Proc btnВыгрузка_OnClick(Sender: String);
  if Проверить then Выгрузка; fi;
end;


Func ОФК_OnEnter(FieldName: String; Iter: Integer): logical;
var rec: record;
 if Банк=nil:
    rec=Раб.Документы.ВыборСФильтром("Банк_счета","Комментарий","");
   else
    rec=OpenCardFile("Банк_счета","",Банк,crdRecordOnly);
 fi;
 if rec=nil: ^False; fi;
 Банк=Rec;
 Шапка;
 ^False;

end;


Proc ОФК_OnExit(FieldName: String; Iter: Integer);
 Банк=nil;
 Шапка;
end;

Proc btnПечать_OnClick(Sender: String);
  Рендер;
  Раб.Настр_Печать.Prn("Раб.Вспом.Печать2","",SelfCfg,"",1);
end;


Proc btnPrint2_OnClick(Sender: String);
  Рендер;
  OpenBlank("Раб.Вспом.Печать2",true);
end;


Конец
