Остатки мц
Модераторы: m0p3e, edward_K, Модераторы
-
- Сообщения: 8
- Зарегистрирован: 17 дек 2009, 18:53
- Откуда: Волгоград, ОАО Связьтранснефть
- Контактная информация:
Остатки мц
Доброго времени суток!нужно написать sql запрос, который делал бы выборку остатков мц для мола, по конкретному складу и статье затрат,на какую-либо дату .
Если честно, не знаю даже толком какие таблицы помимо saldomc нужно использовать.Кто-нибудь делал подобное?
Если честно, не знаю даже толком какие таблицы помимо saldomc нужно использовать.Кто-нибудь делал подобное?
-
- Заслуженный деятель интернет-сообщества
- Сообщения: 5188
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: SPB galaxy spb
Re: Остатки мц
вот и ищите ее на форуме.
Но вообще то запаритесь слегка простым запросом не вытянуть.
Но вообще то запаритесь слегка простым запросом не вытянуть.
Re: Остатки мц
если остатки - динамические, то их нада вначале рассчитать, напр:
Код: Выделить всё
//---------------------------------------------------------------------------
if ( not Store_Init )
{
Message(''#3'Не проинициализировался объект расчета сальдо...',cmCancel);
EXIT ;
}
Store_ReInit ; // удаление таблицы TmpSaldo1
Store_TypeOstatki( TRUE ) ; // входящие остатки
Store_ForceInVal( FALSE );
Store_SkladProizv( 0 );
Store_Run ( OU03DB,
if(GetFirst Pick where ((word(7) == Pick.wList))=0,comp(-2),comp( 0)),
if(GetFirst Pick where ((word(11) == Pick.wlist))=0,comp(-2),comp( 0)),
if(GetFirst Pick where ((word(8) == Pick.wList))=0,comp(-2),comp( 0)),
comp( 0),
TRUE, TRUE, TRUE
// TRUE, TRUE, FALSE
);
Store_Done;
//---------------------------------------------------------------------------
-
- Сообщения: 8
- Зарегистрирован: 17 дек 2009, 18:53
- Откуда: Волгоград, ОАО Связьтранснефть
- Контактная информация:
Re: Остатки мц
Да ничего страшного , что запрос не простой, главное знать из каких таблиц тянуть,а я не знаю.Мне нужен именно sql-запрос, тк делаю свою софтину, которая обращается к данным из галактики.
Re: Остатки мц
Я так вытаскивал из SALDOMC.
Статья затрат - это, видимо, ссылка CSTZATR из KATMC.
Код: Выделить всё
select katmc.nrec, katmc.name, saldomc.kol, saldomc.srprice, saldomc.dsaldo, saldomc.cparty, saldomc.nrec, katparty.kod, katparty.name, kated.abbr
from katmc, saldomc, katparty, kated
where
((
saldomc.cmc /== katmc.nrec and
katmc.ced /== kated.nrec and
saldomc.cparty /== katparty.nrec and
0 == saldomc.sp and
add_day(ds, 1) >>= saldomc.dsaldo
))
-
- Заслуженный деятель интернет-сообщества
- Сообщения: 5188
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: SPB galaxy spb
Re: Остатки мц
одно но - в этом запросе нужно найти saldomc с максимальной датой и отсечь остатки без разреза.
-
- Сообщения: 8
- Зарегистрирован: 17 дек 2009, 18:53
- Откуда: Волгоград, ОАО Связьтранснефть
- Контактная информация:
Re: Остатки мц
Спасибо за ответ,но статья затрат это КАУ1, если посмотреть карточку складского учета, то там есть такое поле.где хранится кау1 и как его подцепить, я не знаю.RAJAH писал(а):Я так вытаскивал из SALDOMC.Статья затрат - это, видимо, ссылка CSTZATR из KATMC.Код: Выделить всё
select katmc.nrec, katmc.name, saldomc.kol, saldomc.srprice, saldomc.dsaldo, saldomc.cparty, saldomc.nrec, katparty.kod, katparty.name, kated.abbr from katmc, saldomc, katparty, kated where (( saldomc.cmc /== katmc.nrec and katmc.ced /== kated.nrec and saldomc.cparty /== katparty.nrec and 0 == saldomc.sp and add_day(ds, 1) >>= saldomc.dsaldo ))
-
- Сообщения: 8
- Зарегистрирован: 17 дек 2009, 18:53
- Откуда: Волгоград, ОАО Связьтранснефть
- Контактная информация:
Re: Остатки мц
Кстати КАУ2 тоже потребуется, тк это центр ответственности.
Re: Остатки мц
А нахождение максимума у меня уже в тексте... Можно попытаться использовать select max(...edward_K писал(а):одно но - в этом запросе нужно найти saldomc с максимальной датой и отсечь остатки без разреза.
Winterfell писал(а):Спасибо за ответ,но статья затрат это КАУ1, если посмотреть карточку складского учета, то там есть такое поле.где хранится кау1 и как его подцепить, я не знаю.
Точно не скажу, но аналитики МЦ у нас примерно так (spkau2, spkau3 и т.д. - это копии spkau):Winterfell писал(а):Кстати КАУ2 тоже потребуется, тк это центр ответственности.
Код: Выделить всё
katmc.chashan == hashan.nrec and
hashan.canalit[1] == spkau.nrec and
hashan.canalit[2] == spkau2.nrec and
hashan.canalit[3] == spkau3.nrec and
...
-
- Сообщения: 8
- Зарегистрирован: 17 дек 2009, 18:53
- Откуда: Волгоград, ОАО Связьтранснефть
- Контактная информация:
Re: Остатки мц
Может кому то поможет, вот как я решил эту задачу:
select gal.katmc.fname, max(gal.to_oradate(saldoobj.fdoper)),max(saldoobj.fkol),max(saldoobj.FSRPRICE) keep (dense_rank last order by gal.to_oradate(saldoobj.fdoper)) from GAL.saldoobj
inner join gal.katmc on gal.katmc.fnrec=saldoobj.fcmc
where gal.to_oradate(saldoobj.fdoper) <= '08.08.10' and
fcmol='80680000000000A3' and
fcpodr='8099000000000040' and
fkol>0 and fwmode=1 and fcobj='8001000000007BCA'
group by gal.katmc.fname
select gal.katmc.fname, max(gal.to_oradate(saldoobj.fdoper)),max(saldoobj.fkol),max(saldoobj.FSRPRICE) keep (dense_rank last order by gal.to_oradate(saldoobj.fdoper)) from GAL.saldoobj
inner join gal.katmc on gal.katmc.fnrec=saldoobj.fcmc
where gal.to_oradate(saldoobj.fdoper) <= '08.08.10' and
fcmol='80680000000000A3' and
fcpodr='8099000000000040' and
fkol>0 and fwmode=1 and fcobj='8001000000007BCA'
group by gal.katmc.fname
Re: Остатки мц
Написал запрос по остаткам МЦ на PL/SQL на Oracle. Как его переписать в запрос под VIP?
Код: Выделить всё
select distinct km.fkod Mol, kp.fname Party, k.fname Name_gal, tmp.fkol FKOL, tmp.nzkol, Tmp.FSRPRICE srprice
from (select
mc.fname, mc.fisarch, t.fcmc cmc, T.FCPARTY,T.FCMOL,T.FCPODR,t.fkol fkol, NZS.FKOL nzkol, T.FDSALDO,T.FSP,T.FSRPRICE, mc.fkgroupmc, row_number() over(partition by T.FCPARTY,T.FCMOL,T.FSP,t.fcmc,T.FCPODR order by max(t.FDSALDO) desc) as rnm
from GAL810.NORMZAPAS nz, GAL810.NORMZAPASSPEC nzs, gal810.saldomc t, gal810.katmc mc
where t.fcpodr != '8000000000000000' and
mc.fnrec = t.fcmc
and NZ.FATL_NREC = NZS.FCNORM
and NZS.FCMC = MC.FNREC
and T.FCPODR = NZ.FCPODRAZD
and t.fdsaldo <=131991297
and mc.fkgroupmc like '%'
group by t.fcmc,mc.fname,mc.fisarch, t.fkol, NZS.FKOL, mc.fkgroupmc,T.FSRPRICE, T.FDSALDO,T.FCPARTY,T.FCMOL,T.FCPODR,T.FSP,T.FCPARTY) tmp
left join gal810.katmc k on k.fnrec=tmp.cmc
left join GAL810.KATPARTY kp on KP.FNREC=tmp.fcparty
left join GAL810.KATMOL km on km.fnrec=tmp.fcmol
left join GAL810.TYPEMC tmc on TMC.FNREC=K.FCTYPE
left join GAL810.KATPODR podr on podr.fnrec=tmp.fcpodr
left join GAL810.KATOTPED otp on OTP.FCMCUSL=K.FNREC
left join GAL810.GROUPMC gr on GR.FNREC=K.FCGROUPMC
where tmp.rnm = 1 and tmp.fisarch!=1
and OTP.FAKT = '1'
and K.FCTYPE=TMC.FNREC
and K.FNREC = OTP.FCMCUSL;
-
- Местный житель
- Сообщения: 1844
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: Ярославская область ОАО "Часовой завод Чайка" г. Углич
- Контактная информация:
Re: Остатки мц
Открываем vipprog, раздел "Работа с БД(SQL), и в нем раздел "Прямой SQL".
Изучаем синтаксис,возможности и правила написания запросов посредством этой альтернативной функциональности доступа к данным.
p.s. не пробовали "Настройки Галактики \ Логистика \ Складской учет \ Расчет сальдовых остатков с использованием DSQL" ? или чем то не устраивает ?
Изучаем синтаксис,возможности и правила написания запросов посредством этой альтернативной функциональности доступа к данным.
p.s. не пробовали "Настройки Галактики \ Логистика \ Складской учет \ Расчет сальдовых остатков с использованием DSQL" ? или чем то не устраивает ?
Re: Остатки мц
Мануалы я читал, запрос мне нужен для отчета. Делаю отчет по остатками и нормам страхового запаса (это свои разработки). Может кто уже сталкивался и есть готовый запрос...
-
- Заслуженный деятель интернет-сообщества
- Сообщения: 5188
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: SPB galaxy spb
Re: Остатки мц
Ну так и напишите его на DSql. Для начала в сапорте с SQL запрос. Читайте форум. Все отличие будет в том что поля нужно писать как в галке а ваши фильтры переписать используя #comp(NRec) и #date(dd,mm,yyyy)
Re: Остатки мц
Начал переписывать, но ругается на вложенный запрос. И как еще переписать partition, row_number:
Код: Выделить всё
select distinct km.kod Mol, kp.name Party, k.name Name_gal, tmp.kol FKOL, tmp.nzkol, Tmp.SRPRICE srprice
from (select
mc.name, mc.isarch, t.cmc cmc, T.CPARTY,T.CMOL,T.CPODR,t.kol kol, NZS.KOL nzkol, T.DSALDO,T.SP,T.SRPRICE, mc.kgroupmc, row_number()
over(partition by T.CPARTY,T.CMOL,T.SP,t.cmc,T.CPODR order by max(t.DSALDO) desc) as rnm
from NORMZAPAS nz, NORMZAPASSPEC nzs, saldomc t, katmc mc
where ((t.cpodr != '8000000000000000'
and mc.nrec == t.cmc
and NZ.ATL_NREC == NZS.CNORM
and NZS.CMC == MC.NREC
and T.CPODR == NZ.CPODRAZD
and t.dsaldo <=131991297
and mc.kgroupmc like '%'))
group by t.cmc,mc.name,mc.isarch, t.kol, NZS.KOL, mc.kgroupmc,T.SRPRICE, T.DSALDO,T.CPARTY,T.CMOL,T.CPODR,T.SP,T.CPARTY) tmp
left join katmc k on k.nrec=tmp.cmc
left join KATPARTY kp on KP.NREC=tmp.cparty
left join KATMOL km on km.nrec=tmp.cmol
left join TYPEMC tmc on TMC.NREC=K.CTYPE
left join KATPODR podr on podr.nrec=tmp.cpodr
left join KATOTPED otp on OTP.CMCUSL=K.NREC
left join GROUPMC gr on GR.NREC=K.CGROUPMC
where ((tmp.rnm == 1 and tmp.isarch!=1
and OTP.AKT == '1'
and K.CTYPE==TMC.NREC
and K.NREC == OTP.CMCUSL));