01.09.2006, 11:51 | #1 |
Участник
|
Копирование строк из InventJournalTrans в SalesLine
Как скопировать строки из InventJournalTrans в строки заказа.
Делаю так: Код: while select invJournalTrans where invJournalTrans.JournalId == "o_g_000011" { ttsbegin; salLine.SalesId = "Заказ00000010"; salLine.ItemId = invJournaltrans.ItemId; salLine.InventTransId = invJournaltrans.InventTransId; salLine.InventDimId = invJournaltrans.InventDimId; salLine.QtyOrdered = invJournaltrans.Qty; salLine.write(); ttscommit; } Как сделать это правильно? |
|
01.09.2006, 12:12 | #2 |
Модератор
|
Смотрите класс SalesLineType метод initFromInventTable
С Уважением, Георгий. Ps Я делал метод initFromInventJournalTrans на таблице SalesLine и юзал его. |
|
|
За это сообщение автора поблагодарили: Petruccio (1). |
01.09.2006, 12:58 | #3 |
Участник
|
Цитата:
Сообщение от George Nordic
Смотрите класс SalesLineType метод initFromInventTable
С Уважением, Георгий. Ps Я делал метод initFromInventJournalTrans на таблице SalesLine и юзал его. Код: InventJournalTrans invJournalTrans; SalesLine salesLine; InventDim inventDim; InventTable inventTable; InventItemBarcode inventItemBarcode; ; while select invJournalTrans where invJournalTrans.JournalId == "Ж00061" { ttsbegin; inventTable = InventTable::find(invJournaltrans.ItemId); inventDim = invJournaltrans.inventDim(); inventItemBarcode = InventItemBarcode::findSalesBarcode(inventTable.itemId); inventDim.inventLocationId = inventTable.salesInventLocationId(inventDim.inventLocationId); inventDim.configId = inventDim.configId ? inventDim.configId : inventTable.standardConfigId; inventDim.inventSizeId = inventDim.InventSizeId ? inventDim.InventSizeId : inventTable.standardInventSizeId; inventDim.inventColorId = inventDim.InventColorId ? inventDim.InventColorId : inventTable.standardInventColorId; inventDim.inventDimId = InventDim::findOrCreate(inventDim).inventDimId; salesLine.SalesId = "ЗК0024"; salesLine.ItemId = invJournaltrans.ItemId; salesLine.InventTransId = invJournaltrans.InventTransId; salesLine.inventDimId = InventDim.inventDimId; salesLine.projCategoryId = inventTable.projCategoryId; salesLine.setTaxItemGroup(inventTable.salesTaxItemGroupId()); salesLine.salesUnit = inventTable.salesUnitId(); salesLine.overDeliveryPct = inventTable.salesOverDeliveryPct(); salesLine.underDeliveryPct = inventTable.salesUnderDeliveryPct(); salesLine.initName(inventTable); salesLine.initFromCustExternalItemDescription(); salesLine.salesQty = invJournaltrans.Qty; salesLine.qtyOrdered = invJournaltrans.Qty; salesLine.costPrice = inventTable.costPcsPrice(invJournaltrans.InventDimId,inventDim); salesLine.priceUnit = inventTable.salesPriceUnit(); salesLine.lineAmount = 0; salesLine.lineAmountModified(); salesLine.barCode = inventItemBarcode.itemBarCode; salesLine.barCodeType = inventItemBarcode.barcodeSetupId; salesLine.dimension = Dimensions::findDimension(salesLine, inventTable, invJournaltrans.dimension); salesLine.setPriceDisc(inventDim); salesLine.calcPackingUnit(inventDim); salesLine.write(); ttscommit; } |
|
01.09.2006, 13:03 | #4 |
Участник
|
На SalesLine заполнить СonfigID
|
|
01.09.2006, 13:30 | #5 |
Участник
|
Цитата:
Сообщение от Lokis
На SalesLine заполнить СonfigID
и так... Для каждой номенклатуры (InventTable) проставляется группа складской аналитики (InventDimGroup). Группа складской аналитики определяет свойства складских аналитик для этой группы В том числе и обязательное указывание аналитики во всех операциях с номенклатурами, которые принадлежат к соответствующей группе складской аналитики. Как то: заказы, закупки, складские журналы и прочее... А так же есть возможность сделать обязательной аналитику только для конкретных операций. В Вашем случае у какой-то номенклатуры группа складской аналитики определяет обязательное указание конфигурации в строках заказа, и позовляет не указывать конфигурацию в строках складского журнала. Таким образом, надо определиться: 1) Либо разобраться с группами складской аналитики и настроить их как надо; 2) Таки указать какую-нибудь конфигурацию inventDim.ConfigId = CofigTable.ConfigId |
|
|
За это сообщение автора поблагодарили: Petruccio (1). |
01.09.2006, 13:56 | #6 |
Участник
|
Всем спасибо! Вопрос решен. В журнале для номенклатуры не была указана конфигурация, поэтому не получалось.
|
|
29.09.2006, 10:42 | #7 |
Участник
|
При копировании строк таким образом нужно ли добавлять что-нибудь или изменять в InventSum, InventTrans, InventSumLogTTS?
|
|
29.09.2006, 10:48 | #8 |
Участник
|
Ja ne ponimaju - pochemu vi tak delajete?
Код: salesLine.InventTransId = invJournaltrans.InventTransId U kazhdogo zhurnala dolzhna bit svoja provodka - tembolee SalesLine sam delajet nuzhie novije provodki, a tot kod sto vi vzjali iz zurnala budet delat' Collision s inventjournal-om. PS: SalesLine sam delajet update po InventSum (update() -> movement() -> updateNow() ) |
|
29.09.2006, 11:04 | #9 |
Участник
|
Цитата:
Сообщение от Delfins
Ja ne ponimaju - pochemu vi tak delajete?
Код: salesLine.InventTransId = invJournaltrans.InventTransId U kazhdogo zhurnala dolzhna bit svoja provodka - tembolee SalesLine sam delajet nuzhie novije provodki, a tot kod sto vi vzjali iz zurnala budet delat' Collision s inventjournal-om. PS: SalesLine sam delajet update po InventSum (update() -> movement() -> updateNow() ) |
|
29.09.2006, 11:11 | #10 |
Участник
|
Вообще-то, в методе insert() класса SalesLineType
есть такие строки: X++: numberSeq = NumberSeq::newGetNum(InventParameters::numRefInventTransId()); salesLine.inventTransId = numberSeq.num(); |
|
29.09.2006, 11:12 | #11 |
Участник
|
нет. если вы не укажите специфических параметров для вставки записи, то обновление проводок, а потом и запасов в наличии пройдет автоматически.
|
|
29.09.2006, 11:40 | #12 |
Участник
|
V principe nomer provodki daze objazatelno ne-ukaziavt'. Pust' sistema ob etom zabotitsja. tak kak eto novaja "zakupka" i dlja etogo ponadobjatsja novijie nomera provodok.
|
|