| 
			
			 | 
		#1 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
			
			 
			
			Уважаемый All, есть маленькая проблема. 
		
		
		
		
		
		
			Необходимо разработать оборотно-сальдовую ведомость, в которой обороты разрезаются по нескольким дополнительным аналитикам, например - по датам, по номенклатурным группам. При этом необходим режим "Только итоги по номенклатурным группам", или "Только итоги по датам". В стандартном SQL - это просто GROUP BY. В Аксапта при генерации отчета тоже можно поставить признак "Только итоги". Единственное ограничение - результирующий набор должен извлекаться одним Query. В MS SQL я могу написать оборотно сальдовую одним SQL-запросом: select ItemId, NameAlias, (select (sum(AvailPhysical) from InventSum S where S.ItemId = N.ItemId) as SaldoNow, (select sum(Qty) from InventTrans T where T.ItemId = N.ItemId and DatePhysical < @DateBegin and StatusReceipt > 0) as Obr1In, (select sum(Qty) from InventTrans T where T.ItemId = N.ItemId and DatePhysical < @DateBegin and StatusIssue > 0) as Obr1Out, ... SaldoNow - Obr1In + Obr1Out as SaldoBegin, ...... from InventTable N; Принцип понятен. Используются вложенные запросы. Каждый вложенный запрос я могу оформить отдельной функцией, тогда оборотку можно будет извлечь так: select ItemId, NameAlias, SaldoBegin(ItemId, @DateBegin), ObrIn(ItemId, @DateBegin, @DateEnd), ObrOut(ItemId, @DateBegin, @DateEnd), SaldoEnd(ItemId, @DateEnd), from InventTable; Такой запрос можно джойнить к дополнительным таблицам и получать отчеты с группировками с помощью стандартного Query. Вопрос - такое возможно в Аксапта ? Я просто смотрел код оборотки - там используется цикл, а сальдо и обороты извлекаются отдельными запросами. Соответственно - все промежуточныи итоги и группировки надо програмить явно. А это - очень грустно. Хочется простого и универсального механизма. Заранее благодарен за рассмотрение. 
				__________________ 
		
		
		
		
	С уважением, Евгений.  | 
| 
	
 | 
| 
			
			 | 
		#2 | 
| 
			
			 NavAx 
		
			
	 | 
	
	
	
		
		
			
			
			Re: Оборотно-сальдовая одним запросом ???
			 Цитата: 
	
		
			Изначально опубликовано stavteam  
Вопрос - такое возможно в Аксапта ? Цитата: 
	
		
			 Хочется простого и универсального механизма.
		
	 
P.S. "Оборотно сальдовая ведомость по складу", порочное наследие с тех времен, когда в аксапте никто толком не разбирался. И вообще, поосторожнее с кодом, имеющим суффикс RU ;-) 
				__________________ 
		
		
		
		
	Isn't it nice when things just work?  | 
| 
	
 | 
| 
			
			 | 
		#3 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
			
			
			Re: Re: Оборотно-сальдовая одним запросом ???
			 Цитата: 
	
		
			Изначально опубликовано macklakov  
Да, возможно Механизм запросов в аксапте, достаточно универсальный и не слишком сложный, но это не TSQL. P.S. "Оборотно сальдовая ведомость по складу", порочное наследие с тех времен, когда в аксапте никто толком не разбирался. И вообще, поосторожнее с кодом, имеющим суффикс RU ;-) 
				__________________ 
		
		
		
		
	С уважением, Евгений.  | 
| 
	
 | 
| 
			
			 | 
		#4 | 
| 
			
			 NavAx 
		
			
	 | 
	
	
	
		
		
			
			
			Re: Re: Re: Оборотно-сальдовая одним запросом ???
			 Цитата: 
	
		
			Изначально опубликовано stavteam  
не будете ли столь добры ответить - а как же эту простую и порочную вещь сделать средствами Аксапта ? 
				__________________ 
		
		
		
		
	Isn't it nice when things just work?  | 
