Страница 1 из 1

Недельный календарь в табеле учета рабочего времени

Добавлено: 03 авг 2012, 15:03
Dmitry_Sol
Столкнулись, с тем, что в текущем табеле учета рабочего времени неудобно заносить информацию, так как он просто разбит на декады.
Клиенты просили сделать табель, разбитый понедельно. В результате мы переработали табель, добавив в нее вкладку "Недельный".

Я думаю эта доработка будет полезной не только нам, но и вам, уважаемые форумчане :-)

Собственно сам текст кода на ВИП
Если календарик, понравился, напишите. Может разработчики его включат в стандартную сборку.

Код: Выделить всё

#component "Z_WT"
alter interface ZLSTAB;
ExtendTabbedSheets WorkingTableWindow;
window WorkingTableWindow;
#define DayInfoField(N) DayInfo#N ('День месяца'): [5], {Font={Color=DayColor(#N, false); BackColor=DayBack(#N); Bold = DayBold(#N)}}, noprotect, nopickbutton;
procedure weektabel;
{
var i,d,x,y,ned:longint;
	  cfsSetCurrentContainer('extscreen');
	   d:=0;
	   ned:=0;
		cfsSetProp('L_EXTSCREEN_Пн'+'.'  , 'Title','1.');
		cfsSetProp('L_EXTSCREEN_Вт'+'.'  , 'Title','2.');
		cfsSetProp('L_EXTSCREEN_Ср'+'.'  , 'Title','3.');
		cfsSetProp('L_EXTSCREEN_Чт'+'.'  , 'Title','4.');
		cfsSetProp('L_EXTSCREEN_Пт'+'.'  , 'Title','5.');
		cfsSetProp('L_EXTSCREEN_Сб'+'.'  , 'Title','6.');
		cfsSetProp('L_EXTSCREEN_Вс'+'.'  , 'Title','7.');
      for(i:=1;i<=last_day(to_date(1,lstab.mesn,lstab.yearn));i++)
	  {
                                            if d=0 ned:=1;
		  d:=day_of_week(to_date(i,lstab.mesn,lstab.yearn))
		 cfsGetProp('L_EXTSCREEN_'+string(d)+'.'  , 'Origin_X',x);
	     cfsGetProp('L_EXTSCREEN_'+string(ned)+'нед'  , 'Origin_Y',y);
  		 cfsSetProp('i_EXTSCREEN_DAYINFO'+string(i)  , 'Visible',true);
	     cfsSetProp('L_EXTSCREEN_'+string(i)  , 'Visible',true);
  		 cfsSetProp('i_EXTSCREEN_DAYINFO'+string(i)  , 'Origin_X',x);
  		 cfsSetProp('i_EXTSCREEN_DAYINFO'+string(i)  , 'Origin_Y',y);
  		 cfsSetProp('L_EXTSCREEN_'+string(i)  , 'Origin_X',x);
  		 cfsSetProp('L_EXTSCREEN_'+string(i)  , 'Origin_Y',y-20);
		 if d=7 ned:=ned+1;
	  }
		cfsSetProp('L_EXTSCREEN_1'+'.'  , 'Title','Пн.');
		cfsSetProp('L_EXTSCREEN_2'+'.'  , 'Title','Вт.');
		cfsSetProp('L_EXTSCREEN_3'+'.'  , 'Title','Ср.');
		cfsSetProp('L_EXTSCREEN_4'+'.'  , 'Title','Чт.');
		cfsSetProp('L_EXTSCREEN_5'+'.'  , 'Title','Пт.');
		cfsSetProp('L_EXTSCREEN_6'+'.'  , 'Title','Сб.');
		cfsSetProp('L_EXTSCREEN_7'+'.'  , 'Title','Вс.');
	for(i:=last_day(to_date(1,lstab.mesn,lstab.yearn))+1;i<=31;i++)
	 {
	  cfsSetProp('L_EXTSCREEN_'+string(i)  , 'Visible',false);
	  cfsSetProp('i_EXTSCREEN_DAYINFO'+string(i)  , 'Visible',false);
	 }
   RereadRecord(#lsTab);
}
tabbedsheet top WorkingTableTabbedSheet;
screen extscreen 'Недельный';
    show (13,6,,12);
table SWRKTABLE;
       fields
		 #DayInfoField(1)
		 #DayInfoField(2)
		 #DayInfoField(3)
		 #DayInfoField(4)
		 #DayInfoField(5)
		 #DayInfoField(6)
		 #DayInfoField(7)
		 #DayInfoField(8)
		 #DayInfoField(9)
		 #DayInfoField(10)
		 #DayInfoField(11)
		 #DayInfoField(12)
		 #DayInfoField(13)
		 #DayInfoField(14)
		 #DayInfoField(15)
		 #DayInfoField(16)
		 #DayInfoField(17)
		 #DayInfoField(18)
		 #DayInfoField(19)
		 #DayInfoField(20)
		 #DayInfoField(21)
		 #DayInfoField(22)
		 #DayInfoField(23)
		 #DayInfoField(24)
		 #DayInfoField(25)
		 #DayInfoField(26)
		 #DayInfoField(27)
		 #DayInfoField(28)
		 #DayInfoField(29)
		 #DayInfoField(30)
		 #DayInfoField(31)

	 <<
 `1.`  `2.`  `3.`  `4.`  `5.`  `6.`  `7.`
 `1`    `2`    `3`    `4`    `5`    `6`    `7`
  .@@@@  .@@@@  .@@@@  .@@@@  .@@@@  .@@@@  .@@@@  `1нед`
 `8`    `9`    `10`   `11`   `12`   `13`   `14`
  .@@@@  .@@@@  .@@@@  .@@@@  .@@@@  .@@@@  .@@@@  `2нед`
 `15`   `16`   `17`   `18`   `19`   `20`   `21`
  .@@@@  .@@@@  .@@@@  .@@@@  .@@@@  .@@@@  .@@@@  `3нед`
 `22`   `23`   `24`   `25`   `26`   `27`   `28`
  .@@@@  .@@@@  .@@@@  .@@@@  .@@@@  .@@@@  .@@@@  `4нед`
 `29`   `30`   `31`
  .@@@@  .@@@@  .@@@@                              `5нед`

                                                   `6нед`
	 >>
	 end;
end;
handleevent
	cmInit:
	{
	  if(Inherited::HandleEvent(cmInit) = heOk){}
		 SelectFormat (extscreen)
	}
	cmSwitchFormat:
	{
  	  if(Inherited::HandleEvent(cmSwitchFormat) = heOk){}
	   if (Target=extscreen)
        weektabel;
	}
end;
end;
end.

Re: Недельный календарь в табеле учета рабочего времени

Добавлено: 03 авг 2012, 15:50
Starry
Мне понравилось! Выглядит и работает на "отлично". Спасибо!