-- Шаблон создан мастером бланков
-- 19.12.2005 15:31:41
--
БланкСШаблоном "Начисление доходов", Редактор РПО_НАЧДОХ;

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

--var ДН:D=Dat(1,1,ОтчГод);
--var ДК:D=Dat(1,1,ОтчГод+1);

var СЧЕТ_Имя:S=if(СЧЕТ=nil,"","р\сч"+СЧЕТ.РСЧЕТ+" ("+СЧЕТ.РПО_КОММЕНТ+")");

var A:S="+";
var AA:S="++";
var D:S="-";
var пп[]:S=if(Позиции=1,"",Str($));
var Вал_База:S=BaseCurrency;
var Mask_Код_Сч_Осн:S='*.401.*';
var Mask_Код_Сч_Дох:S='*.20?.*';
var Mask_Код_Сч_НалАв:S='*.303.04.830';
var Mask_Код_Сч_НДСАв:S='*.210.01.660';
var Mask_Код_Сч_Нал:S='*.303.04.730';

var Def_Код_Сч_Осн:S='2.401.10';
var Def_Код_Сч_Дох:S='2.205.31.560';

var Def_Код_Сч_НалАв:S='2.303.04.830';
var Def_Код_Сч_НДСАв:S='2.210.01.660';

var Def_Код_Сч_Нал:S='2.303.04.730';

--var Def_Код_Сч_Расх:S='2.109.60.???';

var УСОПризн:S='ПР_УСЛУГИ.УСО';

var СумТаб:N=SumOfArray(Позиции[].СумНДС);
var Wrng:S=if(СумТаб=Доход,"","Сумма по строкам не равна сумме дохода.");

var НДСВид:L=[False];--НДСПроц>0;
var НДСВид_:L=НДСЗач>0;--False;--НДСВид and НДСПроц>0;
var НакВид:L=[False];--НДСПроц>0;
var ТемаВид:L=[False];--НДСПроц>0;
var ТемаS:S=РАБ.Бюджет2005.ВзятьСловоИзНабораПоМаске(Аналит," ","ТЕМА.*","");
var ИмяТемы:S=Name_A(ТЕМАS);
var Аналит_:S=if(ТемаВид,РАБ.Бюджет2005.УдалитьСловоИзНабораПоМаске(Аналит," ","ТЕМА.*",""),Аналит);
var Аналитика_[]:S=ПОЗИЦИИ[$].Аналитика;
var НДСАв_:N=НДСАв;
var Дней_:I;
var BufСум[]:N;
var BufСум_Вал[]:N;
var BufВал[]:S;
var BufСч[]:S;
var BufПризн[]:S;
var МассПечать:S="Распечатать все";

var Buf[]:s;
var ДнейА_:I;
var СумПре[]:N;
var РЕБЕНОК_ФИО[]:S=if(ПОЗИЦИИ[$].РЕБЕНОК=nil,"",ПОЗИЦИИ[$].РЕБЕНОК.Фамилия+" "+ПОЗИЦИИ[$].РЕБЕНОК.Имя+" "+ПОЗИЦИИ[$].РЕБЕНОК.Отчество);
var СумИт[]:N=СумПре[$]+ПОЗИЦИИ[$].СумНДС+ПОЗИЦИИ[$].СумНорм*ПОЗИЦИИ[$].ДНЕЙА/ДнейА_;


var Key[]:S;
S16: Section;
S17: Section;
S11:Section;
S12:Section;
S13:Section;
S14:Section;
S15:Section;
S1:Section;
S2:Section;
S3:Section;
S4:Section;
S5:Section;
S6:Section;
S7:Section;
S8:Section;
S18: Section;
S19: Section;


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

btnРасчет: Object;
btnСчетФ: Object;
cbПроводить: Object;
btnУдСЧФ: Object;
btnСчет:  Object;
btnУдСЧ:  Object;
cbPacket: Object;
btnPrintView: Object;
-- btnСчетФ.Enabled=(ПервДок and not PacketMode) or СчетФакт<>nil;
-- btnУдСчФ.Enabled=СчетФакт<>nil;
-- btnСчет.Enabled=(ПервДок and not PacketMode) or Счет_<>nil;
-- btnУдСч.Enabled=Счет_<>nil;
var РасчЖир:S=if(Проводить,"","Подготовить ведомость");

var СчФ_[]:S=if(ПервДок or Позиции[$].СчФ<>nil,"Счет-фактура","");
var Сч_[]:S=if(ПервДок or Позиции[$].Сч<>nil,"Счет","");
var СчФУд[]:S=if(Позиции[$].СчФ<>nil,"Х","");
var СчУд[]:S=if(Позиции[$].Сч<>nil,"Х","");
var ПервДок_[]:S=if(BlankExist("ПРОЧИЕ.НАЧДОХ_ПЕЧАТЬ_ПОЗ") and ПервДок,"Печатная форма","");
var Валюта_:S=if(Валюта="",БазоваяВалюта,Валюта);
var Тема:Record;
var ТемаS:String;
--Процедуры и функции ------------- 
Func НомСимвГис(aChar:S):I;
 if aChar = '0' : return 0; fi;
 if Int(aChar)<>0 : return Int(aChar); fi;
 if aChar = 'А' or aChar = 'A': ^1;
   |aChar = 'Б': ^2;
   |aChar = 'В' or aChar = 'B': ^3;
   |aChar = 'Г': ^4;
   |aChar = 'Д': ^5;
   |aChar = 'Е' or aChar = 'E': ^6;
   |aChar = 'Ж': ^7;
   |aChar = 'З': ^8;
   |aChar = 'И': ^9;
   |aChar = 'К' or aChar = 'K': ^0;
   |aChar = 'Л': ^1;
   |aChar = 'М' or aChar = 'M':^2;
   |aChar = 'Н' or aChar = 'H': ^3;
   |aChar = 'О' or aChar = 'O': ^4;
   |aChar = 'П': ^5;
   |aChar = 'Р' or aChar = 'P': ^6;
   |aChar = 'С' or aChar = 'C': ^7;
   |aChar = 'Т' or aChar = 'T': ^8;
   |aChar = 'У' or aChar = 'Y': ^9;
   |aChar = 'Ф':^0;
   |aChar = 'Х' or aChar = 'X': ^1;
   |aChar = 'Ц': ^2;
   |aChar = 'Ч': ^3;
   |aChar = 'Ш': ^4;
   |aChar = 'Щ': ^5;
   |aChar = 'Э': ^6;
   |aChar = 'Ю': ^7;
   |aChar = 'Я': ^8;
   |aChar = 'D': ^9;
   |aChar = 'F': ^0;
   |aChar = 'G': ^1;
   |aChar = 'I': ^2;
   |aChar = 'Ъ' or aChar = 'J':^3;
   |aChar = 'L': ^4;
   |aChar = 'N': ^5;
   |aChar = 'Ы' or aChar = 'Q': ^6;
   |aChar = 'R':^7;
   |aChar = 'S':^8;
   |aChar = 'U':^9;
   |aChar = 'V':^0;
   |aChar = 'W':^1;
   |aChar = 'Ь' or aChar = 'Z': ^2;
fi;
end;

func Mod(x:i; y:I):I;
var di:I;
  di = Int(Trunc(x/y));
  return x - di * y;
end;

func Checksum(Код:S;Align:I):I;
var n,nn,i:I;
  nn = Length(Код);
  i = 0;
  for n = 1 .. nn do
     i = i + НомСимвГис(Substr(Код,n,1)) * (Mod(n - 1, 10)  + Align);
  od;
  return i;
end;

func str_repeat(s:S; count:I):S;
 var i:I;
 var res:S;
 res = '';
 for i = 1 .. count do
    res = res + s;
 od;
 return res;
end;

func PlaceStr(n :String; cnt :Integer; align :Integer; alchr:S) :String;
-- возвращет строку длины cnt выравнивая ее в зависимости от параметра align.
-- align = 0  - по центру,
-- align = -1 - по левому краю,
-- align = 1  - по правому краю.
var s :String;
var x :Integer;
  if alchr = '':
     alchr = ' ';
   |length(alchr)>1:
     alchr = Substr(alchr,1,1);
  fi;
  s = n;
  x = cnt-Length(s);
  if align=1  : s = str_repeat(alchr,x) + s;
   | align=-1 : s = s + str_repeat(alchr,x);
   | align=-0 :
     x = Int(x/2);
     s = str_repeat(alchr,x) + s + str_repeat(alchr,x);
     if length(s)>cnt : s = SubStr(s, 2, cnt); fi;
  fi;
  return(s);
end;  -- PlaceStr


Func СоздУИН:S;
  var k:I;
  var res:S;
  res = "Ъ"+ PlaceStr(ПРОДАВЕЦ.РПО_КОД_ГМП,6, 1, '0') + PlaceStr(НомерНач, 12, 1, '0');
  k = Checksum(res, 1);
  k = mod(k, 11);
  if k = 10:
     k = Checksum(НомерНач, 3);
     k = mod(k, 11);
     if k = 10: k = 0; fi;
  fi;
  res =  res + Str(k);
  return res;
end;

var УИН:S = if(ПРОДАВЕЦ=nil or НомерНач='':'',СоздУИН);

Proc ЗаписьполяSChk(ИмяПоля:S;Значение:S);
var tmp:S;
tmp=GetVariableS(ИмяПоля);
if Значение<>tmp then
   PutVariableS(ИмяПоля,Значение);
fi;
end;

