|
![]() |
#1 |
Administrator
|
Да, и кстати - Вы по какой дате собирались фильтроваться? По физической или финансовой?
Накладные CustInvoice* "датированы" финансовой (DateFinancial) датой. А вот реальный уход со склада произведен физической (DatePhysical) датой Просто в условие моего запроса нужно будет еще добавить статус расхода (StatusIssue), равный 1, если интересен статус Продано или 1 и 2, если еще и интересен статус Отпущено.
__________________
Возможно сделать все. Вопрос времени Последний раз редактировалось sukhanchik; 26.02.2010 в 13:05. |
|
![]() |
#2 |
Участник
|
Цитата:
Сообщение от sukhanchik
![]() Да, и кстати - Вы по какой дате собирались фильтроваться? По физической или финансовой?
Накладные CustInvoice* "датированы" финансовой (DateFinancial) датой. А вот реальный уход со склада произведен физической (DatePhysical) датой Просто в условие моего запроса нужно будет еще добавить статус расхода (StatusIssue), равный 1, если интересен статус Продано или 1 и 2, если еще и интересен статус Отпущено. |
|
![]() |
#3 |
Administrator
|
Не нужен. А по поводу правильного алгоритма расчета коррекции - загляните в отчет InventTurnover_RU - там коррекция на дату правильно считается.
Правда там код написан не очень корректно в плане того, что отчет тем дольше строится - чем больше записей в InventTrans. Но для того чтобы понять как связывать InventTrans и InventSettlement кода будет вполне достаточно. Только учтите, что данный отчет строится по физической, а не финансовой дате.
__________________
Возможно сделать все. Вопрос времени |
|
![]() |
#4 |
Участник
|
Цитата:
Но, для начала, нужно посчитать просто СostAmountPosted. Попробую обойтись без custInvoiceTrans. Я написал вот что: Код: set @DtBeg = N'01.12.2009' set @DtEnd = N'31.12.2009' select sum(itr.CostAmountPosted) from inventTrans itr where itr.TransType = 0 and itr.StatusIssue = 1 or itr.statusIssue=2 and itr.dateFinancial <=@DtEnd Поясню -- у меня есть отчет по продажам, сделанный в Axcision. Меня уверяют, что отчет верный. Я пытаюсь в запросе получить такие же данные. Последний раз редактировалось Prophetic; 26.02.2010 в 14:44. |
|
![]() |
#5 |
КОРУС Консалтинг
|
Цитата:
Сообщение от Prophetic
![]() Да, благодарю. Связывается по inventTable.RecID, если я правильно понял.
Но, для начала, нужно посчитать просто СostAmountPosted. Попробую обойтись без custInvoiceTrans. Я написал вот что: Код: set @DtBeg = N'01.12.2009' set @DtEnd = N'31.12.2009' select sum(itr.CostAmountPosted) from inventTrans itr where itr.TransType = 0 and itr.StatusIssue = 1 or itr.statusIssue=2 and itr.dateFinancial <=@DtEnd Поясню -- у меня есть отчет по продажам, сделанный в Axcision. Меня уверяют, что отчет верный. Я пытаюсь в запросе получить такие же данные.
__________________
Misha Burachkov |
|
![]() |
#6 |
Участник
|
|
|
![]() |
#7 |
КОРУС Консалтинг
|
Все что, вам нужно сделать - это повторить запрос Axcision - он ничего необычного не делает - строит ровно тот sql-запрос, которые вы хотите написать. Там куб разбит на несколько частей, каждая из которых отвечает за свою логику. Теперь нужно посмотреть, как идет выборка данных для показателя подсчета себестоимости.
__________________
Misha Burachkov |
|
![]() |
#8 |
Участник
|
|
|
![]() |
#9 |
КОРУС Консалтинг
|
В теории, наверное, можно (как минимум через профайлер SQL) но в данном случае вся логика описывается параметрически. Есть факт-таблицы и есть все связки между ними и все фильтры, накладываемые на таблицы + есть описание всех показателей и источники данных для них. На основании этого Axcision формирует sql-запрос.
__________________
Misha Burachkov |
|
![]() |
#10 |
Administrator
|
Цитата:
Цитата:
Иначе - косяк получится. Вы просуммируете все проводки в статусе Отпущено независимо от даты (т.к. 1900-й год заведомо раньше). Так что в Вашем запросе фразу or itr.statusIssue=2 лучше убрать
__________________
Возможно сделать все. Вопрос времени |
|
![]() |
#11 |
Участник
|
Цитата:
Сообщение от sukhanchik
![]() Да.
Ээээ.. Вы либо используете финансовую дату и используете StatusIssue = 1, либо используете физическую дату и используете StatusIssue = 1 or StatusIssue = 2. Иначе - косяк получится. Вы просуммируете все проводки в статусе Отпущено независимо от даты (т.к. 1900-й год заведомо раньше). Так что в Вашем запросе фразу or itr.statusIssue=2 лучше убрать |
|