![]() |
#6 |
Участник
|
Да, верно, забыл указать версию. AX 4.0 SP2 международный функционал.
А вот собственно и код. Получаем строку файла в контейнер, проверяем её. Если проверка true, то выполняется след. код. Дальше всё повторяется до самого конца файла. X++: void SalesHeaderCreation(Container _Data_Container) { SalesTable SH; SalesLine SL; InventTable IT; CustTable CT; SalesTableType SalesTableType; Boolean IncreaseLineNo; SalesType SalesType; //Заказ на продажу/Возвраты : 3/4 NumberSeq NumberSeq; InventDim InventDim; SysDim JurFace; InventLocation InventLocation; NumberSequenceCode SeriesNum; NumberSequenceReference NumberSequenceReference; ReturnActionDefaults ReturnActionDefaults; #define.Return("Возврат") #define.Sells("Продажа") #define.KZT("ТНГ") #define.VAT0("НДС0") #define.VATWOUT("БЕЗНДС") #define.VATTRUE("НДС ТРУ") ; // СОЗДАЕМ ЗАГОЛОВОК ДОКУМЕНТА, если предыдущий номер был такой же if (PreviousDocNoSm != conpeek(_Data_Container,3)) { //нужен новый номер документа. ttsbegin; SH.initValue(); NumberSeq = NumberSeq::newGetNum(NumberSeqReference::findReference(typeId2ExtendedTypeId(typeid(SalesId))), true); SH.SalesId = NumberSeq.num(); PreviousDocNoSm = conpeek(_Data_Container,3); PreviousDocNoAx = SH.SalesId; LineNo = 1; //Номер строки в таблице строк SH.SalesType = 3; JurFace = conpeek(_Data_Container,23); SH.CustAccount = conpeek(_Data_Container,5); //Счет клиента SH.initFromCustTable(); SH.SalesStatus = 1; //Открытый заказ if (conpeek(_Data_Container,6)=="да") { SH.InclTax = true; } else { SH.InclTax = false; } SH.CurrencyCode = conpeek(_Data_Container,10); //Валюта if (!SH.CurrencyCode) SH.CurrencyCode = #KZT; //Валюта SH.ShippingDateRequested = str2date(conpeek(_Data_Container,2),123); //Дата отгрузки SH.ReceiptDateRequested = SH.ShippingDateRequested; sh.FixedDueDate = str2date(conpeek(_Data_Container,9),123); SH.DlvMode = strfmt(conpeek(_Data_Container,7)); //Способ оплаты SH.PaymMode = conpeek(_Data_Container,8); //Способ поставки SH.Dimension[1] = JurFace; //Юр Лицо SH.Dimension[5] = 'ДА'; SH.insert(); increaseLineNo = false; ttscommit; } else { increaseLineNo = true; } // СОЗДАЕМ СТРОКИ ДОКУМЕНТА через PreviousDocNo ttsbegin; Select firstfast * from SH where SH.SalesId == PreviousDocNoAx; JurFace = SH.Dimension[1]; SL.clear(); SL.initValue(); SL.SalesId = PreviousDocNoAx; If (IncreaseLineNo) {LineNo+=1;} else {LineNo=1;} SL.LineNum=LineNo; SL.ItemId = conpeek(_Data_Container,11); //Номенклатура Номер Select firstfast * from IT index hint ItemIdx where IT.ItemId == SL.ItemId; SL.initFromSalesTable(SH); SL.initFromCustTable(); InventDim.initValue(); InventDim.inventLocationId = conpeek(_Data_Container,12); InventDim = InventDim::findOrCreate(InventDim); SL.InventDimId = InventDim.inventDimId; switch (conpeek(_Data_Container,20)) { case "0" : SL.TaxItemGroup = #VAT0; break; case "Нет" : SL.TaxItemGroup = #VATWOUT; break; default : //SL.TaxItemGroup = #VATTRUE; break; } SL.LedgerAccount = conpeek(_Data_Container,22); SL.Dimension[1] = SH.Dimension[1]; SL.SalesQty = conpeek(_Data_Container,13); //Количество. if (SL.SalesQty > 0) { SL.QtyOrdered = SL.SalesQty; SL.RemainSalesPhysical = SL.SalesQty; } SL.createLine(true,true,true,true,false,false,true,false,SL.InventTransId); SL.ChangeCreatedDateLine(str2date(conpeek(_Data_Container,2),123)); SL.lineAmount = conpeek(_Data_Container,18); //Чистая сумма ТМЦ select firstfast ReturnActionDefaults; if (conpeek(_Data_Container,1)==#Return) SL.ReturnActionId = ReturnActionDefaults.ReturnActionId; Sl.QtyOrdered = Sl.SalesQty; SL.ReceiptDateRequested = str2date(conpeek(_Data_Container,2),123); SL.ShippingDateRequested = SL.ReceiptDateRequested; SL.update(); ttscommit; } |
|
|
За это сообщение автора поблагодарили: maximka (1). |
Теги |
asciio, createline, заказ, затяжка, скорость |
|
|