proc ЗаписатьСчета;
  if КД<>'' and КОСГУ<>'' :СЧ_ОСН=  КД+'.'+Код_Сч_Осн+'.'+КОСГУ; fi;
  if КД<>'':СЧ_ДОХ=  КД+'.'+Код_Сч_Дох; fi;
  if substr(Код_Сч_Осн, 1, 1) = "1":
    if КД<>'' and Код_Сч_Нал<>'': СЧ_НАЛ = КД+'.'+Код_Сч_Нал; fi;
   else
    if ФКР<>'' and Код_Сч_Нал<>'': СЧ_НАЛ = ФКР+'.'+Код_Сч_Нал; fi;
 fi;
--  if ФКР<>'':СЧ_НАЛАВ=ФКР+'.'+Код_Сч_НалАв; fi;
--  if ФКР<>'':СЧ_НДСАВ=ФКР+'.'+Код_Сч_НДСАв; fi;

end;

proc РазобратьСчета;

  --ЗаписатьСчета;
  ЗаписьполяSChk("КД",Раб.Бюджет2005.ВЗЯТЬКОДСЧЕТА(СЧ_ОСН,"КД","БК",True));
  ЗаписьполяSChk("Код_Сч_Осн",Раб.Бюджет2005.ВЗЯТЬКОДСЧЕТА(СЧ_ОСН,"КД","СЧ6",False));
  ЗаписьполяSChk("КОСГУ",Раб.Бюджет2005.ВЗЯТЬКОДСЧЕТА(СЧ_ОСН,"КД","КОСГУ",False));

  ЗаписьполяSChk("Код_Сч_Нал",Раб.Бюджет2005.ВЗЯТЬКОДСЧЕТА(СЧ_Нал,"","СЧ9",False));
  ЗаписьполяSChk("Код_Сч_ДОХ",Раб.Бюджет2005.ВЗЯТЬКОДСЧЕТА(СЧ_ДОХ,"КД","СЧ9",False));
  if substr(Код_Сч_Осн, 1, 1) = "1":
     ЗаписьполяSChk("ФКР",Раб.Бюджет2005.ВЗЯТЬКОДСЧЕТА(СЧ_НАЛ,"ФКР","БК",False));
    else
     ЗаписьполяSChk("ФКР",Раб.Бюджет2005.ВЗЯТЬКОДСЧЕТА(СЧ_НалАв,"ФКР","БК",False));
  fi;
--  ЗаписьполяSChk("Код_Сч_НалАв",Раб.Бюджет2005.ВЗЯТЬКОДСЧЕТА(СЧ_НалАв,"ФКР","СЧ9",False));
--  ЗаписьполяSChk("Код_Сч_НДСАв",Раб.Бюджет2005.ВЗЯТЬКОДСЧЕТА(СЧ_НДСАв,"ФКР","СЧ9",False));
end;


func АнВУсл(Ан:S):S;
var УслАн:S;
 УслАн=Раб.Бюджет.НаборПризнToMask(Ан,'&');
-- УслАн=Раб.Бюджет2005.Объединить('ТЕМА.'+Тема_S,УслАн,'&');
 return УслАн;
end;

Proc Инициализация;
var Obj:Object;
var s,r,rr,c,cc,n,l,bgColor:i;
var Field:S;
 НакВид=True;
 ТемаВид=True;
 НДСВид=True;
 ClearVariable(BufField);
 ClearVariable(BufColorBg);
 ClearVariable(BufColorFo);
 for s=1..19 do
  if FindObject("S"+Str(s),Obj):
     rr=asInteger(Obj.RowsCount);
     cc=asInteger(Obj.ColsCount);
     for r=1 ..rr  do
      for c=1 ..cc  do
      if AsInteger(Obj.Cell(r,c,CellFieldType,''))>1 then
       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;
      fi;
      od;
     od;
  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 Оформление;
var s,c,r,cc,rr,n:i;
var Obj: Object;
var Extend:S;
var ROCells:S;
var cCont:S;
var РодПлата:L;
 РодПлата = BlankExist("детсад.ЦЕНТРУПРАВЛЕНИЯРОДИТЕЛЬСКОЙПЛАТОЙ");
 try
   Extend=PlanVAr("EXTEND");
 except
   Extend="";
 end;
 НакВид=Extend ="МИФИ";
 ТемаВид=Extend="МИФИ";
 НДСВид=Extend ="МИФИ";
 btnPrintView.Enabled=BlankExist("ПРОЧИЕ.НАЧДОХ_ПЕЧАТЬ") and ПервДок;-- and not PAcketMode;
 btnРасчет.Enabled=not Проводить;
 cbPacket.Enabled=not Проводить;
 if PacketMode:
    ROCells="#Доход#;#НДССум#;#НДСПроц#";
   else
    ROCells="";
 fi;
 for s=1..19 do
  if FindObject("S"+Str(s),Obj):
     rr=asInteger(Obj.RowsCount);
     cc=asInteger(Obj.ColsCount);
     for r=1 .. rr do
      for c=1 .. cc do
      if AsInteger(Obj.Cell(r,c,CellFieldType,''))>1 then
       cCont=asString(Obj.Cell(r,c,CellContents,""));
       if cCont="ВалКурс":
          Obj.Column(c,ColVisible,not Валюта="РУБ");
         |cCont="КурсФ":
          Obj.Column(c,ColVisible,not Валюта="РУБ");
          Obj.Column(c+1,ColVisible,not Валюта="РУБ");
       fi;
       n=SearchInArray(BufField,cCont,True);
       if not n=-1:
            if Проводить or Pos("#"+asString(Obj.Cell(r,c,CellContents,""))+"#",ROCells)>0 or (cCont="ВалКурс" and not КурсФ):
               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;
      fi;
      od;
     od;
  fi;
 od;
 for s=11..12 do
  if FindObject("S"+Str(s),Obj):
     Obj.Visible=(ПервДок or PacketMode) and not РодПлата;
  fi;
 od;
 S13.Visible=ПервДок or PacketMode or РодПлата;

 S14.Visible = ПервДок or РодПлата;
 S14.Row(3, RowVisible, not РодПлата);

 for s=16..19 do
  if FindObject("S"+Str(s),Obj):
     Obj.Visible = РодПлата;
  fi;
 od;
 if РодПлата:
    S7.Visible = False;
 fi;
--  S18.Row(1,RowVisible,BlankExist("детсад.ЦЕНТРУПРАВЛЕНИЯРОДИТЕЛЬСКОЙПЛАТОЙ")   );
--  S18.Row(2,RowVisible,BlankExist("детсад.ЦЕНТРУПРАВЛЕНИЯРОДИТЕЛЬСКОЙПЛАТОЙ"));
--  S18.Row(3,RowVisible,BlankExist("детсад.ЦЕНТРУПРАВЛЕНИЯРОДИТЕЛЬСКОЙПЛАТОЙ"));
--  S19.Row(1,RowVisible,BlankExist("детсад.ЦЕНТРУПРАВЛЕНИЯРОДИТЕЛЬСКОЙПЛАТОЙ"));
--  S19.Row(2,RowVisible,BlankExist("детсад.ЦЕНТРУПРАВЛЕНИЯРОДИТЕЛЬСКОЙПЛАТОЙ"));
--  S17.Row(1,RowVisible,BlankExist("детсад.ЦЕНТРУПРАВЛЕНИЯРОДИТЕЛЬСКОЙПЛАТОЙ"));
--  S16.Row(1,RowVisible,BlankExist("детсад.ЦЕНТРУПРАВЛЕНИЯРОДИТЕЛЬСКОЙПЛАТОЙ"));
--  S16.Row(2,RowVisible,BlankExist("детсад.ЦЕНТРУПРАВЛЕНИЯРОДИТЕЛЬСКОЙПЛАТОЙ"));

 S11.Row(2,RowVisible,PacketMode);
 S12.Row(1,RowVisible,PacketMode);
 S12.Column(11,ColVisible,not PacketMode);
 S12.Column(12,ColVisible,PacketMode);
 S12.Column(13,ColVisible,PacketMode);
 btnСчетФ.Enabled=(ПервДок and not PacketMode) or СчетФакт<>nil;
 btnУдСчФ.Enabled=СчетФакт<>nil;
 btnСчет.Enabled=(ПервДок and not PacketMode) or Счет_<>nil;
 btnУдСч.Enabled=Счет_<>nil;

end;


Func ПроверитьНастр:L;

 --Тема
 if ТемаВид and (ТемаS="") then Message('Выберите тему для начисления дохода',mtError); Template.Field='ТемаS'; ^False; fi;
 --Счет
 if (NAME_S(КД+'.'+Код_Сч_Осн+'.'+КОСГУ)=' ') then Message('Выберите счет для начисления дохода',mtError); Template.Field='КД'; ^False; fi;
 --Период
 if Дата_Н > Дата_К then Message('Начальная дата больше конечной',mtError); Template.Field='Дата_К'; ^False; fi;
 ^True;
 -- Счета корреспонденции!!!
end;

Func ДобСчета(Mode:L):L;
var OWA,n:I;
var key:Record;
var Res:L;
-- Не добавлять, если разные ВД (т.е. операция меняется вся)
if Substr(Код_Сч_Осн, 1, 1) <> Substr(Код_Сч_Дох, 1, 1):
  return True;
fi;
if Substr(Код_Сч_Осн, 1, 1) <> Substr(Код_Сч_Нал, 1, 1) and Код_Сч_Нал <> '':
  return True;
