| 
			
			 | 
		#1 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
			
			
			Сторно заказа на продажу по ОС
			 
			
			Добрый день! 
		
		
		
		
		
		
		
	Столкнулся с проблемой, есть заказ на продажу, по которому продали ОС, статус у ОС установился на Списано (продажа). В следующем месяце, бухгалтерия захотела от сторнировать заказ, но по умолчанию в поле ОС, не возможно указать его номер, выходит ошибка: "Продать данное ОС нельзя" если посмотреть код, то можно увидеть, не совсем корректный поиск по таблице ОС: X++: if (ok && fieldId == fieldnum(SalesLine, AssetId_RU) && this.AssetId_RU && InventTable::find(this.ItemId).ItemType != ItemType::Service) //EB, SCR0010627 { ok = RAssetTable::find(this.ItemId).isOkToSell(this.creditNoteLine()); if (ok) { salesLineTmp = SalesLine::findAsset_RU(this.AssetId_RU, this.creditNoteLine()); if (salesLineTmp && salesLineTmp.RecId != this.RecId) { ok = checkFailed(strfmt("@FAV1297", salesLineTmp.SalesId)); } } } Исправил код: RAssetTable::find(this.ItemId) ошибка ушла, но теперь вышла, следующая, что нет на складе количества. Хотя у меня уже идет приход на склад. Хотел бы узнать, как должна работать система со сторно? Система DAX2009 RU5  | 
| 
	
 | 
| 
			
			 | 
		#2 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Указанная проверка должна отработать нормально только один раз  
		
		
		
		
		
		
		
	![]() X++: ok = RAssetTable::find(this.ItemId).isOkToSell(this.creditNoteLine()); X++: salesLineTmp = SalesLine::findAsset_RU(this.AssetId_RU, this.creditNoteLine()); if (salesLineTmp && salesLineTmp.RecId != this.RecId) ok = checkFailed(strfmt("@FAV1297", salesLineTmp.SalesId)); Потому вопрос... сколько раз сторнировали? Или в строках несколько номенклатур привязанных к одному ОС? Обойдя эту "умную" проверку идем далее... Попадаем в SalesFormLetter_Invoice метод updateNow и видим следующее... X++: // <GEEU> if (salesLine.AssetId_RU) { assetInvent = new InventMov_AssetSale_ru(salesLine); if (assetInvent.canDisposal()) { estimated = InventUpd_Estimated::newInventMovement(assetInvent); estimated.updateNow(); inventUpd_Financial = InventUpd_Financial::newPostAsset_RU(assetInvent, ledgerVoucher); inventUpd_Financial.parmCurrencyCode(CompanyInfo::standardCurrency()); inventUpd_Financial.updateNow(); } } // </GEEU> inventMovement = InventMovement::construct(salesLine); Цитата: 
	
		
			но теперь вышла, следующая, что нет на складе количества. Хотя у меня уже идет приход на склад
		
	 
Класс движения: InventMov_AssetSale_ru, который должен выполнить какие-то действия помимо inventMovement = InventMovement::construct(salesLine); что мне непонятно... Заглянув в new InventMov_AssetSale_ru видим: X++: if (_salesLine.creditNoteLine()) { select firstonly inventTransOrig where inventTransOrig.InventTransId == _salesLine.InventTransId && inventTransOrig.StatusReceipt == StatusReceipt::Ordered && inventTransOrig.StatusIssue == StatusIssue::None; transQty = -1; } else { select firstonly inventTransOrig where inventTransOrig.InventTransId == _salesLine.InventTransId && inventTransOrig.StatusIssue == StatusIssue::OnOrder && inventTransOrig.StatusReceipt == StatusReceipt::None; transQty = 1; } Поменял... сторно разнеслось... но теперь не разноситья продажа... ![]() Понимаю, что ничего не понимаю... поставил transQty = 1 и для сторно и для не сторно... Все разноситься... и сторно и не сторно, но проверял только для номенклатур с типом ОС (ItemType::Asset_RU) с одной строкой, при этом есть один нюанс... сторно в ГК ложится с разными ваучерами... по счетам ОС (01, 02) со старым ваучером продажи... сторно продаж с новым...   В ОС вроде тоже все нормально...Получилось лечение последствия методом ненаучного тыка... без понимания сути происходящего, если кто может объяснить буду благодарен...  | 
| 
	
 | 
|
| За это сообщение автора поблагодарили: vazerdim (1), mnt_dx (3). | |
| 
			
			 | 
		#3 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			ansoft, спасибо за ответ, если ещё глянуть руководство пользователя, то там предлагают сделать сторно выбытия через модуль ОС, в проводках там есть такая кнопка, сегодня попробовал с помощью неё сделать сторно, но получилось, что если в ГК и модуле ОС все отсторнировалось, то в модуле Клиенты нет. Не понимаю, как должно быть на самом деле.  
		
		
		
		
		
		
		
	Ответы на вопросы: Сторнируем мы первый раз. Одна номенклатура, один ОС в заказе.  | 
| 
	
 | 
| 
			
			 | 
		#4 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			1) в форме проводок по моделям ОС жмете сторно на проводке по продаже ОС. 
		
		
		
		
		
		
			2) Выручку и налог сторнируете отдельно через текстовую накладную или через заказ на покупку с строкой-услугой. 
				__________________ 
		
		
		
		
	 
			 | 
| 
	
 |