|
|
#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;
}Как сделать это правильно? |
|
|
|
|
#2 |
|
Модератор
|
Смотрите класс SalesLineType метод initFromInventTable
С Уважением, Георгий. Ps Я делал метод initFromInventJournalTrans на таблице SalesLine и юзал его. |
|
|
|
| За это сообщение автора поблагодарили: Petruccio (1). | |
|
|
#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;
} |
|
|
|
|
#4 |
|
Участник
|
На SalesLine заполнить СonfigID
|
|
|
|
|
#5 |
|
Участник
|
Цитата:
Сообщение от Lokis
На SalesLine заполнить СonfigID
и так... Для каждой номенклатуры (InventTable) проставляется группа складской аналитики (InventDimGroup). Группа складской аналитики определяет свойства складских аналитик для этой группы В том числе и обязательное указывание аналитики во всех операциях с номенклатурами, которые принадлежат к соответствующей группе складской аналитики. Как то: заказы, закупки, складские журналы и прочее...А так же есть возможность сделать обязательной аналитику только для конкретных операций. В Вашем случае у какой-то номенклатуры группа складской аналитики определяет обязательное указание конфигурации в строках заказа, и позовляет не указывать конфигурацию в строках складского журнала. Таким образом, надо определиться: 1) Либо разобраться с группами складской аналитики и настроить их как надо; 2) Таки указать какую-нибудь конфигурацию inventDim.ConfigId = CofigTable.ConfigId |
|
|
|
| За это сообщение автора поблагодарили: Petruccio (1). | |
|
|
#6 |
|
Участник
|
Всем спасибо! Вопрос решен. В журнале для номенклатуры не была указана конфигурация, поэтому не получалось.
|
|
|
|
|
#7 |
|
Участник
|
При копировании строк таким образом нужно ли добавлять что-нибудь или изменять в InventSum, InventTrans, InventSumLogTTS?
|
|
|
|
|
#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() ) |
|
|
|
|
#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() ) |
|
|
|
|
#10 |
|
Участник
|
Вообще-то, в методе insert() класса SalesLineType
есть такие строки: X++: numberSeq = NumberSeq::newGetNum(InventParameters::numRefInventTransId());
salesLine.inventTransId = numberSeq.num();
|
|
|
|
|
#11 |
|
Участник
|
нет. если вы не укажите специфических параметров для вставки записи, то обновление проводок, а потом и запасов в наличии пройдет автоматически.
|
|
|
|
|
#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.
|
|
|