fi;


РАБ.КСА.Начать;
if КД<>'' then
 ФКР=SUBSTR(КД,1,3)+".0000.0000000.000";  -- Для КУ исправлять пока здесь!!!!!
 if КОСГУ<>'' then
  if Код_Сч_Осн<>'' then Раб.КСА.Добавить(КД+'.'+Код_Сч_Осн+'.'+КОСГУ); fi;
 fi;
 if Код_Сч_Дох<>'' then Раб.КСА.Добавить(КД+'.'+Код_Сч_Дох); fi;
 if substr(Код_Сч_Осн, 1, 1) = "1":
    if Код_Сч_Нал<>'' then Раб.КСА.Добавить(ФКР+'.'+Код_Сч_Нал); fi;
   else
    if Код_Сч_Нал<>'' then Раб.КСА.Добавить(КД+'.'+Код_Сч_Нал); fi;
 fi;
fi;
--if ФКР<>'' then
-- if Код_Сч_НалАв<>'' then Раб.КСА.Добавить(ФКР+'.'+Код_Сч_НалАв); fi;
-- if Код_Сч_НДСАв<>'' then Раб.КСА.Добавить(ФКР+'.'+Код_Сч_НДСАв); fi;
--fi;
if Mode then 
  if Раб.КСА.Закончить(Mode): Message("Добавление новых счетов закончено"); fi;
  Res=False;
 else
  Res=Раб.КСА.Закончить(Mode);
fi;
^Res;
end;

Func Проверить(Mode:I):L;
--1 - Начисление.
--2 - Закрытие.
var Iter:I;
var РасхСумм:N;
 if ДобСчета(False) then Refresh; fi;
 ЗаписатьСчета;
 if not ПроверитьНастр then ^False; fi;
 if Mode=1 then
    if not Match(Код_Сч_Дох,Mask_Код_Сч_Дох) then Message('Проверьте правильность заполнения счета дохода',mtError); Template.Field='Код_Сч_Дох'; ^False; fi;
    if not Match(Код_Сч_Осн,Mask_Код_Сч_Осн) then Message('Проверьте правильность заполнения кода счета финансового результата',mtError); Template.Field='Код_Сч_Осн'; ^False; fi;
    if not Match(Код_Сч_Нал,Mask_Код_Сч_Нал) and НДССум<>0 then Message('Проверьте правильность заполнения счета НДС',mtError); Template.Field='Код_Сч_НДС'; ^False; fi;
    if PacketMode:
       for Iter=1..Позиции do
         if not РАБ.БЮДЖЕТ.ПроверитьПризнакиОбязательные(КД+'.'+Код_Сч_Дох, КД+'.'+Код_Сч_Осн+'.'+КОСГУ,
                                                         Раб.Бюджет2005.Объединить(Аналит,ПОЗИЦИИ[Iter].Аналитика," "),"") then
            Template.Field='Аналитика_'; 
            Template.Frame=Iter;
            ^False; 
         fi;
         if НДССум<>0:
           if not РАБ.БЮДЖЕТ.ПроверитьПризнакиОбязательные(КД+'.'+Код_Сч_Осн+'.'+КОСГУ, Сч_Нал,
                                                           Раб.Бюджет2005.Объединить(Аналит,ПОЗИЦИИ[Iter].Аналитика," "),"") then
              Template.Field='Аналитика_';
              Template.Frame=Iter;
              ^False;
           fi;
         fi;
       od;
      else
       if not РАБ.БЮДЖЕТ.ПроверитьПризнакиОбязательные(КД+'.'+Код_Сч_Дох, КД+'.'+Код_Сч_Осн+'.'+КОСГУ,
                                                       Аналит,"") then Template.Field='Аналит_'; ^False; fi;
       if НДССум<>0:
         if not РАБ.БЮДЖЕТ.ПроверитьПризнакиОбязательные(КД+'.'+Код_Сч_Осн+'.'+КОСГУ, Сч_Нал,
                                                         Аналит,"") then Template.Field='Аналит_'; ^False; fi;
       fi;
    fi;
--    if ( and НДССум=0) then Message('Выполните рассчет',mtError); Template.Object='btnРасчет'; ^False; fi;
 fi;
 ^True;
end;

Proc РасчНДСАв;
if ДатаОпер=1.1.100 then
   НДСАв=0;
  else
   НДСАв=Turn('*.'+Substr(Код_Сч_НДСАв,3,6)+'.*/*.'+Substr(Код_Сч_НалАв,3,6)+'.* {'+АнВУсл(Аналит)+'}',Dat(31,12,Year(ДатаОпер)-1),ДатаОпер);
fi;
--if НДСАв>НДССум then НДСЗач=НДССум; else НДСЗач=НДСАв; fi;
if НДСПроц<=0 then НДСЗач=0; fi;
end;

Proc Расчет;
var Iter:I;
var Рез:N;
 Рез=Доход;
 if НДССум=0 and НДСПроц>0 then 
    НДССум=Доход*НДСПроц/(100+НДСПроц); 
 fi;
 --РасчНДСАв;
 Рез=Рез-НДССум;
 if Накладн=0 then Накладн=НакПроц*0.01*(Рез-УСОСумм); fi;
 Рез=Рез-Накладн;
 Итого=Рез;
 ДобСчета(True);
-- Message("Расчет завершен");
end;

Proc ПересчетСум (FieldName:S; Iter:I);
 if FieldName="Цена" or FieldName="Кол": ПОЗИЦИИ[Iter].Сумма=Round(ПОЗИЦИИ[Iter].Цена*ПОЗИЦИИ[Iter].Кол,2); FieldName="Сумма";
   |FieldName="Сумма":                   ПОЗИЦИИ[Iter].Цена=Round(ПОЗИЦИИ[Iter].Сумма/ПОЗИЦИИ[Iter].Кол,2);
 fi;
 if FieldName="СумНДС" or FieldName="НДС":
    if ПОЗИЦИИ[Iter].НДС>0:
       if FieldName="СумНДС" and Abs(Round(ПОЗИЦИИ[Iter].СумНДС-(ПОЗИЦИИ[Iter].Сумма+Round(ПОЗИЦИИ[Iter].Сумма*ПОЗИЦИИ[Iter].НДС/100,2)),2))<=0.02: Exit; fi;
       ПОЗИЦИИ[Iter].Сумма=ПОЗИЦИИ[Iter].СумНДС-Round(ПОЗИЦИИ[Iter].СумНДС*ПОЗИЦИИ[Iter].НДС/(100+ПОЗИЦИИ[Iter].НДС),2);
      else
       ПОЗИЦИИ[Iter].Сумма=ПОЗИЦИИ[Iter].СумНДС;
    fi;
    ПОЗИЦИИ[Iter].Цена=Round(ПОЗИЦИИ[Iter].Сумма/ПОЗИЦИИ[Iter].Кол,2);
 fi;
 if FieldName="Сумма":
    if ПОЗИЦИИ[Iter].НДС>0:
       ПОЗИЦИИ[Iter].СумНДС=ПОЗИЦИИ[Iter].Сумма+Round(ПОЗИЦИИ[Iter].Сумма*ПОЗИЦИИ[Iter].НДС/100,2);
      else
       ПОЗИЦИИ[Iter].СумНДС=ПОЗИЦИИ[Iter].Сумма;
    fi;
 fi;
-- if PacketMode:
    Доход=SumOfArray(ПОЗИЦИИ[].СумНДС);
    НДССум=SumOfArray(ПОЗИЦИИ[].СумНДС)-SumOfArray(ПОЗИЦИИ[].Сумма);
-- fi;
 Расчет;
end;

Proc НеПусто;
  if Позиции=0 and (ПервДок or PacketMode)
  then 
    InsertFrame(Позиции,1);
    Позиции[1].НДС=НДСПроц;
    Позиции[1].СумНДС=Доход;
    Позиции[1].Сумма=if(НДСПроц=-1,Позиции[1].СумНДС,Позиции[1].СумНДС*100/(100+Позиции[1].НДС));
  fi;
end;

