Количество по позиции

Программирование на Атлантисе (VIP, FCOM, ARD), FastReport

Модераторы: m0p3e, edward_K, Модераторы

Ответить
sildae
Постоянный обитатель
Сообщения: 188
Зарегистрирован: 04 апр 2009, 15:56
Откуда: сАРАТОВ
Контактная информация:

Количество по позиции

Сообщение sildae »

Накладная на отпуск сырья, во входящих к ней производственный заказ по позициям.
В средней части позиций входящего документа никак не могу найти количество к исполнению. В нижней части нашла, а в средней ну никак. spmnpl.nrec == valspmnp.cspmnpl ,valspmnp.kol - относится к входящему заказу, но при выборе позиций во входящих количество изменяется и не совпадает с количеством в заказе. Подскажите, пожалуйста, как найти количество к исполнению в средней панели.

select katsopr.NSOPR,SpObjAcc.KOLCFACT,spobjAcc.KOLCPOS,mnplan.number,katmc.name,spmnpl.NUMBER
from katsopr,SpMnPlan,mnplan,SpMnPl,SpObjAcc
where
((
comp(000200000000A10Dh)==katsopr.nrec
and katsopr.nrec==objacct.cowner
and objacct.cobject==mnplan.nrec
and mnplan.nrec == SpMnPlan.cMnPlan
and SpMnPlan.Nrec == SpMnPl.cSpMnPlan
and 23 == SpMnPl.wKolAn
and 1 == SpObjAcc.Kindrec
and 18 == SpObjAcc.typePos // тип текущей позиции
and SpMnPl.Nrec == SpObjAcc.cPos
and 45 == SpObjAcc.typeObj // тип позиции накладной
and 501 == SpObjAcc.VidSopr // накладная на отпуск сырья
and katsopr.nrec==spsopr.csopr
and spsopr.CMCUSL==katmc.nrec
))
and spsopr.nrec=spObjAcc.cobject
;
Vik
Местный житель
Сообщения: 370
Зарегистрирован: 28 сен 2006, 15:43
Откуда: Санкт-Петербург
Контактная информация:

Re: Количество по позиции

Сообщение Vik »

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

select
 spobjAcc.KOLCPOS
from
ObjAccT
,SpObjAcc
where
((
     501                == ObjAccT.VidSopr and
     1                   == ObjAccT.KindRec and
     44                 == ObjAccT.typeOwn and
     cKatSopr        == ObjAccT.cOwner  and
     17                 == ObjAccT.typeObj and
     ObjAccT.Nrec == SpObjAcc.cObjAccT and
     0                   == SpObjAcc.TypeHier
))

;   
Последний раз редактировалось Vik 11 фев 2011, 18:02, всего редактировалось 1 раз.
RAJAH
Местный житель
Сообщения: 932
Зарегистрирован: 18 фев 2008, 12:49

Re: Количество по позиции

Сообщение RAJAH »

Vik, это, вроде бы, будет количество из нижней панели.
А из средней: по-моему, надо ещё одну копию spobjacc присобачить.

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

select spobjacc2.kolcpos, ...
from ..., spobjacc spobjacc2, ...
where
((
...
spobjacc.cspobjacc /== spobjacc2.nrec and
...
))
...
Vik
Местный житель
Сообщения: 370
Зарегистрирован: 28 сен 2006, 15:43
Откуда: Санкт-Петербург
Контактная информация:

Re: Количество по позиции

Сообщение Vik »

нет, это будет количество из средней панели) Про нижнюю ничего не сказано, поэтому я ее и не включил в выборку.
sildae
Постоянный обитатель
Сообщения: 188
Зарегистрирован: 04 апр 2009, 15:56
Откуда: сАРАТОВ
Контактная информация:

Re: Количество по позиции

Сообщение sildae »

Спасибо. Мне нужна и средняя, и нижняя.
RAJAH
Местный житель
Сообщения: 932
Зарегистрирован: 18 фев 2008, 12:49

Re: Количество по позиции

Сообщение RAJAH »

Vik
Получается, SpObjAcc.TypeHier = 0 - средняя, SpObjAcc.TypeHier = 1 - нижняя?
sildae
Постоянный обитатель
Сообщения: 188
Зарегистрирован: 04 апр 2009, 15:56
Откуда: сАРАТОВ
Контактная информация:

Re: Количество по позиции

Сообщение sildae »

да, получается, что так :) А средняя с нижней как-то тоже связаны?
Vik
Местный житель
Сообщения: 370
Зарегистрирован: 28 сен 2006, 15:43
Откуда: Санкт-Петербург
Контактная информация:

Re: Количество по позиции

Сообщение Vik »

sildae писал(а):Спасибо. Мне нужна и средняя, и нижняя.
Ну, доделать не сложно)

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

select
 spobjAcc.KOLCPOS
,SpObjAcc1.KolcPos
from
ObjAccT
,SpObjAcc
,SpObjAcc SpObjAcc1
where
((
     501               == ObjAccT.VidSopr and
     1                 == ObjAccT.KindRec and
     44                == ObjAccT.typeOwn and
     cSopr == ObjAccT.cOwner  and
     17                == ObjAccT.typeObj and
     ObjAccT.Nrec      == SpObjAcc.cObjAccT and
     0                 == SpObjAcc.TypeHier and
     ObjAccT.Nrec      == SpObjAcc.cObjAccT and
     0                 == SpObjAcc.TypeHier and
     ObjAccT.Nrec      == SpObjAcc1.cObjAccT and
     SpObjAcc.Nrec     == SpObjAcc1.cSpObjAcc and
     1                 == SpObjAcc1.TypeHier
))

; 
RAJAH писал(а):Vik
Получается, SpObjAcc.TypeHier = 0 - средняя, SpObjAcc.TypeHier = 1 - нижняя?
Получается так.
Ответить