Клиенты просили сделать табель, разбитый понедельно. В результате мы переработали табель, добавив в нее вкладку "Недельный".
Я думаю эта доработка будет полезной не только нам, но и вам, уважаемые форумчане
Собственно сам текст кода на ВИП
Если календарик, понравился, напишите. Может разработчики его включат в стандартную сборку.
Код: Выделить всё
#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.