Func ВыписатьСчет(Iter:I):Record;
var i1,ii:I;
var OWA,OA,OWAPos,N,N1,i,Ном:I;
var Res:Record;

  Res=nil;
  OWA=OpenWorkArea("СЧЕТ","НОМЕР");
  try
    BeginChanging(OWA,True);
    try
      N=InsertRecord(OWA);
      N=PutFieldD(OWA,N,"Дата",Сегодня);--      Дата=Сегодня;
      Ном=Раб.Обл.СледСУчетомГода("Счет","Номер","Дата");
      N=PutFieldI(OWA,N,"Номер",Ном);
      N=PutFieldR(OWA,N,"Рекв",Продавец);--Рекв=РАБ.Обл.ПервЗапись("Контрагент","","Наше");
      N=PutFieldR(OWA,N,"Банк",Счет);--      Банк=РАБ.Обл.ПервЗапись("БАНК_СЧЕТА","", "Умолчание and КонтрАгент="+RecordToString(Рекв));
      N=PutFieldS(OWA,N,"Валюта",Валюта_);--Валюта="РУБ";
      --Получатель
      if Iter=0:
         N=PutFieldR(OWA,N,"РеквП",ПОЛУЧАТЕЛЬ);
         N=PutFieldS(OWA,N,"Пост",ПОЛУЧАТЕЛЬ.ПолнИмя);
         if ПОЛУЧАТЕЛЬ.ФактАдрес<>'' then N=PutFieldS(OWA,N,"Адрес",ПОЛУЧАТЕЛЬ.ФактАдрес);
           |ПОЛУЧАТЕЛЬ.ПочтАдрес<>'' then N=PutFieldS(OWA,N,"Адрес",ПОЛУЧАТЕЛЬ.ПочтАдрес);
           |True                then N=PutFieldS(OWA,N,"Адрес",ПОЛУЧАТЕЛЬ.ЮрАдрес);
         fi;
        else
         N=PutFieldR(OWA,N,"РеквП",ПОЗИЦИИ[Iter].ПОЛУЧ);
         N=PutFieldS(OWA,N,"Пост",ПОЗИЦИИ[Iter].ПОЛУЧ.ПолнИмя);
         if ПОЗИЦИИ[Iter].ПОЛУЧ.ФактАдрес<>'' then N=PutFieldS(OWA,N,"Адрес",ПОЗИЦИИ[Iter].ПОЛУЧ.ФактАдрес);
           |ПОЗИЦИИ[Iter].ПОЛУЧ.ПочтАдрес<>'' then N=PutFieldS(OWA,N,"Адрес",ПОЗИЦИИ[Iter].ПОЛУЧ.ПочтАдрес);
           |True                then N=PutFieldS(OWA,N,"Адрес",ПОЗИЦИИ[Iter].ПОЛУЧ.ЮрАдрес);
         fi;

      fi;
      --Содержимое
      if Iter=0 then
         i1=1;
         ii=ПОЗИЦИИ;
        else
         i1=Iter;
         ii=Iter;
      fi;
      OA=OpenArray(OWA,N,"КОЛПОЗСЧ","НАИМ");
      try
        for i=i1 to ii do
          N1=InsertRecord(OA);
          N1=PutFieldS(OA,N1,"Наим",ПОЗИЦИИ[i].Текст);
          N1=PutFieldS(OA,N1,"ЕДИЗМ",ПОЗИЦИИ[i].ЕДИЗМ);
          N1=PutFieldN(OA,N1,"НДС",ПОЗИЦИИ[i].НДС);
          N1=PutFieldN(OA,N1,"КОЛИЧ",ПОЗИЦИИ[i].КОЛ);
          N1=PutFieldN(OA,N1,"ЦЕНА",ПОЗИЦИИ[i].ЦЕНА);
          N1=PutFieldN(OA,N1,"СУММА",ПОЗИЦИИ[i].СУММА);
          N1=PutFieldN(OA,N1,"СУММАНДС",GetFieldN(OA,N1,"СУММА")*GetFieldN(OA,N1,"НДС")/100);
          N1=PutFieldN(OA,N1,"ВСЕГО",ПОЗИЦИИ[i].СУМНДС);
        od;
      finally
        CloseWorkArea(OA);
      end;
      Res=GetRecordKey(OWA,N);
      EndChanging(OWA);
    except
      CancelChanging(OWA);
      Res=Nil;
    end;
  finally
    CloseWorkArea(OWA);
  end;
 ^Res;
end;

Func ВыписатьСчетФ(Iter:I):Record;
var i1,ii:I;
var OWA,OA,OWAPos,N,N1,i,Номер,n2:I;
var Res:Record;
     Res=nil;
     OWA=OpenWorkArea("СчетФакт","");
     try
       BeginChanging(OWA);
       try
         n=InsertRecord(OWA);
--         n=PutFieldL(OWA,n,'ПрочеркИНН',False);
--         n=PutFieldL(OWA,n,'ПрочеркОплаты',False);
         n=PutFieldL(OWA,n,'НРасчет',true);
         n=PutFieldS(OWA,n,'Валюта',Валюта_);
         n=PutFieldD(OWA,n,'Дата',Дата_К);
         Номер=Раб.Обл.СледСУчетомДаты("СчетФакт","Номер","Дата",Дата_К);
         n=PutFieldI(OWA,n,'Номер',Номер);
         n=PutFieldS(OWA,n,'НомерБум',СТР(Номер));
         n=PutFieldR(OWA,n,'Рекв',ПРОДАВЕЦ);
         if Продавец<>nil:
            n=PutFieldS(OWA,n,'ГрузОтпр',Продавец.ПолнИмя+if(Продавец.ПочтАдрес<>'',','+Продавец.ПочтАдрес,''));
         fi;
         n=PutFieldS(OWA,n,'Счет','205');
         --Покупатель
         if Iter=0:
            n=PutFieldR(OWA,n,'РеквП',ПОЛУЧАТЕЛЬ);
            if ПОЛУЧАТЕЛЬ<>nil:
               n=PutFieldS(OWA,n,'Адрес',GetCardFieldS("КонтрАгент",ПОЛУЧАТЕЛЬ,"ЮРадрес"));
               n=PutFieldS(OWA,n,'Телефон',GetCardFieldS("КонтрАгент",ПОЛУЧАТЕЛЬ,"телефон"));
               n=PutFieldS(OWA,n,'ИНН',GetCardFieldS("КонтрАгент",ПОЛУЧАТЕЛЬ,"ИНН"));
               n=PutFieldS(OWA,n,'КПП',GetCardFieldS("КонтрАгент",ПОЛУЧАТЕЛЬ,"КПП"));
               n=PutFieldS(OWA,n,'Покуп',GetCardFieldS("КонтрАгент",ПОЛУЧАТЕЛЬ,"ПолнИмя"));
               n=PutFieldS(OWA,n,'ГрузПол',ПОЛУЧАТЕЛЬ.ПолнИмя+if(ПОЛУЧАТЕЛЬ.ПочтАдрес<>'',','+ПОЛУЧАТЕЛЬ.ПочтАдрес,''));
            fi;
           else
            n=PutFieldR(OWA,n,'РеквП',ПОЗИЦИИ[Iter].ПОЛУЧ);
            if ПОЗИЦИИ[Iter].ПОЛУЧ<>nil:
               n=PutFieldS(OWA,n,'Адрес',GetCardFieldS("КонтрАгент",ПОЗИЦИИ[Iter].ПОЛУЧ,"ЮРадрес"));
               n=PutFieldS(OWA,n,'Телефон',GetCardFieldS("КонтрАгент",ПОЗИЦИИ[Iter].ПОЛУЧ,"телефон"));
               n=PutFieldS(OWA,n,'ИНН',GetCardFieldS("КонтрАгент",ПОЗИЦИИ[Iter].ПОЛУЧ,"ИНН"));
               n=PutFieldS(OWA,n,'КПП',GetCardFieldS("КонтрАгент",ПОЗИЦИИ[Iter].ПОЛУЧ,"КПП"));
               n=PutFieldS(OWA,n,'Покуп',GetCardFieldS("КонтрАгент",ПОЗИЦИИ[Iter].ПОЛУЧ,"ПолнИмя"));
               n=PutFieldS(OWA,n,'ГрузПол',ПОЗИЦИИ[Iter].ПОЛУЧ.ПолнИмя+if(ПОЗИЦИИ[Iter].ПОЛУЧ.ПочтАдрес<>'',','+ПОЗИЦИИ[Iter].ПОЛУЧ.ПочтАдрес,''));
            fi;

         fi;
         n=PutFieldL(OWA,n,'ДОПОЛНИТЕЛЬНО',true);
         --Аванс
         n=PutFieldL(OWA,n,'Аванс',Аванс);
         --Аналитика
         n=PutFieldS(OWA,n,'Допаналит',Аналит);
         --Позиции
         if Iter=0 then
            i1=1;
            ii=ПОЗИЦИИ;
           else
            i1=Iter;
            ii=Iter;
         fi;

         OA=OpenArray(OWA,n,'КОЛНАИМ','');
         try
           for i= i1 to ii do
             n2=InsertRecord(OA);
             n2=PutFieldS(OA,n2,'НАИМ',Позиции[i].Текст);
             n2=PutFieldS(OA,n2,'ЕдИзм',Позиции[i].ЕдИзм);
             n2=PutFieldN(OA,n2,'Цена',Позиции[i].Цена);
             n2=PutFieldN(OA,n2,'Колич',Позиции[i].Кол);
             n2=PutFieldN(OA,n2,'Сумма',Позиции[i].Сумма);
             n2=PutFieldN(OA,n2,'НДС',if(Позиции[i].НДС=-1,0,Позиции[i].НДС));
             n2=PutFieldN(OA,n2,'СуммаНДС',Позиции[i].СумНДС-Позиции[i].Сумма);
             n2=PutFieldN(OA,n2,'Всего',Позиции[i].СумНДС);
           od;
         finally
           CloseWorkArea(OA);
         end;

         Res=GetRecordKey(OWA,n);
         EndChanging(OWA);
       Except
         CancelChanging(OWA);
         Res=nil;
       end;
     finally
       CloseWorkArea(OWA);
     end;
    ^Res;
end;

Proc УдалитьСч(Iter:I);
var OWA:I;
var REC:rEcORD;
  rec=If(Iter=0,Счет_,Позиции[Iter].Сч);
  If Iter=0:
     Счет_=nil;
    else
     Позиции[Iter].Сч=nil;
  fi;
  EditorApply;
  OWA=OpenWorkArea('Счет','','Ukey='+RecordToString(rec));
  try
    BeginChanging(OWA);
    try
      if Records(OWA)>0 then DeleteRecord(OWA,1); fi;
      EndChanging(OWA);
    Except
      If Iter=0:
         Счет_=rec;
        else
         Позиции[Iter].Сч=rec;
      fi;
      CancelChanging(OWA);
    end;
  finally
    CloseWorkArea(OWA);
  end;
  EditorApply;
  Оформление;
