| 
			
			 | 
		#1 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
			
			
			Создание CustInvoiceJour, CustInvoiceSalesLink, CustInvoiceTrans from X++
			 
			
			День добрый. 
		
		
		
		
		
		
		
	Есть такая необходимость: на основании SalesOrders (и SalesLine) запостить (создать) инвойс с помощью X++. (Т.е. чтобы из самого Dynamics AX я смог выбрать свой ордер и просмотреть соответствующий ему инвойс с items в итоге). Все делается на Dynamics AX 2009! Что делаю я в X++? 1. создаю Sales Order ( ок ) 2. создаю Sales Line ( ок ) 3. делаю постинг Invoice следующим образом: X++: SalesFormLetter = SalesFormLetter::construct(DocumentStatus::Invoice, true); salesFormLetter.update(salesTable, SystemDateGet(), SalesUpdate::All, AccountOrder::None, false, true); 1. инвойс (запись в CustInvoiceJour) создается без InvoiceId, LedgerVoucher, ParmId 2. необходимые записи в таблицах CustInvoiceSalesLink and CustInvoiceTrans не создаются. Подскажите плиз, как решить данные проблемы? Заранее спасибо!  | 
| 
	
 | 
| 
			
			 | 
		#3 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Судя по коду разноски, вроде все делаете правильно. Поэтому предполагаю, что ошибка где-то в первых двух пунктах, или же неправильно (не до конца) настроена система (номерные серии??).
		 
		
		
		
		
		
		
			
		
		
		
		
	 | 
| 
	
 | 
| 
			
			 | 
		#4 | 
| 
			
			 MCITP 
		
			
	 | 
	
	
	
		
		
			
			 
			
			DmitrySincerity, 
		
		
		
		
		
		
			А вручную вы пробовали разносить эти созданные вам заказы? Всё ли получалось?  
		
				__________________ 
		
		
		
		
	Zhirenkov Vitaly  | 
| 
	
 | 
| 
			
			 | 
		#5 | 
| 
			
			 Участник 
		
			
	 | 
	
	|
| 
	
 | 
| 
			
			 | 
		#6 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
1. создание Sales Order: X++: NumberSeq = NumberSeq::newGetNumFromCode( SalesParameters::numRefSalesId().numberSequence); salesTable.SalesId = NumberSeq.num(); salesTable.CurrencyCode = "USD"; salesTable.CustGroup = "10"; salesTable.CustAccount = custAccount; salesTable.InvoiceAccount = custAccount; salesTable.SalesType = 3; salesTable.LanguageId = "en-us"; salesTable.ShippingDateRequested = SystemDateGet(); salesTable.SalesStatus = 1; salesTable.PostingProfile= "GEN"; salesTable.AddressRefRecId = 5637147107; salesTable.AddressRefTableId = 77; salesTable.initValue(); //salesTable.initFromCustTable(); salesTable.insert(); 2. создание Sales Line: X++: salesLine.clear(); salesLine.salesId = salesTable.SalesId; salesLine.ItemId = itemId; salesLine.LineAmount = 888; salesLine.ShippingDateRequested = SystemDateGet(); salesLine.ConfirmedDlv = SystemDateGet(); salesLine.InventDimId = "00008243_069"; salesLine.Name = "IN006"; salesLine.QtyOrdered = 1; salesLine.SalesQty = 1; salesLine.SalesPrice = 777; salesLine.SalesStatus = 3; salesLine.SalesType = 1; salesLine.CurrencyCode = "USD"; salesLine.CustGroup = "10"; salesLine.CustAccount = "ACC13"; salesLine.AddressRefRecId = salesTable.AddressRefRecId; salesLine.AddressRefTableId = 366; salesLine.SalesUnit = "Pcs"; salesLine.PriceUnit = 1; salesLine.LineNum = 1; salesLine.LineAmount = 888; salesLine.createLine(true, true,true,true,true, false); ![]() 3. постинг инвойса с вытекающими "приятными" последствиями: X++: SalesFormLetter = SalesFormLetter::construct(DocumentStatus::Invoice, true); salesFormLetter.update(salesTable, SystemDateGet(), SalesUpdate::All, AccountOrder::None, false, true);  | 
| 
	
 | 
| 
			
			 | 
		#7 | 
| 
			
			 Программатор 
		
			
	 | 
	
	
	
		
		
		
		 
			
			salesTable.initValue(); 
		
		
		
		
		
		
		
		
			не понравилось мне, что это стоит в конце, перед инсертом. После создания Sales Line не должен создаваться SalesParmLine . перед инсертами вызывайте if (table.validateWrite()) Последний раз редактировалось Sada; 15.12.2008 в 18:30.  | 
| 
	
 | 
| 
			
			 | 
		#8 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			предлагаете вставить после инсерта?
		 
		
		
		
		
		
		
		
	 | 
| 
	
 | 
| 
			
			 | 
		#9 | 
| 
			
			 Программатор 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Предлагаю вставить в самом начале.
		 
		
		
		
		
		
		
		
	 | 
| 
	
 | 
| 
			
			 | 
		#10 | 
| 
			
			 Программатор 
		
			
	 | 
	
	
	
		
		
		
		 
			
			После salesLine.clear(); 
		
		
		
		
		
		
		
	вызывать salesline.initformsalestable(salestable); + Вам почитать как создаются заказы на продажу на форуме нада  | 
| 
	
 | 
| 
			
			 | 
		#11 | 
| 
			
			 Участник 
		
			
	 | 
	
	|
| 
	
 | 
| 
			
			 | 
		#12 | 
| 
			
			 Программатор 
		
			
	 | 
	
	|
| 
	
 | 
| 
			
			 | 
		#13 | 
| 
			
			 Участник 
		
			
	 | 
	
	|
| 
	
 |