| 
	
 | 
| 
			
			 | 
		#5 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Мой скромный опыт программирования запросв в Axapta (чуть ментьше 2 лет) подсказывает мне что операции группировки и объединения таблиц в Axapta не перестановочны. Т.е. я хочу сказать, что сначала сгруппировать записи в таблицах а потом их объеденить с помощью простого механизма нельзя. Единственный приемлемый способ который я для себя придумал состоит в следующем: результаты вложенных запросов (с группировках) сохраняем во временной таблице, а затем объединяем эти временные таблицы. Если у кого-то есть более приемлимые варианты буду рад их узнать.
		 
		
		
		
		
		
		
		
	 | 
| 
	
 | 
| 
			
			 | 
		#6 | 
| 
			
			 NavAx 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
		
			Изначально опубликовано Ю-ю  
Мой скромный опыт программирования запросв в Axapta (чуть ментьше 2 лет) подсказывает мне что операции группировки и объединения таблиц в Axapta не перестановочны. Т.е. я хочу сказать, что сначала сгруппировать записи в таблицах а потом их объеденить с помощью простого механизма нельзя. Единственный приемлемый способ который я для себя придумал состоит в следующем: результаты вложенных запросов (с группировках) сохраняем во временной таблице, а затем объединяем эти временные таблицы. Если у кого-то есть более приемлимые варианты буду рад их узнать.   Вы имеете в виду, что нельзя к одной таблице привязать несколько таблиц с группировками?
		
				__________________ 
		
		
		
		
	Isn't it nice when things just work?  | 
| 
	
 | 
| 
			
			 | 
		#7 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Господа, я не могу в Query задавать вычисляемые поля, которые будут являться подзапросами. В этом вся проблема. Или можно методы таблицы включать в результирующий набор ? Если это так - то спасибо, попробую.  
		
		
		
		
		
		
			 
		
				__________________ 
		
		
		
		
	С уважением, Евгений.  | 
| 
	
 | 
| 
			
			 | 
		#8 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			И это тоже, но общий принцип можно сформулировать примерно следующим образом. 
		
		
		
		
		
		
		
	С помощью механизма Query и оператора select нельзя таблицы сначала сгруппировать, а затем объединить (если я ошибаюсь, пусть меня поправят).  | 
| 
	
 | 
| 
			
			 | 
		#9 | 
| 
			
			 NavAx 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Совсем запутался, какие вычисляемые поля, какие подзапросы, зачем? Рассмотрим  построение отчета на основе вашего запроса: 
		
		
		
		
		
		
			1. Строим запрос, в таблицах InventSum и InventTrans задаем агрегатные поля. 2. Создаем переменные, которые будем отображать и display методы для них 3. Переопределяем executeQuery на секции дизайна, а в нем из QueryRun, методами getNo() вынимаем из запроса таблицы и значения полей присваиваем нашим переменным. 4. Набрасываем display методы в дизайн. Вот собственно и все. 
				__________________ 
		
		
		
		
	Isn't it nice when things just work?  | 
| 
	
 | 
| 
			
			 | 
		#10 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
		
			Изначально опубликовано macklakov  
P.S. "Оборотно сальдовая ведомость по складу", порочное наследие с тех времен, когда в аксапте никто толком не разбирался. И вообще, поосторожнее с кодом, имеющим суффикс RU ;-) И в чем же заключается проблемма(ы)? спрашиваю не из праздного любопытства, мы активно пользуемся ОСВ по складу и прочими запросами с суффиксом RU, причем некоторые модифицированы  | 
| 
	
 | 
| 
			
			 | 
		#11 | 
| 
			
			 злыдень 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
		
			Сообщение от stavteam
			
			 