end;

Proc УдалитьСчФ(Iter:I);
var OWA:I;
var REC:rEcORD;
   rec=If(Iter=0,СчетФакт,Позиции[Iter].СчФ);
   If Iter=0:
      СчетФакт=nil;
     else
      Позиции[Iter].СчФ=nil;
   fi;
   EditorApply;
   OWA=OpenWorkArea('СчетФакт','','Ukey='+RecordToString(rec));
   try
     BeginChanging(OWA);
     try
       if Records(OWA)>0 then DeleteRecord(OWA,1); fi;
       EndChanging(OWA);
     Except
       If Iter=0:
          СчетФакт=rec;
         else
          Позиции[Iter].СчФ=rec;
       fi;
       CancelChanging(OWA);
     end;
   finally
     CloseWorkArea(OWA);
   end;
   EditorApply;
   Оформление;
end;

Proc СохрПолучПоз(rec:Record;Iter:I);
  var was:Record;
  var tmp,Mask,m1,:s;
  var ТЕМАФ:S;
  var ПризК:S;
  if rec<>nil then
     was=Позиции[Iter].Получ;
     Позиции[Iter].Получ=Rec;
     if pos(" К.", ПОЗИЦИИ[Iter].Аналитика)>0 or Match(ПОЗИЦИИ[Iter].Аналитика,"К.*"):
        if was=nil then exit; fi;
        if Pos(CardFileRecSign("КОНТРАГЕНТ","ПРИЗНАК","К",was),ПОЗИЦИИ[Iter].Аналитика)=0 then exit; fi;
     fi;
     ТЕМАФ=if(ТемаВид,"ТЕМА.*","");
     tmp=РАБ.Бюджет2005.ПризнВСправ(Аналит," ",".*");
     tmp=Раб.Бюджет2005.ЗаменитьРазделительВНабореСлов(tmp," ","|");
     ТЕМАФ=Раб.Бюджет2005.Объединить(ТЕМАФ,tmp,"|");
     if КД='' or Код_Сч_Осн='' or КОСГУ='' then exit; fi;
     Mask=Раб.Бюджет2005.СписокСправ(КД+'.'+Код_Сч_Осн+'.'+КОСГУ,0,ТЕМАФ);
     m1=Раб.Бюджет2005.СписокСправ(КД+'.'+Код_Сч_Дох,0,ТЕМАФ);
     Mask=Раб.Бюджет2005.Объединить(Mask,m1,"|");
     if Раб.Бюджет2005.MatchMask(CardFileRecSign("КОНТРАГЕНТ","ПРИЗНАК","К",rec),Mask):
        ПОЗИЦИИ[Iter].Аналитика=Раб.Бюджет2005.ДобавитьСловоВНаборСЗаменой(ПОЗИЦИИ[Iter].Аналитика," ",CardFileRecSign("КОНТРАГЕНТ","ПРИЗНАК","К",rec),"К.*"," ");
     fi;
  fi;
end;

--Процедуры и функции -------------                              
--
--
--Обработчики событий полей шаблона-----

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

Proc btnРасчет_OnClick(Sender: String);
 if ПроверитьНастр=False: Exit; fi;
 Расчет;
end;



Func ТЕМАВнСчет_OnEnter(FieldName: String; Iter: Integer): logical;
var tmp:S;
var tmpN:N;
 tmp=ВыборПризнака("ТЕМА.*");
 if tmp="": ^False; fi;
 Аналит=Раб.Бюджет.ДобавитьПризнак(Аналит,tmp);
 ТЕМА=SignToRecord(tmp);
 if ТЕМА<>nil then tmpN=GetCardFieldN("МИФИ_ВНУТР_СЧЕТ",Тема,"НАКПРОЦ"); else tmpN=-1; fi;
 if tmpN>=0 and tmpN<>НакПроц then НакПроц=tmpN; fi;
 if ExtractWord(3,tmp,'.')='7' then НДСПроц=if(НДСПроц=0,18,НДСПроц); else НДСПроц=0; fi;
 УСОСумм=Saldo('*.'+Substr(GetVariableS('ПРОЧИЕ.ЗАКРФР.Def_Код_Сч_Расх'),3,6)+'.* {'+АнВУсл(Аналит)+'&'+УСОПризн+'}',ДатаОпер);
 Накладн=0;
 Расчет;
 Return False;
end;


Func ОснСчет_OnEnter(FieldName: String; Iter: Integer): logical;
var bckp,tmp,mask,mode,val:S;
bckp=GetVariableS(Fieldname);
PutVariableS(FieldName,'');
mask=if(КД="","*",КД)+"."+if(Код_Сч_Осн="","*",Код_Сч_Осн)+'.'+if(КОСГУ="","*",КОСГУ);

mode="КД";
if FieldName="КД" then
     Val="КБК";
     Раб.КБК.Список_КБК_РазрДобав=True;
     Раб.КБК.Список_КБК_КОСГУ=КОСГУ;
     Раб.КБК.Список_КБК_КодСч=Код_Сч_Осн;
     Раб.КБК.Список_КБК_РазрКОСГУ=(КОСГУ="");
  |Fieldname="КОСГУ" then 
     Val="КОСГУ";
     mask=mask+"&("+Раб.Бюджет2005.МаскаДоходСч+")";
       Раб.КБК.Список_КОСГУ_РазрДобав=True;
     Раб.КБК.Список_КОСГУ_БК=КД;
     Раб.КБК.Список_КОСГУ_КодСч=Код_Сч_Осн;
     Раб.КБК.Список_КОСГУ_РазрБК=(КД="");
  |Fieldname="Код_Сч_Осн" then
     mask=mask+"&("+Mask_Код_Сч_Осн+")";
     Val="СЧ6";
  fi;

  tmp=Раб.КБК.Список(mask,mode,Val);
  if tmp='' then 
     PutVariableS(FieldName,bckp); 
    else 
     PutVariableS(FieldName,tmp); 
     ДобСчета(True); 
  fi;
  Return  False;
end;


Func СчКор_OnEnter(FieldName: String; Iter: Integer): logical;
var bckp,tmp,mask,mode,val:S;
  mask=GetVariableS('Mask_'+FieldName);
  Val='СЧ9 И';
  if FieldName="Код_Сч_Нал" and substr(Код_Сч_Осн,1,1) = '1':
     mode = "ФКР";
   else
     mode = "КД";
  fi;
  tmp=Раб.КБК.Список(mask,mode,Val);
  if tmp<>'' then PutVariableS(FieldName,tmp); fi;
  ДобСчета(True);
  Return False;
end;

Func Аналит_onEnter (Field:S; Iter:I):L;
var tmp, Mask, MaskA:s;
var ТЕМАФ:S;
 ТЕМАФ=if(ТемаВид,"ТЕМА.*","");
 if Field<>"Аналит_" then 
    tmp=РАБ.Бюджет2005.ПризнВСправ(Аналит," ",".*");
    tmp=Раб.Бюджет2005.ЗаменитьРазделительВНабореСлов(tmp," ","|");
    ТЕМАФ=Раб.Бюджет2005.Объединить(ТЕМАФ,tmp,"|");
 fi;
-- if ПроверитьКБК (Iter)=False: ^False; fi;
 if КД='' or Код_Сч_Осн='' or КОСГУ='' then Message('Выберите счет дохода', mtError); ^False; fi;

 if Name_S(КД+'.'+Код_Сч_Осн+'.'+КОСГУ) <> '':
    Mask = Раб.Бюджет2005.СписокСправ(КД+'.'+Код_Сч_Осн+'.'+КОСГУ,0,ТЕМАФ);
   else
    Mask = "";
 fi;
 MaskA = "";
 if Name_S(КД+'.'+Код_Сч_Дох) <> ' ':
    MaskA = MaskA + "|" + КД+'.'+Код_Сч_Дох;
 fi;
 if Name_S(КД+'.'+Код_Сч_Нал) <> ' ' and Код_Сч_Нал <> '':
    MaskA = MaskA + "|" + КД+'.'+Код_Сч_Нал;
 fi;
-- if Name_S(ФКР+'.'+Код_Сч_НалАв) <> ' ':
--    MaskA = MaskA + "|" + ФКР+'.'+Код_Сч_НалАв;
-- fi;
-- if Name_S(ФКР+'.'+Код_Сч_НДСАв) <> ' ':
--    MaskA = MaskA + "|" + ФКР+'.'+Код_Сч_НДСАв;
-- fi;
 MaskA = Substr(MaskA, 2, 255);
 Mask = Раб.Бюджет2005.Объединить(Mask, Раб.Бюджет2005.СписокСправ(MaskA,0,ТЕМАФ), "|");

 if Mask="": Message("Аналитические признаки не требуются"); ^False; fi;
 tmp=ВыборПризнака(Mask);
 if tmp="": ^False; fi;
 if Field="Аналит_" then
    Аналит=Раб.Бюджет.ДобавитьПризнак(Аналит,tmp);
   else
    Позиции[Iter].Аналитика=Раб.Бюджет.ДобавитьПризнак(Позиции[Iter].Аналитика,tmp);
 fi;
 ^false;
end;

Proc Аналит_OnExit(FieldName: String; Iter: Integer);
 Аналит=Раб.Бюджет2005.УдалитьСловоИзНабора_Диалог2(Аналит," ","Name_A");
