AXForum  
Zurück   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Kennwort vergessen?
Registrieren Forum Rules Hilfe Benutzerliste Heutige Beiträge Suchen Alle Foren als gelesen markieren

 
 
Themen-Optionen Thema durchsuchen Ansicht
Alt 26.02.2010, 11:59   #1  
Prophetic ist offline
Prophetic
Участник
 
113 / 15 (1) ++
Registriert seit: 08.12.2009
Себестоимость проданного товара SQL запросом
Добрый день,

Возникла "простая" задача: в процедуре на SQL-сервере получить себестоимость всех проданных товаров за период по всем складам (для начала).
Предполагаю, что данные нужно брать как inventTrans.CostAmountPosted+inventTrans.CostAmountAdjustment.
Есть custInvoiceTrans, которая связана с inventTrans по полям inventTransId и inventDimId.
Какие условия нужно применить, чтобы получить верную информацию?
Alt 26.02.2010, 12:52   #2  
sukhanchik ist offline
sukhanchik
Administrator
Benutzerbild von sukhanchik
MCBMSS
Злыдни
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3.342 / 3563 (125) ++++++++++
Registriert seit: 13.06.2004
Ort: Москва
Zitat:
Zitat von Prophetic Beitrag anzeigen
Добрый день,

Возникла "простая" задача: в процедуре на SQL-сервере получить себестоимость всех проданных товаров за период по всем складам (для начала).
Предполагаю, что данные нужно брать как inventTrans.CostAmountPosted+inventTrans.CostAmountAdjustment.
Есть custInvoiceTrans, которая связана с inventTrans по полям inventTransId и inventDimId.
Какие условия нужно применить, чтобы получить верную информацию?
"Простое" решение:
SELECT SUM(CostAmountPosted) + SUM(CostAmountAdjustment) FROM INVENTRANS
WHERE TRANSTYPE = 0 -- Заказ на продажу

Но. Ключевое слово "За период". Так Вы получите только текущую себестоимость, т.е. с учетом всех введенных коррекций и накладных расходов.
Т.е., строя запрос на 01.01.10 Вы получите себестоимость уже с учетом накладных расходов, которые допустим были введены 01.02.10
Т.о. если Вы планируете по этому запросу "сверяться" с ГК - то у Вас цифры могут не сойтись.

Также, тут учтутся все возвраты по заказам на продажу. И если где-то не проставлен номер возвращенного лота - то возвраты будут учтены с нулевой ценой.
При этом тут не учтутся прочие списания товара со склада (в результате недостачи к примеру или возвраты поставщикам).
__________________
Возможно сделать все. Вопрос времени
This post has been rated by: Prophetic (1).
Alt 26.02.2010, 13:01   #3  
sukhanchik ist offline
sukhanchik
Administrator
Benutzerbild von sukhanchik
MCBMSS
Злыдни
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3.342 / 3563 (125) ++++++++++
Registriert seit: 13.06.2004
Ort: Москва
Да, и кстати - Вы по какой дате собирались фильтроваться? По физической или финансовой?
Накладные CustInvoice* "датированы" финансовой (DateFinancial) датой.
А вот реальный уход со склада произведен физической (DatePhysical) датой
Просто в условие моего запроса нужно будет еще добавить статус расхода (StatusIssue), равный 1, если интересен статус Продано или 1 и 2, если еще и интересен статус Отпущено.
__________________
Возможно сделать все. Вопрос времени

Geändert von sukhanchik (26.02.2010 um 13:05 Uhr)
Alt 26.02.2010, 13:20   #4  
MBurachkov ist offline
MBurachkov
КОРУС Консалтинг
КОРУС Консалтинг
 
23 / 14 (1) ++
Registriert seit: 18.12.2001
Ort: Санкт-Петербург
Если нужна точная себестоимость - то нужно обязательно брать InventSettlement - там лежат все коррекции по себестоимости с учетом даты проведения операции.
__________________
Misha Burachkov
Alt 26.02.2010, 13:29   #5  
lev ist offline
lev
Ищущий знания...
Benutzerbild von lev
Oracle
MCBMSS
Axapta Retail User
 
1.723 / 491 (20) +++++++
Registriert seit: 18.01.2005
Ort: Москва
Zitat:
Zitat von MBurachkov Beitrag anzeigen
Если нужна точная себестоимость - то нужно обязательно брать InventSettlement - там лежат все коррекции по себестоимости с учетом даты проведения операции.
на сколько мне известно, коррекция себестоимости записывается в поле CostAmountAdjustment в InventTrans, поэтому брать InventSettlement лишнее...

