|  26.02.2010, 11:59 | #1 | 
| Участник | Себестоимость проданного товара SQL запросом 
			
			Добрый день, Возникла "простая" задача: в процедуре на SQL-сервере получить себестоимость всех проданных товаров за период по всем складам (для начала). Предполагаю, что данные нужно брать как inventTrans.CostAmountPosted+inventTrans.CostAmountAdjustment. Есть custInvoiceTrans, которая связана с inventTrans по полям inventTransId и inventDimId. Какие условия нужно применить, чтобы получить верную информацию? | 
|  | 
|  26.02.2010, 12:52 | #2 | 
| Administrator | Цитата: 
		
			Сообщение от Prophetic
			   Добрый день, Возникла "простая" задача: в процедуре на 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 Т.о. если Вы планируете по этому запросу "сверяться" с ГК - то у Вас цифры могут не сойтись. Также, тут учтутся все возвраты по заказам на продажу. И если где-то не проставлен номер возвращенного лота - то возвраты будут учтены с нулевой ценой. При этом тут не учтутся прочие списания товара со склада (в результате недостачи к примеру или возвраты поставщикам). 
				__________________ Возможно сделать все. Вопрос времени | 
|  | |
| За это сообщение автора поблагодарили: Prophetic (1). | |
|  26.02.2010, 13:01 | #3 | 
| Administrator | 
			
			Да, и кстати - Вы по какой дате собирались фильтроваться? По физической или финансовой? Накладные CustInvoice* "датированы" финансовой (DateFinancial) датой. А вот реальный уход со склада произведен физической (DatePhysical) датой Просто в условие моего запроса нужно будет еще добавить статус расхода (StatusIssue), равный 1, если интересен статус Продано или 1 и 2, если еще и интересен статус Отпущено. 
				__________________ Возможно сделать все. Вопрос времени Последний раз редактировалось sukhanchik; 26.02.2010 в 13:05. | 
|  | 
|  26.02.2010, 13:20 | #4 | 
| КОРУС Консалтинг | 
			
			Если нужна точная себестоимость - то нужно обязательно брать InventSettlement - там лежат все коррекции по себестоимости с учетом даты проведения операции.
		 
				__________________ Misha Burachkov | 
|  | 
|  26.02.2010, 13:29 | #5 | 
| Ищущий знания... | Цитата: если я ошибаюсь, поправьте плиз   
				__________________ "Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с) С Уважением, Елизаров Артем | 
|  | 
|  26.02.2010, 13:39 | #6 | 
| КОРУС Консалтинг | Цитата: Учтите еще, что после закрытия склада себестоимость может поменяться и до и после закрытия один и то же запрос будет выдавать разный результат. 
				__________________ Misha Burachkov | 
|  | |
| За это сообщение автора поблагодарили: S.Kuskov (1), Prophetic (1). | |
|  26.02.2010, 13:48 | #7 | 
| Участник | Цитата: 
		
			Сообщение от sukhanchik
			   Да, и кстати - Вы по какой дате собирались фильтроваться? По физической или финансовой? Накладные CustInvoice* "датированы" финансовой (DateFinancial) датой. А вот реальный уход со склада произведен физической (DatePhysical) датой Просто в условие моего запроса нужно будет еще добавить статус расхода (StatusIssue), равный 1, если интересен статус Продано или 1 и 2, если еще и интересен статус Отпущено. | 
|  | 
|  26.02.2010, 13:50 | #8 | 
| Участник | Цитата: 
		
			Сообщение от MBurachkov
			   Не ошибаетесь, но ответ зависит от постановки вопроса. В InventTrans.CostAmountAdjustment  пишутся все коррекции независимо от того, когда они возникают и это удовлетворяет бизнес-пользователей в ответе на вопрос "какая себестоимость у проданного товара". А, вот, бухгалтера такой ответ не удовлетворит - т.к. коррекция себестоимости могла быть в другом периоде, поэтому для бухгалтерии коррекции нужно брать из InventSettlement.  Учтите еще, что после закрытия склада себестоимость может поменяться и до и после закрытия один и то же запрос будет выдавать разный результат. | 
