| 
			
			 | 
		#1 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
			
			
			Ах2009 Запрос - ОСВ по складу
			 
			
			В одной из компаний не видятся проводки в таблице InventSettlenment c типом корректировка при формировании отчета Управление зарасами\проводка\Оборотная ведомость по складу. 
		
		
		
		
		
		
		
		
			Что интересно: В классе InventSumDateFinancialCalc_RU в методе calcTransFinancialSettlements считаются корректировки. Видит он это из [s] \Classes\InventSumDateFinancialCalc_RU\calcItem 13 [s] \Classes\InventSumDateFinancialCalc_RU\calcItems 16 [s] \Classes\InventSumDateFinancialCalc_RU\run 10 [s] \Classes\InventTurnoverReport_RU\calcTrans 3 [s] \Classes\InventTurnoverReport_RU\run 11 [s] \Classes\InventTurnoverReport_RU\main 8 [s] \Classes\MenuFunction\runServer [c] \Classes\FormFunctionButtonControl\Clicked Беру оборотку. Теретически в нее должен попасть персчет склада с типом Разноска в сальдо на начало периода (проблема анлогичная и с оборотами).. Не попадает. При этом если убрать условие settlement.SettleModel != InventSettleModel::PhysicalValue Начинает попадать. Только вопрос в том, что проводка итак Корректировка. Оставляю условие SettleModel и комментирую условие на начальную дату, проводка попадает. При этом попробовала добавить в группировку SettleModel. Проводка действительно Корректировка и все должно быть хорошо. Может есть какие-то дополнительные настройки? Последний раз редактировалось Arahnid; 16.02.2012 в 03:52.  | 
| 
	
 | 
| 
			
			 | 
		#2 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
		
			Сообщение от Arahnid
			 
 
			если убрать условие   
		
	settlement.SettleModel != InventSettleModel::PhysicalValue Начинает попадать. Только вопрос в том, что проводка итак Корректировка. Оставляю условие SettleModel и комментирую условие на начальную дату, проводка попадает. При этом попробовала добавить в группировку SettleModel. Проводка действительно Корректировка и все должно быть хорошо. Когда вы добавляли группировку по SettleModel случайно не появлялись отрицательные значения, которые могли бы объяснить возможное обнуления суммы? Хотя проверка на ноль - это только гипотеза, в реальности там может быть что-то ещё.  | 
| 
	
 | 
| 
			
			 | 
		#3 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Проверка на сумму там есть, но я вообще в этом цикле отключала все условия. 
		
		
		
		
		
		
		
		
			Оставляла 3: номенклатура, тип движения и начальная дата. Эффект тот же. Отключила условие на settlement.InventTransCurrency_RU == InventTransCurrency_RU::PrimaryCur все в том же классе InventSumDateFinancialCalc_RU в методе calcTransFinancialSettlements . Оставила остальные условия и заработало. InventTransCurrency_RU - эту колонку вижу в таблице inventsettlement. Делаю открыть таблицу черз аксапту - нет. Открываю СКУЛЬ. Смотрю колонки - нет такой. Глобальная компиляция не помогла. Что это за реквизит? Почему только в одной компании такая проблема не ясно. Двух валютный склад отключен. Последний раз редактировалось Arahnid; 16.02.2012 в 09:59.  | 
| 
	
 | 
| 
			
			 | 
		#4 | 
| 
			
			 Участник 
		
			
	 | 
	
	|
| 
	
 | 
| 
			
			 | 
		#5 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Так куда посмотреть. Проводки в inventsettlement в двух компаниях абсолютно идентичны по заполняемости реквизитов. Но в одной работает, а в другой нет..
		 
		
		
		
		
		
		
		
	 | 
| 
	
 | 
| 
			
			 | 
		#6 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Ну, собственно, в подобных случаях везде в коде делают проверку на тот факт, что необходимый ключ включен. Вероятно, именно в данном месте это сделать забыли. Надо просто добавить эту проверку примерно так 
		
		
		
		
		
		
			X++: Boolean isEnabledKey = global::isConfigurationkeyEnabled(configurationkeynum(InventClosingSecCur_RU)); while select ... ... && (! isEnabledKey || settlement.InventTransCurrency_RU == InventTransCurrency_RU::PrimaryCur) ... Хотя обычно подобная проверка выполняется при конструировании Query и это является признаком того, надо ли создавать дополнительный Range или нет. Для прямого select не вполне понятно как это сработает. PS: Если поле таблицы есть в AOT, но физически его не существует, то это явное указание на то, что отключен соответствующий ключ. 
				__________________ 
		
		
		
		
	- Может, я как-то неправильно живу?! - Отчего же? Правильно. Только зря...  | 
| 
	
 | 
| 
			
			 | 
		#7 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Не помогло условие на ключ.  
		
		
		
		
		
		
		
	Мне тогда проще строку комментировать, т.к. двухвалютного склада у нас нет и не будет  | 
| 
	
 | 
| 
			
			 | 
		#8 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			На всякий случай, а что, собственно, возвращает 
		
		
		
		
		
		
			X++: print global::isConfigurationkeyEnabled(configurationkeynum(InventClosingSecCur_RU)); pause; В смысле, ключ действительно отключен? Имею в виду, что по этому поводу "думает" Axapta именно в этой компании. 
				__________________ 
		
		
		
		
	- Может, я как-то неправильно живу?! - Отчего же? Правильно. Только зря...  | 
| 
	
 | 
| 
			
			 | 
		#9 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			А я в методе calcTransPhysicalSettlements класса InventSumDateFinancialCalc_RU наткнулся на то, что некорректно работала вот эта часть запроса (27-я строка в методе) :  
		
		
		
		
		
		
			X++: && positive * settlement.CostAmountAdjustment > 0 X++: && ( ( _positive && settlement.CostAmountAdjustment > 0) || ( !_positive && settlement.CostAmountAdjustment < 0 )) На всякий случай такое же изменение вставил и в метод calcTransFinancialSettlements. 
				__________________ 
		
		
		
		
	Дмитрий  | 
| 
	
 | 
| 
			
			 | 
		#10 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Damn, Аксапта не всегда правильно определяет порядок выполнения операторов. Возможно, в стандартном коде достаточно было просто расставить скобки.
		 
		
		
		
		
		
		
		
	 | 
| 
	
 | 
| 
			
			 | 
		#11 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
  Зная такое непредсказуемое поведение аксапты я перестраховался и на всякий случай решил в этом месте даже от умножения избавиться. От греха, так сказать.Ну то есть не "даже избавиться", а просто не напрягать аксапту таким сложным арифметическим действием в условиях запроса. И заменить его на понятные ей "скобки + логические операторы". 
				__________________ 
		
		
		
		
		
			Дмитрий Последний раз редактировалось Damn; 27.04.2012 в 22:48.  | 
| 
	
 | 
| 
			
			 | 
		#12 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Заглянул в Hotfix Rollup 8. Там это место не поправлено.
		 
		
		
		
		
		
		
			
				__________________ 
		
		
		
		
	Дмитрий  | 
| 
	
 | 
| Теги | 
| ax2009, select | 
| 
	
	 | 
	
| Опции темы | Поиск в этой теме | 
| Опции просмотра | |
		
  |