end;

Proc Аналитика_OnExit(FieldName: String; Iter: Integer);
 Позиции[Iter].Аналитика=Раб.Бюджет2005.УдалитьСловоИзНабора_Диалог2(Позиции[Iter].Аналитика," ","Name_A");
end;

Proc Button2_OnClick(Sender: String);
EditorApply;
end;


Proc Button1_OnClick(Sender: String);
EditorApply;
Close;
end;

Func НДСПроц_OnEnter(FieldName: String; Iter: Integer): logical;
var i:I;
  ClearVariable(Buf);
  buf[1]=' 0%';
  buf[2]='10%';
  buf[3]='18%';
  i=Alternate('Выберите ставку НДС',Buf);
  if i=0 then
     ^False;
    else
     НДСПроц=Int(Substr(Buf[i],1,2));
  fi;
  НДССум=0; Накладн=0;
  --РасчНДСАв;
  Расчет;
  Return False;
end;


--
--Обработчики событий шаблона -----
Proc OnOpen(Create: Logical);
 FlagInit=True;
end;

Proc AfterOpen(Destroy: Logical);
 Инициализация;
 Оформление;
 FlagInit=False;
end;

Proc OnRead;
 var i: I;
 if НоваяЗапись: 
    Проводить=False;
    if Валюта="": Валюта=БазоваяВалюта; fi;
    СчетФакт=nil;
    Счет_=nil;
    if not Match(Код_Сч_Дох,Mask_Код_Сч_Дох) then Код_Сч_Дох=Def_Код_Сч_Дох; fi;
    if not Match(Код_Сч_Осн,Mask_Код_Сч_Осн) then Код_Сч_Осн=Def_Код_Сч_Осн; fi;
    if not Match(Код_Сч_Нал,Mask_Код_Сч_Нал) then Код_Сч_Нал=Def_Код_Сч_Нал; fi;
--    if not Match(Код_Сч_НалАв,Mask_Код_Сч_НалАв) then Код_Сч_НалАв=Def_Код_Сч_НалАв; fi;
--    if not Match(Код_Сч_НДСАв,Mask_Код_Сч_НДСАв) then Код_Сч_НДСАв=Def_Код_Сч_НДСАв; fi;
   else
    РазобратьСчета;
 fi;
 if Валюта="": Валюта=Базоваявалюта; fi;
 if ДатаОпер=1.1.100 then ДатаОпер=Today; fi;
 НеПусто;
 if not FlagInit: Оформление; fi;
 for i=1 .. ПОЗИЦИИ do
   ПОЗИЦИИ[i].ИтоговаяСумма = СумИт[i];
 od;
   EditorApply;
end;


Proc НакПроц_OnExit(FieldName: String; Iter: Integer);
Накладн=0;
end;


Proc НДСПроц_OnExit(FieldName: String; Iter: Integer);
--  НДСПроц=-1;
  НДСПроц=0;
  НДССум=0;
  --РасчНДСАв;
end;


Func УСОСумм_OnLookup(Sect: String; Row: Integer; Col: Integer; Cur: String): String;
var t1:N;
  t1=Saldo('*.'+Substr(GetVariableS('МИФИ.ЗАКРФР.Def_Код_Сч_Расх'),3,6)+'.* {'+АнВУсл(Аналит)+'&ПР_УСЛУГИ.УСО}',ДатаОпер);
  Report('УСО',Dat(31,12,Year(ДатаОпер)-1),ДатаОпер,'*.'+Substr(GetVariableS('МИФИ.ЗАКРФР.Def_Код_Сч_Расх'),3,6)+'.*',АнВУсл(Аналит)+'&ПР_УСЛУГИ.УСО');
  Return Str(t1,2) ;
end;



Proc УСОСумм_OnExit(FieldName: String; Iter: Integer);
  Накладн=0;
end;


Func НДСАв_OnLookup(Sect: String; Row: Integer; Col: Integer; Cur: String): String;
--   НДСАв=Turn('*.'+Substr(Код_Сч_НДСАв,3,6)+'.*/*.'+Substr(Код_Сч_НалАв,3,6)+'.* {ТЕМА.'+Тема_S+'}',Dat(31,12,Year(ДатаОпер)-1),ДатаОпер);
  Report('НДС с аванса',Dat(31,12,Year(ДатаОпер)-1),ДатаОпер,'*.'+Substr(Код_Сч_НДСАв,3,6)+'.*/*.'+Substr(Код_Сч_НалАв,3,6)+'.*',АнВУсл(Аналит));
  Return cur;
end;


Func Аванс_OnEnter(FieldName: String; Iter: Integer): logical;
  Аванс= not Аванс;
  Return False;
end;


Func КОНТРПолнИмя_OnEnter(FieldName: String; Iter: Integer): logical;
var Rec,oldrec:Record;
var rname,oldk,newk:S;
 rname = ExtractWord(1,FieldName,'.');
 Rec=GetVariableR(rname);
 oldrec=rec;
 Rec=OpenCardFile("Контрагент",if(Lo(rname)="продавец","--Наше",""),Rec,crdRecordOnly);
 if Rec=nil: ^False; fi;
 PutVariableR(rname,Rec);
 if Lo(rname)="получатель":
    --Если можем - обновляем аналитику.
    oldk=Раб.Бюджет2005.ВзятьСловоИзНабораПоМаске(Аналит," ","К.*","");
    if oldk="" or SigntoRecord(oldk)=oldrec:
       newk = "К." + GetCardFieldS("Контрагент", Rec, "ПРИЗНАК");
       Аналит=Раб.Бюджет2005.ДобавитьСловоВНаборСЗаменой(Аналит," ", newk, "К.*", "");
    fi;
 fi;
-- ФИОРук=GetCardFieldS("Контрагент",Rec,"ФИОРук");
 Return False;
end;

Func ПолучКорИмя_OnEnter(FieldName: String; Iter: Integer): logical;
var Rec:Record;
 Rec=ПОЗИЦИИ[Iter].Получ;
 Rec=OpenCardFile("Контрагент","",Rec,crdRecordOnly);
 СохрПолучПоз(rec,Iter);
-- if Rec=nil: ^False; fi;
-- ПОЗИЦИИ[Iter].Получ=Rec;
 Return False;
end;


Func НДС_OnEnter(FieldName: String; Iter: Integer): logical;
var i:I;
  ClearVariable(Buf);
  buf[1]=' 0%';
  buf[2]='10%';
  buf[3]='18%';
  i=Alternate('Выберите ставку НДС',Buf);
  if i=0 then
     ^False;
    else
     Позиции[Iter].НДС=Int(Substr(Buf[i],1,2));
  fi;
  ПересчетСум(FieldName,Iter);
  Return False ;
end;


Func A_OnEnter(FieldName: String; Iter: Integer): logical;
  InsertFrame(Позиции, Iter+1);
  Позиции[Iter+1].НДС=Позиции[Iter].НДС;
  if FieldName="AA" then
     --Копируем строку
     Позиции[Iter+1].Текст=Позиции[Iter].Текст;
     Позиции[Iter+1].ЕдИзм=Позиции[Iter].ЕдИзм;
     Позиции[Iter+1].Цена =Позиции[Iter].Цена;
     Позиции[Iter+1].Кол  =Позиции[Iter].Кол;
     Позиции[Iter+1].Сумма=Позиции[Iter].Сумма;
     Позиции[Iter+1].СумНДС=Позиции[Iter].СумНДС;
     ПересчетСум("Сумма",Iter+1);
  fi;
  Return False ;
end;


Func D_OnEnter(FieldName: String; Iter: Integer): logical;
  DeleteFrame(Позиции,Iter);
  ПересчетСум("",0);
  НеПусто;
  Return  False;
end;


Proc cbИнфо_OnChange(Sender: String);
var i:I;
var r:record;
  Оформление;
  --Наши реквизиты автофункция
  if Продавец=nil then Продавец=РАБ.БЮДЖЕТ2005.НашРекв; fi;
  --получатель по аналитике
  if Получатель=nil then
    if Pos("К.",Аналит)>0 then
       for i = 1 to WordsCount(Аналит," ") do
           if Pos("К.",ExtractWord(i,Аналит," "))>0 then
              r=SignToRecord(ExtractWord(i,Аналит," "));
              if r<>nil then Получатель=r; fi;
           fi;
       od;
    fi;
  fi;
  Непусто;
end;


Proc btnСчетФ_OnClick(Sender: String);
var OWA,OA,n,n2,i,Номер:I;
  if СчетФакт =nil then
     СчетФакт = ВыписатьСчетФ(0);
     EditorApply;
     Оформление;

  fi;
  if СчетФакт<>nil then
     OpenBlank("Документы.Счета.СФ",False,СчетФакт);
  fi;
end;


Proc btnУдСЧФ_OnClick(Sender: String);
  УдалитьСчФ(0);
end;


Func СЧЕТ_Имя_OnEnter(FieldName: String; Iter: Integer): logical;
var rec:Record;
 Rec=СЧЕТ;
 Rec=OpenCardFile("БАНК_СЧЕТА",if(ExtractWord(1,FieldName,'.')="Продавец","--Наше",""),Rec,crdRecordOnly);
 if Rec=nil: ^False; fi;
 СЧЕТ=Rec;
 Return False;
end;


Proc СЧЕТ_Имя_OnExit(FieldName: String; Iter: Integer);
  Счет=nil;
end;