если я ошибаюсь, поправьте плиз
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с)
С Уважением,
Елизаров Артем
Alt 26.02.2010, 13:39   #6  
MBurachkov ist offline
MBurachkov
КОРУС Консалтинг
КОРУС Консалтинг
 
23 / 14 (1) ++
Registriert seit: 18.12.2001
Ort: Санкт-Петербург
Zitat:
Zitat von lev Beitrag anzeigen
на сколько мне известно, коррекция себестоимости записывается в поле CostAmountAdjustment в InventTrans, поэтому брать InventSettlement лишнее...

если я ошибаюсь, поправьте плиз
Не ошибаетесь, но ответ зависит от постановки вопроса. В InventTrans.CostAmountAdjustment пишутся все коррекции независимо от того, когда они возникают и это удовлетворяет бизнес-пользователей в ответе на вопрос "какая себестоимость у проданного товара". А, вот, бухгалтера такой ответ не удовлетворит - т.к. коррекция себестоимости могла быть в другом периоде, поэтому для бухгалтерии коррекции нужно брать из InventSettlement.
Учтите еще, что после закрытия склада себестоимость может поменяться и до и после закрытия один и то же запрос будет выдавать разный результат.
__________________
Misha Burachkov
This post has been rated by: S.Kuskov (1), Prophetic (1).
Alt 26.02.2010, 13:48   #7  
Prophetic ist offline
Prophetic
Участник
 
113 / 15 (1) ++
Registriert seit: 08.12.2009
Zitat:
Zitat von sukhanchik Beitrag anzeigen
Да, и кстати - Вы по какой дате собирались фильтроваться? По физической или финансовой?
Накладные CustInvoice* "датированы" финансовой (DateFinancial) датой.
А вот реальный уход со склада произведен физической (DatePhysical) датой
Просто в условие моего запроса нужно будет еще добавить статус расхода (StatusIssue), равный 1, если интересен статус Продано или 1 и 2, если еще и интересен статус Отпущено.
По финансовой дате. А custInvoiceTrans тогда вообще не нужен?
Alt 26.02.2010, 13:50   #8  
Prophetic ist offline
Prophetic
Участник
 
113 / 15 (1) ++
Registriert seit: 08.12.2009
Zitat:
Zitat von MBurachkov Beitrag anzeigen
Не ошибаетесь, но ответ зависит от постановки вопроса. В InventTrans.CostAmountAdjustment пишутся все коррекции независимо от того, когда они возникают и это удовлетворяет бизнес-пользователей в ответе на вопрос "какая себестоимость у проданного товара". А, вот, бухгалтера такой ответ не удовлетворит - т.к. коррекция себестоимости могла быть в другом периоде, поэтому для бухгалтерии коррекции нужно брать из InventSettlement.
Учтите еще, что после закрытия склада себестоимость может поменяться и до и после закрытия один и то же запрос будет выдавать разный результат.
Вопрос интересный. Отчет, к примеру, берется за прошлый год, за месяц. Год и месяц закрыли. И получается, что по двум этим разным таблицам будет разный результат?
Alt 26.02.2010, 13:51   #9  
Ivanhoe ist offline
Ivanhoe
Участник
Benutzerbild von Ivanhoe
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
4.143 / 2161 (81) +++++++++
Registriert seit: 29.09.2005
Ort: Санкт-Петербург
При этом надо не забывать, что InventSettlement может чиститься стандартной процедурой, и, например, по очень старым периодам записей в таблице может не быть.

Про какую версию системы был исходный вопрос? В AX 2009 EE добавили табличку для хранения остатков и себестоимости на дату.
__________________
Ivanhoe as is..
Alt 26.02.2010, 13:54   #10  
Prophetic ist offline
Prophetic
Участник
 
113 / 15 (1) ++
Registriert seit: 08.12.2009
Zitat:
Zitat von Ivanhoe Beitrag anzeigen
При этом надо не забывать, что InventSettlement может чиститься стандартной процедурой, и, например, по очень старым периодам записей в таблице может не быть.