Вопрос - такое возможно в Аксапта ? 
		
	Я просто смотрел код оборотки - там используется цикл, а сальдо и обороты извлекаются отдельными запросами. Соответственно - все промежуточныи итоги и группировки надо програмить явно. А это - очень грустно. Хочется простого и универсального механизма. Заранее благодарен за рассмотрение. Цитата: 
	
		
			Сообщение от stavteam
			
			 
Хочется простого и универсального механизма. 
		
	Кстати, судя по навыкам в скуле Вас должен порадовать MS reporting services 
				__________________ 
		
		
		
		
		
			Ибо зло есть лучшая сила человека. "Человек должен становиться все лучше и злее" -- так учу я. /Ф. Ницше/ Последний раз редактировалось Recoilme; 15.05.2006 в 15:37.  | 
| 
	
 | 
| 
			
			 | 
		#12 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Подумайте, прежде чем такой запрос пытаться осуществить (на MS-SQL). У него большая вероятность получить несогласованные данные, либо надолго заблокировать работу большого кол-ва пользователей. Как не неприятен ручной механизм получения данных, он все-же позволит избежать узких мест. 
		
		
		
		
		
		
		
	С уважением, itfs.  | 
| 
	
 | 
| 
			
			 | 
		#13 | 
| 
			
			 Administrator 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Вообще, прежде всего надо определиться, что конкретно Вы понимаете под оборотами и сальдо в приложении к Аксапте. Обратите внимание, что в Аксапте есть физическое и финансовое движение, даты которых могут быть расположены совершенно произвольно друг относительно друга. Кроме того, в Аксапте есть два вида возвратов: по отборочной накладной и по инвойсу. Посмотрите, как эти возвраты обрабатываются стандартными отчетами по статусу склада. Вообще, разберитесь для начала с этими отчетами. Ведь в конечном итоге одним из основных критериев правильности Вашего отчета будет соответствие остатков по складу на начало и конец отчетного периода значениям в стандартных отчетах.
		 
		
		
		
		
		
		
			
				__________________ 
		
		
		
		
	Not registered yet? Register here! Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me  | 
| 
	
 | 
| 
			
			 | 
		#14 | 
| 
			
			 Гость 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
		
			Сообщение от Ю-ю
			
			 
И это тоже, но общий принцип можно сформулировать примерно следующим образом. 
		
	С помощью механизма Query и оператора select нельзя таблицы сначала сгруппировать, а затем объединить (если я ошибаюсь, пусть меня поправят).  | 
| 
	
 | 
| 
			
			 | 
		#15 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			А как получить остаток на начало периода, остаток на конец периода,себестоимость (такое же поле как и в стандартном отчете ОСВ) , если я иду по InventTrans,но оборотов за данный период не было?? Заранее благодарен.
		 
		
		
		
		
		
		
		
	 | 
| 
	
 | 
| 
			
			 | 
		#16 | 
| 
			
			 Administrator 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Тогда, очевидно, Остаток на конец периода = Остаток на начало периода = Остаток на конец предыдущего периода, в котором были обороты. Себестоимости, соответственно, тоже равны.
		 
		
		
		
		
		
		
			
				__________________ 
		
		
		
		
	Not registered yet? Register here! Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me  | 
| 
	
 | 
| 
			
			 | 
		#17 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			2MaximGorbunov: Да это очевидно и для меня. Просто вопрос в том из какой таблицы вытащить остаток на начало и себестоимость. Можно ли из InventSum (если да, то на какую дату ориентироваться), или придется из InventTrans брать сумму до определенного периода CostAmountAdjastmеnt+ CostAmount****(какое втoрое точно не помню так как дома нохожусь и Аксапты нет под рукой)???
		 
		
		
		
		
		
		
		
	 | 
| 
	
 | 
| 
			
			 | 
		#18 | 
| 
			
			 Administrator 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Теоритически, можно и так, и так. На практике: смотрите классы InventSumPhysical и InventSumFinancial.
		 
		
		
		
		
		
		
			
				__________________ 
		
		
		
		
	Not registered yet? Register here! Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me  | 
| 
	
 |