Proc btnСчет_OnClick(Sender: String);
var OWA:I;
var REC:rEcORD;
if Счет_=nil then
   Счет_=ВыписатьСчет(0);
   EditorApply;
   Оформление;
fi;
OpenBlank("Документы.Счета.СчетН",False,Счет_);
end;


Proc btnУдСЧ_OnClick(Sender: String);
  УдалитьСч(0);
end;


Proc Доход_OnExit(FieldName: String; Iter: Integer);
  Расчет;
end;


Proc НДССум_OnExit(FieldName: String; Iter: Integer);
  Итого=Доход-НДССум;
end;


Func OnVerify: Logical;
  ЗаписатьСчета;
  ДобСчета (False);
  Return True;
end;


Proc btnPrintView_OnClick(Sender: String);
  OpenBlank("ПРОЧИЕ.НАЧДОХ_ПЕЧАТЬ",False,current);
end;


Proc cbPacket_OnChange(Sender: String);
  Оформление;
  НеПусто;
end;

Func Сч_OnEnter(FieldName: String; Iter: Integer): logical;
  if Позиции[Iter].Сч=nil then
     Позиции[Iter].Сч=ВыписатьСчет(Iter);
     EditorApply;
     Оформление;
  fi;
  if Позиции[Iter].Сч<>nil then
     OpenBlank("Документы.Счета.СчетН",False,Позиции[Iter].Сч);
  fi;
  Return False ;
end;


Func СчУд_OnEnter(FieldName: String; Iter: Integer): logical;
  УдалитьСч(Iter);
  Return  False;
end;


Func СчФ_OnEnter(FieldName: String; Iter: Integer): logical;
var OWA,OA,n,n2,i,Номер:I;
  if Позиции[Iter].СчФ=nil then
     Позиции[Iter].СчФ = ВыписатьСчетФ(Iter);
     EditorApply;
     Оформление;
  fi;
  if Позиции[Iter].СчФ<>nil then
     OpenBlank("Документы.Счета.СФ",False,Позиции[Iter].СчФ);
  fi;

  Return False ;
end;


Func СчФУд_OnEnter(FieldName: String; Iter: Integer): logical;
  УдалитьСчФ(Iter);
  Return False ;
end;


Proc Сум_OnExit(FieldName: String; Iter: Integer);
 ПересчетСум(FieldName,Iter);
end;


Func Валюта_OnEnter(FieldName: String; Iter: Integer): logical;
  Валюта=Раб.Бух.ВыбратьВалюту(Валюта);
  if Валюта="": Валюта=БазоваяВалюта; fi;
  Оформление;
  Return False;
end;


Func fixCur_OnEnter(FieldName: String; Iter: Integer): logical;
  КурсФ=not КурсФ;
  Оформление;
  Return False ;
end;


Func ВалКурс_OnLookup(Sect: String; Row: Integer; Col: Integer; Cur: String): String;
  var curdate:D;
  var tgtcur:N;
  tgtcur=0;
  curdate=ДатаОпер;
  while tgtcur=0 and curdate<>1.1.100 do
    curdate=Calendar(curdate);
    tgtcur=Com_Var("Курс."+Валюта,curdate);
  od;
  Return Str(tgtcur,4);
end;

Func ПервДок_OnEnter(FieldName: String; Iter: Integer): logical;

        var a: Record;
        a = current;
        ExecuteProc("ПРОЧИЕ.НАЧДОХ_ПЕЧАТЬ_ПОЗ.РасчПозПечать",Iter,a);
        OpenBlank("ПРОЧИЕ.НАЧДОХ_ПЕЧАТЬ_ПОЗ",False);
        Return False ;
end;

Proc АнРебПоз(rec:Record;Iter:I);
  var tmp,Mask,m1,m2,m3,m4:s;

  if rec<>nil then
     Mask=Раб.Бюджет2005.СписокСправ(КД+'.'+Код_Сч_Осн+'.'+КОСГУ,0,"");
     m1=Раб.Бюджет2005.СписокСправ(КД+'.'+Код_Сч_Дох,0,"");
     Mask=Раб.Бюджет2005.Объединить(Mask,m1,"|");
     if Раб.Бюджет2005.MatchMask(CardFileRecSign("РПО_ДЕТСАД_ДЕТИ","НОМЕР","ДЕТИ",rec),Mask):
        ПОЗИЦИИ[Iter].Аналитика=Раб.Бюджет2005.ДобавитьСловоВНаборСЗаменой(ПОЗИЦИИ[Iter].Аналитика," ",CardFileRecSign("РПО_ДЕТСАД_ДЕТИ","НОМЕР","ДЕТИ",rec),"ДЕТИ.*"," ");
     fi;
  fi;
end;

Func РЕБЕНОК_ФИО_OnEnter(FieldName: String; Iter: Integer): logical;
var Rec:Record;
 Rec=ПОЗИЦИИ[Iter].РЕБЕНОК;
 Rec=OpenCardFile("РПО_Детсад_ДЕТИ","",Rec,crdRecordOnly);
 if Rec=nil: ^False; fi;
 ПОЗИЦИИ[Iter].РЕБЕНОК=Rec;
 АнРебПоз(Rec,Iter);
 СохрПолучПоз(ПОЗИЦИИ[Iter].РЕБЕНОК.РОДИТЕЛЬ,Iter);
 --ПОЗИЦИИ[ITER].ПОЛУЧ=ПОЗИЦИИ[Iter].РЕБЕНОК.РОДИТЕЛЬ;
 Return False;

end;


Proc РасчНДСПоз(Iter:I);
  ПОЗИЦИИ[Iter].СумНДС=Round(ПОЗИЦИИ[Iter].Сумма*(100+ПОЗИЦИИ[Iter].НДС)/(100),2);
  Расчет;
end;



Proc РасчПоз(Iter:I);
  ПОЗИЦИИ[Iter].Сумма=Round(ПОЗИЦИИ[Iter].СумНорм*(ПОЗИЦИИ[Iter].Дней-ПОЗИЦИИ[Iter].Невых)/ПОЗИЦИИ[Iter].Дней,2);
  РасчНДСПоз(Iter);
end;


Proc РасчетЖир;
var OWA:I;
var i,p,n:I;
var li: I;
var ДРебК:D; 
var w:  I; 
var Л:  Record;                           -- SetFilter
--var Nomin:N:
  ClearVariable(Позиции);
  OWA=OpenWorkArea("РПО_ДЕТСАД_ДЕТИ","","1=0");
  try
   for li=1..СТАВКИ do
        SetFilter(OWA,"ДАТА_Н<"+DateToString(ДАТА_К)+" AND (ДАТА_К>="+DateToString(ДАТА_Н)+ " OR ДАТА_К=1.1.100) AND  ГРУПП = '"+СТАВКИ[li].ГРУПП.КОД+"'");
        -- ShowProgress(Records(OWA),"Расчет начислений");

                    for i=1 .. Records(OWA) do
                       -- ProgressPos(i);
                        n=SearchInArray(Ставки[].Группа,GetFieldS(OWA,i,"Групп"));
                        if n=-1:
                                n=SearchInArray(Ставки[].Группа,"");
                        fi;
                        if n<>-1:
                                p=InsertFrame(Позиции,1);
                                ПОЗИЦИИ[p].РЕБЕНОК=GetRecordKey(OWA,i);
                                ДРебК=getFieldD(OWA,i,"ДАТА_К");
                                if ДРебК=1.1.100 or ДРебК>=Дата_К2: ДРебК=Дата_К2-1; fi;

                                        СохрПолучПоз(GetFieldR(OWA,i,"РОДИТЕЛЬ"),p);
                                        АнРебПоз(ПОЗИЦИИ[p].РЕБЕНОК,p);
                                        СумПре[p]=Saldo("*.205.* {"+CardFileRecSign("РПО_ДЕТСАД_ДЕТИ","НОМЕР","ДЕТИ",ПОЗИЦИИ[p].РЕБЕНОК)+"}",ДатаОпер);

                                       Л = GetFieldR(OWA,i,"ЛьготаПериод",Дата_Н);
                                       ПОЗИЦИИ[p].СумНорм=Ставки[li].ГРУПП.ставка*GetfieldN(OWA,i,"Льготассылочная.суммапроценты")/100;
                                       ПОЗИЦИИ[p].Дней=Дней_;
                                       ПОЗИЦИИ[p].ДнейА=Int(ExecuteFuncN("F.SAL.НОРМА_СТАНДАРТ",Дата_К,ДРебК,"Д"));
                                       РасчПоз(p);
                          FI;
                     od;
  od;
  finally
    CloseWorkArea(OWA);
    CloseProgress;
  end;
end;



Func МассПечать_OnEnter(FieldName: String; Iter: Integer): logical;
var i:I;
   var a: Record;
    a = current;
  for i=1..позиции do
     if СумИт[i]>0 then
        ExecuteProc("ПРОЧИЕ.НАЧДОХ_ПЕЧАТЬ_ПОЗ.РасчПозПечать",i,a);
        OpenBlank("ПРОЧИЕ.НАЧДОХ_ПЕЧАТЬ_ПОЗ",False);
        Раб.Настр_Печать.Prn("ПРОЧИЕ.НАЧДОХ_ПЕЧАТЬ_ПОЗ","","ТББ.НАЧДОХ_ПЕЧАТЬ_ПОЗ.000","",1);
        Close("ПРОЧИЕ.НАЧДОХ_ПЕЧАТЬ_ПОЗ");
     fi;
  od;
  Return False ;
