| 
			
			 | 
		#1 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
			
			 
			
			В аксапте расчет остатков (допустим финансовых) на конкретную дату производистся 
		
		
		
		
		
		
		
	следующим образом: 1. Получаем остатки и себестоимость по товару из InventSum на текущий момент 2. Отнимаем из полученных данных данные по документам, обработанным после даты, на которую надо получить остатки. Данная процедура реализована в классе Class\InventSumFinancial\setValueQty Для получения физических остатков на текущий момент, т.е. с учетом проведенных накладных, необходимо после получения финансовых остатков, скорректировать их на величину сумм по этим проведенным накладным (прибавить приход и отнять расход.   )Есть два пути: 1. собрать проводки напрямую из InventTrans: select sum(costAmountPhysical), sum(qty) from inventTrans index hint TransIdIdx where inventTrans.itemId == itemId && inventTrans.configId == configId && inventTrans.dateFinancial > perDate 2. Как это сделано Class\InventSumFinancial\setValueQty сначала идти по физическим проводкам из InventTransPosting и, затем по InventTrans select tableId from inventTransPosting index hint ItemTypeDateIdx where inventTransPosting.itemId == itemId && inventTransPosting.configId == configId && inventTransPosting.inventTransPostingType == InventTransPostingType::Physical && inventTransPosting.transDate > perDate join sum(costAmountPhysical),sum(qty) from inventTrans index hint TransIdIdx where inventTrans.voucherPhysical == inventTransPosting.voucher && inventTrans.datePhysical == inventTransPosting.transDate && inventTrans.inventTransId == inventTransPosting.inventTransId && inventTrans.packingSlipReturned == NoYes::No Только не ищите ошибки в select-ах, это для примера ![]() Кто-нибудь может сказать принципиальную разницу в этих двух подходах? Предположительно, какая форма должна быстрее работать? Во втором варианте используется индекс ItemTypeDateIdx в InventTransPosting насколько это увеличивет скорость работы select при получении данных за период?  | 
| 
	
 | 
| 
			
			 | 
		#2 | 
| 
			
			 Administrator 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Сразу оговорюсь, что могу ошибаться, поэтому дальнейшее прошу рассматривать только как идею. 
		
		
		
		
		
		
			В таблице InventTransPosting хранится связь складских проводок с бухгалтерскими. В InventTrans храняться все проводки. Таким образом, в первом случае Вы подсчитываете реальное (физическое) количество остатков, а во втором Вы учитываете только количество проведенное по бухгалтерии. Посмотрите на таблицу InventSum обратите внимание на колонки Received (Получено) и Deducted (Отпущено). Именно на эти значения будут отличаться остатки, подсчитанные первым и вторым способом. Во втором случае Вы выбираете некоторое подмножество записей, выбираемых в первом. Из этого, в принципе, можно заключить, что второй работает быстрее, но если учесть специфику индексированных запросов, то это может оказаться и не так. В принципе, проанализировать не сложно, а если не охота делать это теоритически, вставьте таймеры в код (кстати, такой метод оценки производительности использовался и разработчиками Axapta: посмотрите, например, комментарии в методе updateData класса ReqCalculation). 
				__________________ 
		
		
		
		
	Not registered yet? Register here! Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me  | 
| 
	
 | 
| 
			
			 | 
		#3 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Привет! 
		
		
		
		
		
		
			Цитата: 
	
		
			Изначально опубликовано max  
Таким образом, в первом случае Вы подсчитываете реальное (физическое) количество остатков, а во втором Вы учитываете только количество проведенное по бухгалтерии. Что же будет работать быстрее? Конечно же, второй подход - с вычитанием. Причем чем больше будет данных, тем больше будет разница в скорости. Разве нет? 
				__________________ 
		
		
		
		
	С уважением, Андрей Беседин  | 
| 
	
 | 
| 
			
			 | 
		#4 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			max, ты не прав. 
		
		
		
		
		
		
			
		
		
		
		
	inventTrans хранит проводки по складу. InventTransPosting хранит информацию о документах, которые инициировали появление и разноску записей в inventTrans. Теперь внимание. Проводки в inventTrans с одинаковым лотом (InventTransID) могут суммироваться и разбиваться. См. Управление запасами \ Запросы \ Проводки \ Функции \ Суммирование или разбиение. В этом случае информация о документах-оригиналах останется в inventTransPosting. В inventTransPosting можно найти ссылки на бух.документы. НО inventTransPosting это не только бухгалтреские документы. Андрей. Все зависит от того что тебе нужно. Насколько я понимаю, InventTransPosting проверяется всегда. Насколько я понимаю, это правильно. Разницу ты ощутишь когда проводки будут разделяться и/или суммироваться. Разница в суммах также проявится после закрытия склада (когда появятся коррекции по складу) Насколько я понимаю, если тебя интересует ТОЛЬКО количество, то можно выбирать только InventTrans. Если же тебя интересует и сумма, то надо проверять InventTrans вместе с InventTransPosting.  | 
| 
	
 | 
| 
			
			 | 
		#5 | 
| 
			
			 Administrator 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
		
			Изначально опубликовано max  
Сразу оговорюсь, что могу ошибаться, поэтому дальнейшее прошу рассматривать только как идею.  
		
				__________________ 
		
		
		
		
	Not registered yet? Register here! Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me  | 
| 
	
 | 
| 
	
	 | 
	
			 
			Похожие темы
		 | 
	||||
| Тема | Ответов | |||
| Расчет ЕСН | 1 | |||
| Оборотная ведомость по складу | 8 | |||
| Как организовать среднюю себестоимость по разделенному складу | 27 | |||
| Неправильный расчет отпускных листов | 1 | |||
| Русская локализация Axapta 3 ? | 59 | |||
		
  |