-- Шаблон создан мастером бланков
-- 24.04.2015 17:26:34
--
БланкСШаблоном "Работа с датами/временем";

Func ДатаНПериода(период: S):D;
var М, К, Г: I;
  --Поставить даты
  Г=Int(ExtractWord(2,период,"."));
  К=Int(ExtractWord(3,период,"."));
  М=Int(ExtractWord(4,период,"."));
  if Г<>0:
    if К<>0:
      if М<>0:
        ^Dat(1,М,Г);
      elsif К=2:
        ^Dat(1,4,Г);
      elsif К=3:
        ^Dat(1,7,Г);
      elsif К=4:
        ^Dat(1,10,Г);
      else  -- 1 или мусор
        ^Dat(1,1,Г);
      fi;
    else
     ^Dat(1,1,Г);
    fi;
  else
    ^1.1.100;
  fi;
end;

Func ДатаКПериода(период: S):D;
var М, К, Г: I;
  --Поставить даты
  Г=Int(ExtractWord(2,период,"."));
  К=Int(ExtractWord(3,период,"."));
  М=Int(ExtractWord(4,период,"."));
  if Г<>0:
    if К<>0:
      if М<>0:
        ^Dat(1,М+1,Г);
      elsif К=1:
        ^Dat(1,4,Г);
      elsif К=2:
        ^Dat(1,7,Г);
      elsif К=3:
        ^Dat(1,10,Г);
      else  -- 4 или мусор
        ^Dat(1,1,Г+1);
      fi;
    else
     ^Dat(1,1,Г+1);
    fi;
  else
    ^1.1.100;
  fi;
end;

Func ВзятьПериодПоДате(dd:Date; mode:String) :String;
--mode: гг - год, кв - квартал, мм - месяц
--mode пусто => с максимальной точностью!
var k :Integer;
var tmp :String;
 tmp="";
 tmp="ПЕРИОД."+Str(Year(dd));
 if mode='гг': ^tmp; fi;
 k=Mon(dd);
 if k<4  : tmp=tmp+'.1';
 |  k<7  : tmp=tmp+'.2';
 |  k<10 : tmp=tmp+'.3';
 |  k<13 : tmp=tmp+'.4';
 fi;

 if mode='кв': ^tmp; fi;

 if k<10: tmp=tmp+'.0'+Str(k);
 | True : tmp=tmp+'.' +Str(k);
 fi;

 if mode='мм': ^tmp; fi;
 ^tmp;
end;

Конец
