1) никак не bounds, а
order <имя сортировки> by <таблица>.<поле>
2) в обработчике событий обработать событие cmcolumnclicked, в котором функцией getcolumnsorting выяснить текущий тип сортировки и перевести его в противоположный
Пример есть только по временной табле, но и по обычой работает аналогично
Код: Выделить всё
table struct lschetlisttable
(
nrec:comp,
tabn:longint,
cappoint:comp,
cpodr:comp,
tarif:double,
fio:string[60]
)
with index
(
lschetlisttable01=nrec(unique),
lschetlisttable02=tabn,
lschetlisttable03=fio
);
interface lschetlist 'Список сотрудников' escclose,cyan show at(1,1,100,15);
create view
as select * from lschetlisttable,
milranks,
appointments,
synonym catalogs catrazryad,
synonym catalogs catpost,
katpodr,
synonym katpodr catpodr
where
((
lschetlisttable.nrec==milranks.cperson and 1==milranks.brankstate and
milranks.crank==catrazryad.nrec and
lschetlisttable.cappoint==appointments.nrec and
appointments.post==catpost.nrec and
lschetlisttable.cpodr==katpodr.nrec
))
order ordertabn by lschetlisttable.tabn
order orderfio by lschetlisttable.fio;
browse brlschet table lschetlisttable;
fields lschetlisttable.tabn'Таб. №':[5],protect;
lschetlisttable.fio'ФИО сотрудника':[30],protect;
katpodr.name'Подразделение','(по затратам)':[25],protect;
catpost.name'Дожность по ШР':[30],protect;
catrazryad.name'Разряд':[10],protect;
lschetlisttable.tarif'Оклад':[8.3,'[|-]3666 666.888'],protect;
end;
procedure getdata;
{
delete all from lschetlisttable;
startnewvisual(vtnumericvisual,vftimer,'Выборка списка сотрудников',0);
_loop persons where(('С'==persons.isemployee and persons.nrec==lschet.tperson and lschet.cex==catpodr.nrec))
{
nextvisual;
if(persons.appointcur>0 and lschet.cex>0 and pos('онтракт',catpodr.name)=0) insert lschetlisttable set lschetlisttable.nrec=persons.nrec,
lschetlisttable.tabn=lschet.tabn,
lschetlisttable.fio=persons.fio,
lschetlisttable.cpodr=lschet.cex,
lschetlisttable.tarif=lschet.tarif,
lschetlisttable.cappoint=persons.appointcur;
}
stopvisual('',0);
}
handleevent
cminit:
{
getdata;
setorder(tiorderfio);
}
cmcolumnclicked:
{
case getcolumnsorting(brlschet,target) of
0:
{
setcolumnsorting(brlschet,target,-1);
if(target=#lschetlisttable.tabn) setorder(tiordertabn);
else setorder(tiorderfio);
settablebackorderin (#lschetlisttable, false);
rescanpanel (#lschetlisttable);
}
-1:
{
setcolumnsorting(brlschet, target, 1);
settablebackorderin (#lschetlisttable, true);
rescanpanel (#lschetlisttable);
}
1:
{
setcolumnsorting(brlschet, target, 0);
setorder(-1);
settablebackorderin (#lschetlisttable, false);
rescanpanel (#lschetlisttable);
}
end;
}
end;
end.