Про какую версию системы был исходный вопрос? В AX 2009 EE добавили табличку для хранения остатков и себестоимости на дату.
AX 4.0
Alt 26.02.2010, 14:02   #11  
sukhanchik ist offline
sukhanchik
Administrator
Benutzerbild von sukhanchik
MCBMSS
Злыдни
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3.342 / 3563 (125) ++++++++++
Registriert seit: 13.06.2004
Ort: Москва
Zitat:
Zitat von Prophetic Beitrag anzeigen
По финансовой дате. А custInvoiceTrans тогда вообще не нужен?
Не нужен. А по поводу правильного алгоритма расчета коррекции - загляните в отчет InventTurnover_RU - там коррекция на дату правильно считается.
Правда там код написан не очень корректно в плане того, что отчет тем дольше строится - чем больше записей в InventTrans. Но для того чтобы понять как связывать InventTrans и InventSettlement кода будет вполне достаточно.

Только учтите, что данный отчет строится по физической, а не финансовой дате.
__________________
Возможно сделать все. Вопрос времени
Alt 26.02.2010, 14:05   #12  
sukhanchik ist offline
sukhanchik
Administrator
Benutzerbild von sukhanchik
MCBMSS
Злыдни
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3.342 / 3563 (125) ++++++++++
Registriert seit: 13.06.2004
Ort: Москва
Zitat:
Zitat von Prophetic Beitrag anzeigen
Вопрос интересный. Отчет, к примеру, берется за прошлый год, за месяц. Год и месяц закрыли. И получается, что по двум этим разным таблицам будет разный результат?
Конечно. В одном случае мы имеем актуальные данные. В другом случае - исторические.
__________________
Возможно сделать все. Вопрос времени
Alt 26.02.2010, 14:10   #13  
MBurachkov ist offline
MBurachkov
КОРУС Консалтинг
КОРУС Консалтинг
 
23 / 14 (1) ++
Registriert seit: 18.12.2001
Ort: Санкт-Петербург
Zitat:
Zitat von lev Beitrag anzeigen
на сколько мне известно, коррекция себестоимости записывается в поле CostAmountAdjustment в InventTrans, поэтому брать InventSettlement лишнее...

если я ошибаюсь, поправьте плиз
Zitat:
Zitat von Prophetic Beitrag anzeigen
Вопрос интересный. Отчет, к примеру, берется за прошлый год, за месяц. Год и месяц закрыли. И получается, что по двум этим разным таблицам будет разный результат?
В таблицах данные будут одинаковые. Я хотел сказать, что не забудте, что после закрытия склада себестоимость поменяется. Сегодня пользователь распечатал отчет и увидел маржу, завтра вы закрыли склад и маржа поменялась - пользователь прибежит с криками, что у него вчера была одна цифра, а сегодня другая.
__________________
Misha Burachkov
Alt 26.02.2010, 14:14   #14  
MBurachkov ist offline
MBurachkov
КОРУС Консалтинг
КОРУС Консалтинг
 
23 / 14 (1) ++
Registriert seit: 18.12.2001
Ort: Санкт-Петербург
Zitat:
Zitat von sukhanchik Beitrag anzeigen
Конечно. В одном случае мы имеем актуальные данные. В другом случае - исторические.
В таблицах данные одинаковые. Уточняю на всякий случай: если из Trans брать данные за период, то в него попадают корректировки из других периодов. Это не происходит при формировании коррекций из settlement.
Из trans имеет смысл брать данные для бизнеса. Из Settlement для бухгалтерии.
__________________
Misha Burachkov
Alt 26.02.2010, 14:16   #15  
sukhanchik ist offline
sukhanchik
Administrator
Benutzerbild von sukhanchik
MCBMSS
Злыдни
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3.342 / 3563 (125) ++++++++++
Registriert seit: 13.06.2004
Ort: Москва
Zitat:
Zitat von MBurachkov Beitrag anzeigen
В таблицах данные одинаковые. Уточняю на всякий случай: если из Trans брать данные за период, то в него попадают корректировки из других периодов. Это не происходит при формировании коррекций из settlement.
Из trans имеет смысл брать данные для бизнеса. Из Settlement для бухгалтерии.
А... в такой постановке согласен.
__________________
Возможно сделать все. Вопрос времени
Alt 26.02.2010, 14:39   #16  
Prophetic ist offline
Prophetic
Участник
 