|  | 
|  26.02.2010, 13:51 | #9 | 
| Участник | 
			
			При этом надо не забывать, что InventSettlement может чиститься стандартной процедурой, и, например, по очень старым периодам записей в таблице может не быть. Про какую версию системы был исходный вопрос? В AX 2009 EE добавили табличку для хранения остатков и себестоимости на дату. 
				__________________ Ivanhoe as is.. | 
|  | 
|  26.02.2010, 13:54 | #10 | 
| Участник | Цитата: 
		
			Сообщение от Ivanhoe
			   При этом надо не забывать, что InventSettlement может чиститься стандартной процедурой, и, например, по очень старым периодам записей в таблице может не быть. Про какую версию системы был исходный вопрос? В AX 2009 EE добавили табличку для хранения остатков и себестоимости на дату. | 
|  | 
|  26.02.2010, 14:02 | #11 | 
| Administrator | 
			
			Не нужен. А по поводу правильного алгоритма расчета коррекции - загляните в отчет InventTurnover_RU - там коррекция на дату правильно считается. Правда там код написан не очень корректно в плане того, что отчет тем дольше строится - чем больше записей в InventTrans. Но для того чтобы понять как связывать InventTrans и InventSettlement кода будет вполне достаточно. Только учтите, что данный отчет строится по физической, а не финансовой дате. 
				__________________ Возможно сделать все. Вопрос времени | 
|  | 
|  26.02.2010, 14:05 | #12 | 
| Administrator | 
			
			Конечно. В одном случае мы имеем актуальные данные. В другом случае - исторические.
		 
				__________________ Возможно сделать все. Вопрос времени | 
|  | 
|  26.02.2010, 14:10 | #13 | 
| КОРУС Консалтинг | Цитата: 
				__________________ Misha Burachkov | 
|  | 
|  26.02.2010, 14:14 | #14 | 
| КОРУС Консалтинг | Цитата: Из trans имеет смысл брать данные для бизнеса. Из Settlement для бухгалтерии. 
				__________________ Misha Burachkov | 
|  | 
|  26.02.2010, 14:16 | #15 | 
| Administrator | Цитата: 
		
			Сообщение от MBurachkov
			   В таблицах данные одинаковые. Уточняю на всякий случай: если из Trans брать данные за период, то  в него попадают корректировки из других периодов. Это не происходит при формировании коррекций из settlement. Из trans имеет смысл брать данные для бизнеса. Из Settlement для бухгалтерии. 
				__________________ Возможно сделать все. Вопрос времени | 
|  | 
|  26.02.2010, 14:39 | #16 | 
| Участник | Цитата: Но, для начала, нужно посчитать просто С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. | 
|  | 
|  26.02.2010, 14:47 | #17 | 
| КОРУС Консалтинг | Цитата: 
		
			Сообщение от 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 | 
|  | 
|  26.02.2010, 14:48 | #18 | 
| Moderator | Цитата: 1. Система может вычистить из inventSettlement отмененные и отменяющие закрытия/пересчеты (поскольку они и так не влияют на рассчет сальдо по проводке). 2. Система может несколько одинаковых по экономическому смыслу сопоставлений (одинаковые аналитики, счета, корресчета, разноски и ДАТЫ) одной складской проводки, схлопнуть в одну запись в inventSettlement. Так что записи в таблице сопоставлений ВСЕГДА есть если сумма коррекции в складской проводке не равна нулю. И ВСЕГДА можно плясать от суммы из сопоставлений, а не из исходной складской проводки. | 
|  | |
| За это сообщение автора поблагодарили: Ivanhoe (7), Prophetic (1). | |
|  26.02.2010, 14:53 | #19 | 
| Участник | |
|  | 
|  26.02.2010, 15:01 | #20 | 
| Участник | |
|  |