
Вопрос по запросу SQL
Модераторы: m0p3e, edward_K, Модераторы
-
- Местный житель
- Сообщения: 1846
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: Ярославская область ОАО "Часовой завод Чайка" г. Углич
- Контактная информация:
select k.nrec,sp.nrec,mc.name,podr.name,ob.scheto,ob.schetk,ob.sumob,ord.srprice,katmol.name
from katsopr k
,spsopr sp
,soprhoz
,oborot ob
,katmc mc
,sporder ord
,katpodr podr
,sklorder sklo
,katmol
where ((
comp(n) == ob.cplanssch and
Date(26,03,2010)==ob.datob and
word(101) == ob.tidk (noindex) and
ob.csoprhoz /== soprhoz.nrec and
soprhoz.csoprdoc == k.nrec and
k.nrec == sp.csopr
and ob.kauos[1]==sp.cmcusl (noindex)
and sp.nrec == ord.cspsopr
and ord.cmc ==mc.nrec
and ord.csklorder == sklo.nrec
and sklo.cmol == katmol.nrec
and k.corg == katorg.nrec
and k.CPODRTO == podr.nrec
))
and isvalidall(tnsp)
;
Конечно, если есть проводки , где не ведется аналитика к счету дебета по мц, то она "отвалится"
from katsopr k
,spsopr sp
,soprhoz
,oborot ob
,katmc mc
,sporder ord
,katpodr podr
,sklorder sklo
,katmol
where ((
comp(n) == ob.cplanssch and
Date(26,03,2010)==ob.datob and
word(101) == ob.tidk (noindex) and
ob.csoprhoz /== soprhoz.nrec and
soprhoz.csoprdoc == k.nrec and
k.nrec == sp.csopr
and ob.kauos[1]==sp.cmcusl (noindex)
and sp.nrec == ord.cspsopr
and ord.cmc ==mc.nrec
and ord.csklorder == sklo.nrec
and sklo.cmol == katmol.nrec
and k.corg == katorg.nrec
and k.CPODRTO == podr.nrec
))
and isvalidall(tnsp)
;
Конечно, если есть проводки , где не ведется аналитика к счету дебета по мц, то она "отвалится"
tolctiy писал(а):удваивает проводки , но данные выводит все
Как и следовало ожидать, не удваивает, а к каждой проводке подтягивает по очереди все позиции накладной. Было бы их 10 - удесятеряло бы.tolctiy писал(а):Позиций по накладной 2-е и когда привязываю ТХО идет 5-ть проводок.
Нормально! А в стартовом сообщении откуда взялосьtolctiy писал(а):Проводки к накладной идут в разрезе спецификаций, аналитика по МЦ в роди есть(если я правильно ее посмотрел. Ее смотреть в настройке самой ТХО(провобки)?).
И вообще, раз 5 проводок к двум позициям, то вряд ли существует жесткая связь между проводками и спецификацией. Определитесь, что для вас первично. И неплохо было бы вашу задачу сначала словами сформулировать, а уже потом просить искать ошибки в запросе. Не совсем понятно (думаю, не мне одному), что вы в итоге хотите получить.tolctiy писал(а):oborot.kauos[4]==katmc.nrec
-
- Местный житель
- Сообщения: 1846
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: Ярославская область ОАО "Часовой завод Чайка" г. Углич
- Контактная информация:
"...Задача состоит в том, чтобы выбрать все приходы от контрагентов с учетом счетов, субсчетов дебита/кредита..."
KATZ, быстрее всего ему нужна инфа по счету оприходования материалов, тем более о внешних накладных вроде как речь шла.
А вообще ,согласен. Условия задачи можно было почётче обрисовать )
KATZ, быстрее всего ему нужна инфа по счету оприходования материалов, тем более о внешних накладных вроде как речь шла.
А вообще ,согласен. Условия задачи можно было почётче обрисовать )
Такую ведомость реально сформировать?
Ведомость формируется на основе:
данных аналитического учёта производственных запасов и МБП о поступлении на склады ТМЦ от поставщиков, полученных из первичных документов – приходных ордеров;
данных аналитического учёта расчётов с поставщиками о предъявленных поставщиками и принятых к оплате счетах-фактурах;
бухгалтерских справок о проведении в учёте выявленных недостач при приёмке груза (независимо от того, оформлены или не оформлены данные недостачи актами), а также в пределах норм естественной убыли при транспортировке.
Ведомость формируется на основе:
данных аналитического учёта производственных запасов и МБП о поступлении на склады ТМЦ от поставщиков, полученных из первичных документов – приходных ордеров;
данных аналитического учёта расчётов с поставщиками о предъявленных поставщиками и принятых к оплате счетах-фактурах;
бухгалтерских справок о проведении в учёте выявленных недостач при приёмке груза (независимо от того, оформлены или не оформлены данные недостачи актами), а также в пределах норм естественной убыли при транспортировке.
tolctiy
Если честно, ясности не добавилось. Ваш SQL-запрос явно не покрывает все 3 пункта. Боюсь, что вашу задачу вообще не решить SQL-запросом, тут надо смотреть в сторону VIP-а. Первичные данные по 1-му пункту должны браться из ПСО в связке с приходными накладными, по 2-му - из приходных накладных в связке с ДО на закупку и с исходящими платежами к этим ДО, по 3-му - из бух. учета. Задача, как вы ее формулируете, - о-о-о-чень специфическая, под особенности вашего предприятия. Для начала подумайте, нельзя ли всё, что вам нужно, достать из данных бух. учета. Это упростило бы отчет + добавило бы ему логики и определенности. Постарайтесь избежать варианта, когда придется брать часть цифр из документов, а часть - из проводок, непременно сами запутаетесь.
Если честно, ясности не добавилось. Ваш SQL-запрос явно не покрывает все 3 пункта. Боюсь, что вашу задачу вообще не решить SQL-запросом, тут надо смотреть в сторону VIP-а. Первичные данные по 1-му пункту должны браться из ПСО в связке с приходными накладными, по 2-му - из приходных накладных в связке с ДО на закупку и с исходящими платежами к этим ДО, по 3-му - из бух. учета. Задача, как вы ее формулируете, - о-о-о-чень специфическая, под особенности вашего предприятия. Для начала подумайте, нельзя ли всё, что вам нужно, достать из данных бух. учета. Это упростило бы отчет + добавило бы ему логики и определенности. Постарайтесь избежать варианта, когда придется брать часть цифр из документов, а часть - из проводок, непременно сами запутаетесь.
А у вас учетные цены могут не отражать фактическую себестоимость? Т. е. заплатили при покупке, допустим, 100 руб., а оприходовали на склад на 200?стоимость приобретенных ТМЦ по учётным ценам и по фактической себестоимости
Судя по стартовому сообщению, в проводках есть аналитика по МЦ. Если взять первый запрос за основу, то могло бы быть как-то так:
StartDate, EndDate и PlanNRec сами впишете. OBOROT.kauos[4] взято из первого запроса, нужно будет уточнить, на каком уровне дебета или кредита аналитика по МЦ, или использовать функцию if(). Если нигде не опечатался, то должно работать.
Еще есть один "подводный камень". К одной приходной накладной теоретически может быть несколько ПСО, "Галактика" допускает оприходование одного документа на разные склады/МОЛы. Этим редко кто пользуется, но если у вас такие документы встречаются - запрос не будет правильно работать.
Здесь, как вы поняли, идем от приходных накладных, во-первых, к проводкам и, во-вторых, к остальным связанным документам. Можно, отталкиваясь от проводок, прийти сначала к накладным, а потом от них к остальным документам. В запросе совсем немного придется поменять. Но пусть это, а также сравнение вариантов и анализ их плюсов и минусов, останутся вам в качестве упражнения.
Код: Выделить всё
where
((
101==KATSOPR.vidsopr and
StartDate<<=KATSOPR.dopr and
EndDate>>=KATSOPR.dopr and
101==OBOROT.tidk and
KATSOPR.nrec==OBOROT.csoprdoc and
PlanNRec==OBOROT.cplanssch and
OBOROT.kauos[4]==KATMC.nrec and
OBOROT.ced==KATED.nrec and
KATSOPR.corg==KATORG.nrec and
KATSOPR.cstepdoc==STEPDOC.nrec and
KATSOPR.cbasedoc==BASEDOC.nrec and
KATSOPR.nrec==SKLORDER.csopr and
SKLORDER.cpodr==KATPODR.nrec and
SKLORDER.cmol==KATMOL.nrec
))
Еще есть один "подводный камень". К одной приходной накладной теоретически может быть несколько ПСО, "Галактика" допускает оприходование одного документа на разные склады/МОЛы. Этим редко кто пользуется, но если у вас такие документы встречаются - запрос не будет правильно работать.
Здесь, как вы поняли, идем от приходных накладных, во-первых, к проводкам и, во-вторых, к остальным связанным документам. Можно, отталкиваясь от проводок, прийти сначала к накладным, а потом от них к остальным документам. В запросе совсем немного придется поменять. Но пусть это, а также сравнение вариантов и анализ их плюсов и минусов, останутся вам в качестве упражнения.
KATZ
Извените что надоедаю, но я еще не очень селен в программировании.
Вопрос:
1. С какой таблицы по вашему запросу мне вытащить цену?
2. Если мне надо вытащить цену поставщика(из счета) и цену по ордеру
в запрос который приведен вами выше. Это не реально? Или запрос будет выводить по каждую позицию все проводки которые есть по документу(тоисть если 2-е МЦ и 3-и проводки, всего будет 6-ть позиций)?
Извените что надоедаю, но я еще не очень селен в программировании.
Вопрос:
1. С какой таблицы по вашему запросу мне вытащить цену?
2. Если мне надо вытащить цену поставщика(из счета) и цену по ордеру
в запрос который приведен вами выше. Это не реально? Или запрос будет выводить по каждую позицию все проводки которые есть по документу(тоисть если 2-е МЦ и 3-и проводки, всего будет 6-ть позиций)?
1. Из проводок. Опять же сужу по вашему первому запросу, там упоминались OBOROT.kol и OBOROT.ced==KATED.nrec. Значит, количественный учет ведется, и цена равна OBOROT.sumob/OBOROT.kol. Чтобы исключить деление на 0, сделайте проверку количества.
2. Вообще цена из проводки и цены из ордера/накладной/ДО - одно и то же (иногда за вычетом НДС, иногда с плюсом сопутствующих услуг, но это детали). Можно подтянуть спецификации ДО и ПСОНо данный запрос правильно сработает, только если в документе нет двух позиций с одинаковым наименованием. А в жизни такое бывает нередко. Если все-таки хотите работать одновременно с проводками и со спецификациями документов - изучайте VIP.
2. Вообще цена из проводки и цены из ордера/накладной/ДО - одно и то же (иногда за вычетом НДС, иногда с плюсом сопутствующих услуг, но это детали). Можно подтянуть спецификации ДО и ПСО
Код: Выделить всё
...
STEPDOC.nrec==SPSTEP.cstepdoc and
1==SPSTEP.prmc and
OBOROT.kauos[4]==SPSTEP.cmcusl and
SKLORDER.nrec==SPORDER.csklorder and
OBOROT.kauos[4]==SPORDER.cmc and
...