113 / 15 (1) ++
Registriert seit: 08.12.2009
Zitat:
Zitat von sukhanchik Beitrag anzeigen
Не нужен. А по поводу правильного алгоритма расчета коррекции - загляните в отчет InventTurnover_RU - там коррекция на дату правильно считается.
Только учтите, что данный отчет строится по физической, а не финансовой дате.
Да, благодарю. Связывается по inventTable.RecID, если я правильно понял.

Но, для начала, нужно посчитать просто СostAmountPosted. Попробую обойтись без custInvoiceTrans. Я написал вот что:
Code:
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. Меня уверяют, что отчет верный. Я пытаюсь в запросе получить такие же данные.

Geändert von Prophetic (26.02.2010 um 14:44 Uhr)
Alt 26.02.2010, 14:47   #17  
MBurachkov ist offline
MBurachkov
КОРУС Консалтинг
КОРУС Консалтинг
 
23 / 14 (1) ++
Registriert seit: 18.12.2001
Ort: Санкт-Петербург
Zitat:
Zitat von Prophetic Beitrag anzeigen
Да, благодарю. Связывается по inventTable.RecID, если я правильно понял.

Но, для начала, нужно посчитать просто СostAmountPosted. Попробую обойтись без custInvoiceTrans. Я написал вот что:
Code:
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. Меня уверяют, что отчет верный. Я пытаюсь в запросе получить такие же данные.
Посмотрите в настройках куба Axcision связки факт-таблиц и то, какую именно себестоимость хотят получить пользователи.
__________________
Misha Burachkov
Alt 26.02.2010, 14:48   #18  
fed ist offline
fed
Moderator
Benutzerbild von fed
Ex AND Project
Соотечественники
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
2.913 / 5736 (197) ++++++++++
Registriert seit: 13.03.2002
Ort: Hüfingen,DE
Zitat:
Zitat von Ivanhoe Beitrag anzeigen
При этом надо не забывать, что InventSettlement может чиститься стандартной процедурой, и, например, по очень старым периодам записей в таблице может не быть.
При чистке сопоставлений стандартной процедурой:
1. Система может вычистить из inventSettlement отмененные и отменяющие закрытия/пересчеты (поскольку они и так не влияют на рассчет сальдо по проводке).
2. Система может несколько одинаковых по экономическому смыслу сопоставлений (одинаковые аналитики, счета, корресчета, разноски и ДАТЫ) одной складской проводки, схлопнуть в одну запись в inventSettlement.

Так что записи в таблице сопоставлений ВСЕГДА есть если сумма коррекции в складской проводке не равна нулю. И ВСЕГДА можно плясать от суммы из сопоставлений, а не из исходной складской проводки.
This post has been rated by: Ivanhoe (7), Prophetic (1).
Alt 26.02.2010, 14:53   #19  
Prophetic ist offline
Prophetic
Участник
 
113 / 15 (1) ++
Registriert seit: 08.12.2009
Zitat:
Zitat von MBurachkov Beitrag anzeigen
Посмотрите в настройках куба Axcision связки факт-таблиц и то, какую именно себестоимость хотят получить пользователи.
В Кубе привязывается inventTransPosting по полю voucher и InventTransId, а также таблица sales По полю salesid=TransRefId
Alt 26.02.2010, 15:01   #20  
Prophetic ist offline
Prophetic
Участник
 
113 / 15 (1) ++
Registriert seit: 08.12.2009
Zitat:
Zitat von fed Beitrag anzeigen
Так что записи в таблице сопоставлений ВСЕГДА есть если сумма коррекции в складской проводке не равна нулю. И ВСЕГДА можно плясать от суммы из сопоставлений, а не из исходной складской проводки.
Т.е. "правильно" использовать именно таблицу сопоставлений.
Stichworte
себестоимость

 

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Denis Fedotenko: Себестоимость и закрытие склада Blog bot DAX: База знаний и проекты 44 29.03.2010 14:54
Зачистка товара. Себестоимость vey DAX: Функционал 17 16.02.2007 10:48
Помогите с SQL запросом malex DAX: Программирование 8 26.07.2005 13:43
Себестоимость проданного товара Hamster DAX: Функционал 3 12.08.2004 16:02
Физическая себестоимость товара Алексей Контев DAX: Функционал 5 22.08.2002 20:18
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Gehe zu

Рейтинг@Mail.ru
Alle Zeitangaben in WEZ +3. Es ist jetzt 08:49 Uhr.
Powered by vBulletin® Version 3.8.5 (Deutsch)
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.