| 
			
			 | 
		#1 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
			
			
			Автозаполнение строк в журнале
			 
			
			Люди подскажите как это правильнее реализовать: 
		
		
		
		
		
		
		
	Стоит задача сделать автозаполнение строк в скласких журналах на основании выбранной складской аналитики (т.е. пользователь выбирает Склад и МОЛ жмет ОК и ему в журнал попадает все что висит на этой складской аналитике)! Причем наличие считать не на конкретную дату, а так как считает сама Аксапта (абстрагированно от дат, например как в LookUp-форме для контрола Склад на закладке Аналитика любого складского журнала). реализовал запрос вида: SELECT SUM(Qty), inventDimId, ItemId FROM InventTrans GROUP BY InventTrans.ItemId, InventTrans.inventDimId JOIN * FROM InventDim WHERE InventTrans.inventDimId = InventDim.inventDimId AND ((InventLocationId = X)) AND ((inventMOLId = Y)) однако данные разнятся с Аксаптой... почему?  | 
| 
	
 | 
| 
			
			 | 
		#2 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			А зачем ты используешь InventTrans, если текущие остатки лежат в InventSum, а для получения остатков в разрезе дат есть специальные классы, например: 
		
		
		
		
		
		
		
	http://axapta.mazzy.ru/lib/inventsumdate/  | 
| 
	
 | 
| 
			
			 | 
		#3 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			ну вот пошел по пути складских проводок  
		
		
		
		
		
		
		
	 , что не правильный ход??а что касается разреза дат, то мне как раз дату учитывать НЕ надо, надо так как рассчитывает наличие сама Аксапта.  | 
| 
	
 | 
| 
			
			 | 
		#4 | 
| 
			
			 NavAx 
		
			
	 | 
	
	
	
		
		
		
		 
			
			В вашем запросе нужно фильтровать только приходы и расходы, т.е должен быть еще такой фильтр: 
		
		
		
		
		
		
		
		
			X++: inventTrans.packingSlipReturned == 0 && (inventTrans.statusReceipt == StatusReceipt::Purchased || inventTrans.statusIssue == StatusIssue::Sold); Последний раз редактировалось Roman777; 17.10.2006 в 09:56. Причина: Исправил ошибку.  | 
| 
	
 | 
| 
			
			 | 
		#5 | 
| 
			
			 program-ёр 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
  во второй строке || (или)
		
				__________________ 
		
		
		
		
	Становись лучше  | 
| 
	
 | 
|
| За это сообщение автора поблагодарили: Roman777 (1). | |
| 
			
			 | 
		#6 | 
| 
			
			 NavAx 
		
			
	 | 
	
	|
| 
	
 | 
|
| За это сообщение автора поблагодарили: kvg6 (1). | |
| 
			
			 | 
		#7 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			У меня такое же задание было.. использовал именно InventSum + #InventDimJoin ... Работает всё, как надо. По проводкам лучше не лазить.
		 
		
		
		
		
		
		
		
	 | 
| 
	
 | 
| 
			
			 | 
		#8 | 
| 
			
			 Участник 
		
			
	 | 
	
	|
| 
	
 | 
| 
			
			 | 
		#9 | 
| 
			
			 NavAx 
		
			
	 | 
	
	|
| 
	
 | 
| 
			
			 | 
		#10 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			в классах все прекрасно, НО я так и не могу понять никак одну вещь. а именно... 
		
		
		
		
		
		
		
	Во всех классах этих используется ItemId, так вот где его брать??? мне что перебирать ВСЕ номенклатурные единицы и подставлять в этот класс??? БРЕД. Тогда получается надо делать while select... по таблице InventTrans или InventSum c ограничениями по складу и по МОЛу, и потом передавать в класс... НО какой тогда в этом смысл, если все сводится все равно к запросу по одной из таблиц?  | 
| 
	
 | 
| 
			
			 | 
		#12 | 
| 
			
			 NavAx 
		
			
	 | 
	
	|
| 
	
 | 
| 
			
			 | 
		#13 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Я же говорю, InventSum + #InventDimJoin работает прекрасно.  
		
		
		
		
		
		
		
	Код: while select InventSum
              where InventSum.AvailPhysical       > 0
/* dimension criteria */
#InventDimJoin(InventSum.inventDimId,inventDimSum,inventDimCriteria,InventDimParm)
{
} | 
| 
	
 | 
|
| За это сообщение автора поблагодарили: sparur (1). | |
| 
			
			 | 
		#14 | 
| 
			
			 Участник 
		
			
	 | 
	
	|
| 
	
 | 
| 
			
			 | 
		#15 | 
| 
			
			 Участник 
		
			
	 | 
	
	|
| 
	
 | 
| 
			
			 | 
		#16 | 
| 
			
			 Member 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
		
			Сообщение от sparur
			
			 
... 
		
	мне что перебирать ВСЕ номенклатурные единицы и подставлять в этот класс??? ... Если нужны текущие остатки, то брать только не закрытые физически. Если остатки на дату, то все. 
				__________________ 
		
		
		
		
	С уважением, glibs®  | 
| 
	
 | 
| 
			
			 | 
		#17 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
Не видите вигрыша в производительности между перебором в таблице номенклатур и в таблице проводок? Ну, как скажете. Согласен с glibs.  | 
| 
	
 | 
| 
			
			 | 
		#18 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 Код: static void Job10(Args _args)
{
    InventSum       InventSum;
    inventDim       inventDimSum;
    inventDim       inventDimCriteria;
    InventDimParm   InventDimParm;
    ;
    inventDimCriteria.clear();
    inventDimCriteria.InventLocationId = 'VN';
    InventDimParm.initFromInventDim(inventDimCriteria);
    while select InventSum
    where InventSum.AvailPhysical > 0
    /* dimension criteria */
    #InventDimJoin(InventSum.inventDimId,inventDimSum,inventDimCriteria,InventDimParm)
    {
        trace("%1 - %2 (%3)",InventSum.ItemId,InventSum.AvailPhysical,InventSum.InventDimId);
    }
} | 
| 
	
 | 
| 
			
			 | 
		#19 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
  я не вижу смысла особого в использовании классов когда скажем дата достаточно поздняя, получается тоже самое (если не хуже) что и ограниченный запрос по складским проводкам, хотя... конечно спорно все это... эмпирика нужна  ...
		 | 
| 
	
 | 
| 
			
			 | 
		#20 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
		
			Сообщение от Delfins
			 
 
			Код: static void Job10(Args _args)
{
    InventSum       InventSum;
    inventDim       inventDimSum;
    inventDim       inventDimCriteria;
    InventDimParm   InventDimParm;
    ;
    inventDimCriteria.clear();
    inventDimCriteria.InventLocationId = 'VN';
    InventDimParm.initFromInventDim(inventDimCriteria);
    while select InventSum
    where InventSum.AvailPhysical > 0
    /* dimension criteria */
    #InventDimJoin(InventSum.inventDimId,inventDimSum,inventDimCriteria,InventDimParm)
    {
        trace("%1 - %2 (%3)",InventSum.ItemId,InventSum.AvailPhysical,InventSum.InventDimId);
    }
}  но теперь просто зацепило и хочется все таки через классы реализовать  
		 | 
| 
	
 |