Loop
Модераторы: m0p3e, edward_K, Модераторы
Loop
Добрый день!
Может, кто знает, можно ли в интерфейсе организовать
проход по таблице, отсортированной по какому-либо полю?
Что-то типа:
_loop sumvidop order by tabn
Может, кто знает, можно ли в интерфейсе организовать
проход по таблице, отсортированной по какому-либо полю?
Что-то типа:
_loop sumvidop order by tabn
А теперь возникла другая проблема!
Стоило мне добавить ordered by tabn, как условия, наложенные на таблицу Sumvidop в create view, перестали действовать.
А мне нужна не вся таблица, а только начисления за один месяц и с определенной входимостью (те, по которым формируются проводки)
Как это победить???
Стоило мне добавить ordered by tabn, как условия, наложенные на таблицу Sumvidop в create view, перестали действовать.
А мне нужна не вся таблица, а только начисления за один месяц и с определенной входимостью (те, по которым формируются проводки)
Как это победить???
Кто сказал, что бесполезно биться головой об стену?!
тогда либоs2176 писал(а):А теперь возникла другая проблема!
Стоило мне добавить ordered by tabn, как условия, наложенные на таблицу Sumvidop в create view, перестали действовать.
А мне нужна не вся таблица, а только начисления за один месяц и с определенной входимостью (те, по которым формируются проводки)
Как это победить???
_loop Sumvidop where ((..)) ordered by tabn
этот фильтр перекрывает условия из вьюхи на время работы команды (см. доку)
либо не париться и отсортировать и отфильтровать Sumvidop прямо во вьюхе с делать простой _loop
тогда действуют сортировки и ограничения из вьюхи
отсортировать во вьюхе = указать конкретный индекс в секции from
from
sumvidop (Имя_индекса)
если же ты хочешь отсортировать таблицу не по индексу, то советую тогда начать с доков а не с этого форума
Вьюха такая:
create view
var dd,mm,yy: word;
as select tperson, cschetd, csubschd, spkau.name, summa
from sumvidop svo
where((svo.vidopl==klvidopl.vidopl and svo.ckaud[1]==spkau.nrec
and yy==yearn and mm==mesn
)) and '+'=klvidopl.vhv
пробовала условия наложить на sumvidop в цикл...
пишет, что ей нужен индекс по yearn, mesn, tabn
а такого нет...
create view
var dd,mm,yy: word;
as select tperson, cschetd, csubschd, spkau.name, summa
from sumvidop svo
where((svo.vidopl==klvidopl.vidopl and svo.ckaud[1]==spkau.nrec
and yy==yearn and mm==mesn
)) and '+'=klvidopl.vhv
пробовала условия наложить на sumvidop в цикл...
пишет, что ей нужен индекс по yearn, mesn, tabn
а такого нет...
Кто сказал, что бесполезно биться головой об стену?!
Задача такая: я должна сгруппировать(просуммировать) начисления(а потом еще и ЕСН), по которым формируются проводки, по кодам подразделений из штатного расписания.
В самой таблице начислений SUMVIDOP нет привязки к этим подразделениям. Поэтому для каждого сотрудника приходится лезть в таблицу назначений и вытаскивать оттуда подразделение, в котором сотрудник работал в этом месяце. Т.к. записей в Sumvidop по каждому сотруднику ~ 10 штук, то можно было бы лезть в назначения только один раз при изменении tperson или tabn. А так приходится практически на каждую из 25000 записей лезть еще в одну таблицу и вытаскивать из нее подходящее назначение. А в таблице Perevodtek записей будет уже не 25000, а 25000*6... Хочется ускорить процесс.
В самой таблице начислений SUMVIDOP нет привязки к этим подразделениям. Поэтому для каждого сотрудника приходится лезть в таблицу назначений и вытаскивать оттуда подразделение, в котором сотрудник работал в этом месяце. Т.к. записей в Sumvidop по каждому сотруднику ~ 10 штук, то можно было бы лезть в назначения только один раз при изменении tperson или tabn. А так приходится практически на каждую из 25000 записей лезть еще в одну таблицу и вытаскивать из нее подходящее назначение. А в таблице Perevodtek записей будет уже не 25000, а 25000*6... Хочется ускорить процесс.
-
- Сообщения: 18
- Зарегистрирован: 06 окт 2005, 13:12
Select
catalogs.name
,sumvidop.summa
where
((
mm == sumvidop.mesn
and yyyy == sumvidop.yearn
and 11 == ExtCatLinks.ObjType
and 1 == ExtCatLinks.ModType
and sumvidop.cex == ExtCatLinks.ExtCat
and ExtCatLinks.StaffCat == Catalogs.nrec
))
order by catalogs.name
;
Но это при условии , что у вас синхронизированы каталоги ШР и подразделений
catalogs.name
,sumvidop.summa
where
((
mm == sumvidop.mesn
and yyyy == sumvidop.yearn
and 11 == ExtCatLinks.ObjType
and 1 == ExtCatLinks.ModType
and sumvidop.cex == ExtCatLinks.ExtCat
and ExtCatLinks.StaffCat == Catalogs.nrec
))
order by catalogs.name
;
Но это при условии , что у вас синхронизированы каталоги ШР и подразделений
-
- Местный житель
- Сообщения: 1844
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: Ярославская область ОАО "Часовой завод Чайка" г. Углич
- Контактная информация:
Так вот быстро на вскидку..в виде ард-шника :
.form qwerty
.ard
.var
oldpodr :comp
first,vyvod :integer
sumopl :double
oldname :string
.endvar
.create view t1
as select * from persons(PERSBYDEP),sumvidop
where ((
persons.nrec==lschet.tperson
and lschet.nrec==sumvidop.clsch
and persons.department==catalogs.nrec))
and sumvidop.yearn=2005;
.begin
first:=1;
vyvod:=0;
end.
.{table t1
.begin
if oldpodr<>persons.department
{
oldpodr:=persons.department;
vyvod:=1;
}
end.
.{?internal; vyvod=1 and first<>1
.fields
oldname
sumopl
.endfields
^ &&&&&&&&&&&&&&.&&
.begin
sumopl:=0;
vyvod:=0;
end.
.}
.begin
first:=0;
oldname:=t1.catalogs.name;
sumopl:=sumopl+t1.sumvidop.summa;
end.
.}
.fields
oldname
sumopl
.endfields
^ &&&&&&&&&&&&&&&.&&
.endform
.form qwerty
.ard
.var
oldpodr :comp
first,vyvod :integer
sumopl :double
oldname :string
.endvar
.create view t1
as select * from persons(PERSBYDEP),sumvidop
where ((
persons.nrec==lschet.tperson
and lschet.nrec==sumvidop.clsch
and persons.department==catalogs.nrec))
and sumvidop.yearn=2005;
.begin
first:=1;
vyvod:=0;
end.
.{table t1
.begin
if oldpodr<>persons.department
{
oldpodr:=persons.department;
vyvod:=1;
}
end.
.{?internal; vyvod=1 and first<>1
.fields
oldname
sumopl
.endfields
^ &&&&&&&&&&&&&&.&&
.begin
sumopl:=0;
vyvod:=0;
end.
.}
.begin
first:=0;
oldname:=t1.catalogs.name;
sumopl:=sumopl+t1.sumvidop.summa;
end.
.}
.fields
oldname
sumopl
.endfields
^ &&&&&&&&&&&&&&&.&&
.endform
-
- Местный житель
- Сообщения: 1844
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: Ярославская область ОАО "Часовой завод Чайка" г. Углич
- Контактная информация:
Так вот быстро на вскидку..в виде ард-шника :
.form qwerty
.ard
.var
oldpodr :comp
first,vyvod :integer
sumopl :double
oldname :string
.endvar
.create view t1
as select * from persons(PERSBYDEP),sumvidop
where ((
persons.nrec==lschet.tperson
and lschet.nrec==sumvidop.clsch
and persons.department==catalogs.nrec))
and sumvidop.yearn=2005;
.begin
first:=1;
vyvod:=0;
end.
.{table t1
.begin
if oldpodr<>persons.department
{
oldpodr:=persons.department;
vyvod:=1;
}
end.
.{?internal; vyvod=1 and first<>1
.fields
oldname
sumopl
.endfields
^ &&&&&&&&&&&&&&.&&
.begin
sumopl:=0;
vyvod:=0;
end.
.}
.begin
first:=0;
oldname:=t1.catalogs.name;
sumopl:=sumopl+t1.sumvidop.summa;
end.
.}
.fields
oldname
sumopl
.endfields
^ &&&&&&&&&&&&&&&.&&
.endform
.form qwerty
.ard
.var
oldpodr :comp
first,vyvod :integer
sumopl :double
oldname :string
.endvar
.create view t1
as select * from persons(PERSBYDEP),sumvidop
where ((
persons.nrec==lschet.tperson
and lschet.nrec==sumvidop.clsch
and persons.department==catalogs.nrec))
and sumvidop.yearn=2005;
.begin
first:=1;
vyvod:=0;
end.
.{table t1
.begin
if oldpodr<>persons.department
{
oldpodr:=persons.department;
vyvod:=1;
}
end.
.{?internal; vyvod=1 and first<>1
.fields
oldname
sumopl
.endfields
^ &&&&&&&&&&&&&&.&&
.begin
sumopl:=0;
vyvod:=0;
end.
.}
.begin
first:=0;
oldname:=t1.catalogs.name;
sumopl:=sumopl+t1.sumvidop.summa;
end.
.}
.fields
oldname
sumopl
.endfields
^ &&&&&&&&&&&&&&&.&&
.endform