end;


Func РасчЖир_OnEnter(FieldName: String; Iter: Integer): logical;
  РасчетЖир;
  Return  False;
end;

Proc ExportCharge;
 var i:I;
  Раб.XML.ДобАттр("SupplierBillID", УИН);
  Раб.XML.ДобАттр("Version", "1.15");
--  Раб.XML.ДобАттр("xmlns", "http://roskazna.ru/xsd/Charge");
  Раб.XML.ОткрытьТэгBuf("Charge",False);
  Раб.XML.ЗакрытьNamespace;
  Раб.XML.СоздатьТэг("BillDate",РАБ.Формат.ДатаСтр(ДатаНач,14),False);
  Раб.XML.ОткрытьТэгBuf("SupplierOrgInfo",false);
    Раб.XML.СоздатьТэг("Name",ПРОДАВЕЦ.ПОЛНИМЯ+ПРОДАВЕЦ.РПО_ПолнИмя2,False);
    Раб.XML.СоздатьТэг("INN",ПРОДАВЕЦ.ИНН,False);
    Раб.XML.СоздатьТэг("KPP",ПРОДАВЕЦ.КПП,False);
    --Раб.XML.СоздатьТэг("OGRN",ПРОДАВЕЦ.КПП,False);
    Раб.XML.ДобАттр("kind", "1");
    Раб.XML.ОткрытьТэгBuf("Account",false);
      Раб.XML.СоздатьТэг("Account",СЧЕТ.РСчет,False);
      Раб.XML.ОткрытьТэгBuf("Bank",false);
        if СЧЕТ.Банк<>'':
           Раб.XML.СоздатьТэг("Name",СЧЕТ.Банк,False);
        fi;
        if СЧЕТ.КСчет<>'':
           Раб.XML.СоздатьТэг("CorrespondentBankAccount",СЧЕТ.КСчет,False);
        fi;
        Раб.XML.СоздатьТэг("BIK",СЧЕТ.БИК,False);
      Раб.XML.ЗакрытьТэг;
    Раб.XML.ЗакрытьТэг;
  Раб.XML.ЗакрытьТэг;
  Раб.XML.ОткрытьТэгBuf("BillFor",false);
  for i = 1.. ПОЗИЦИИ do
    Раб.XML.ВРез(ПОЗИЦИИ[i].Текст);
  od;
  Раб.XML.ЗакрытьТэг;
  Раб.XML.СоздатьТэг("TotalAmount",Str(ДОХОД*100),False);
  Раб.XML.СоздатьТэг("ChangeStatus","1",False);
  Раб.XML.ОткрытьТэгBuf("TreasureBranch",false);
    Раб.XML.ВРез(СЧЕТ.РПО_ОФК_Имя);
    Раб.XML.ВРез(СЧЕТ.РПО_ОФК_Имя2);
  Раб.XML.ЗакрытьТэг;
  Раб.XML.СоздатьТэг("KBK",Раб.Бюджет2005.ЗаменитьРазделительВНабореСлов(КД,'.','')+КОСГУ,False);
  Раб.XML.СоздатьТэг("OKATO",ПРОДАВЕЦ.ОКТМО,False);
  Раб.XML.ОткрытьТэгBuf("BudgetIndex",false);
    Раб.XML.СоздатьТэг("Status","08",False);
    Раб.XML.СоздатьТэг("PaymentType","0",False);
    Раб.XML.СоздатьТэг("Purpose","0",False);
    Раб.XML.СоздатьТэг("TaxPeriod","0",False);
    Раб.XML.СоздатьТэг("TaxDocNumber","0",False);
    Раб.XML.СоздатьТэг("TaxDocDate","0",False);

  Раб.XML.ЗакрытьТэг;
  if ПОЛУЧАТЕЛЬ.Тип = 0:
     Раб.XML.СоздатьТэг("UnifiedPayerIdentifier","2"+ПОЛУЧАТЕЛЬ.ИНН+ПОЛУЧАТЕЛЬ.КПП,False);
    else
     Раб.XML.СоздатьТэг("UnifiedPayerIdentifier","1"+ПОЛУЧАТЕЛЬ.РПО_СНИЛС,False);
  fi;
  Раб.XML.СоздатьТэг("TOFK",СЧЕТ.РПО_ОФК_Код,False);
  Раб.XML.СоздатьТэг("FOName",СЧЕТ.РПО_ФО_Наим1+СЧЕТ.РПО_ФО_Наим2,False);
  Раб.XML.СоздатьТэг("LSvUFK",СЧЕТ.РПО_ЛСчет,False);
  Раб.XML.ЗакрытьТэг;

end;

Func TimeToHMS:String;
var ihh, imm, icc, valTime :Integer;
var shh, smm, scc :String;
 shh=''; smm=''; scc='';
  valTime = Time;
 imm=Int(Trunc((valTime-ihh*3600)/60));
 icc=valTime-ihh*3600-imm*60;
 ihh=Int(Trunc(valTime/3600)-4);
 if ihh < 0:
  ihh = 0; -- !!!!!
 fi;

 shh=Format("%.2d", ihh);
 smm=Format("%.2d", imm);
 scc=Format("%.2d", icc);
 ^('T'+shh+'-'+smm+'-'+scc+'Z');
end;

Proc Button3_OnClick(Sender: String);
var i:I;
  Раб.XML.Очистить;
  Раб.XML.ОткрытьNamespace("soapenv","http://schemas.xmlsoap.org/soap/envelope/");

    Раб.XML.ОткрытьТэгBuf("Envelope",False);
    Раб.XML.ОткрытьТэгBuf("Header",False);
    Раб.XML.ЗакрытьТэг;
    Раб.XML.ОткрытьТэгBuf("Body",False);
   Раб.XML.ЗакрытьNamespace;
     Раб.XML.ОткрытьNamespace("n1","http://roskazna.ru/SmevUnifoService/");
     Раб.XML.ДобавитьNamespace("smev","http://smev.gosuslugi.ru/rev111111");
     Раб.XML.ДобавитьNamespace("unifo","http://rosrazna.ru/xsd/SmevUnifoService");
      Раб.XML.ОткрытьТэгBuf("UnifoTransferMsg",False);
     Раб.XML.ЗакрытьNamespace;
     Раб.XML.ОткрытьNamespace("smev","http://smev.gosuslugi.ru/rev111111");
       Раб.XML.ОткрытьТэгBuf("Message",False);
        Раб.XML.ОткрытьТэгBuf("Sender",False);
         Раб.XML.СоздатьТэг("Code","123",False);
         Раб.XML.СоздатьТэг("Name","123",False);
        Раб.XML.ЗакрытьТэг;
        Раб.XML.ОткрытьТэгBuf("Recipient",False);
         Раб.XML.СоздатьТэг("Code","123",False);
         Раб.XML.СоздатьТэг("Name","123",False);
        Раб.XML.ЗакрытьТэг;
        Раб.XML.ОткрытьТэгBuf("Originator",False);
         Раб.XML.СоздатьТэг("Code","123",False);
         Раб.XML.СоздатьТэг("Name","123",False);
        Раб.XML.ЗакрытьТэг;
        Раб.XML.СоздатьТэг("TypeCode","GSRV",False);
        Раб.XML.СоздатьТэг("Status","REQUEST",False);
        Раб.XML.СоздатьТэг("Date",РАБ.Формат.ДатаСтр(Today,14)+TimeToHMS,False);
        Раб.XML.СоздатьТэг("TestMsg","",False);
       Раб.XML.ЗакрытьТэг;
       Раб.XML.ОткрытьТэгBuf("MessageData",False);
        Раб.XML.ОткрытьТэгBuf("AppData",False);
         Раб.XML.ЗакрытьNamespace;
         Раб.XML.ОткрытьNamespace("unifo","http://rosrazna.ru/xsd/SmevUnifoService");
         Раб.XML.ОткрытьТэгBuf("ImportData",False);
         Раб.XML.ЗакрытьNamespace;
          Раб.XML.ОткрытьNamespace("pirs","http://roskazna.ru/xsd/PGU_ImportRequest");
          Раб.XML.ОткрытьТэгBuf("ImportRequest",False);
          Раб.XML.ЗакрытьNamespace;

           Раб.XML.ОткрытьТэгBuf("PostBlock",False);
            Раб.XML.СоздатьТэг("ID",РАБ.БЮДЖЕТ2005.MyGUID("FK"),False);
            Раб.XML.СоздатьТэг("TimeStamp",РАБ.Формат.ДатаСтр(Today,14)+TimeToHMS,False); --!!!!! Time
            Раб.XML.СоздатьТэг("SenderIdentifier",ПРОДАВЕЦ.РПО_КОД_ГМП,False);
           Раб.XML.ЗакрытьТэг;
           ExportCharge;
          Раб.XML.ЗакрытьТэг;
         Раб.XML.ЗакрытьТэг;
        Раб.XML.ЗакрытьТэг;
       Раб.XML.ЗакрытьТэг;
      Раб.XML.ЗакрытьТэг;

    Раб.XML.ЗакрытьТэг;
    Раб.XML.ЗакрытьТэг;
  Раб.XML.ЗаписьФайла("r:\test.xml",'UTF-8');
  Раб.XML.Очистить;

  Раб.XML.ОткрытьNamespace("chg","http://roskazna.ru/xsd/Charge");
  ExportCharge;

  Раб.XML.ЗаписьФайла("r:\test1.xml",'UTF-8');
end;


Конец
