12.10.2018, 11:53 | #1 |
Участник
|
Статичность записи...
Есть скрипт, который должен при срабатывании Event Handlera брать определенную запись из таблицы и на ее основании создавать новую запись в этой же таблице. Но поля, которые я пытаюсь менять в методе run() - не меняются и остаются как в исходной записи.
Сам код: X++: class ServiceOrderCopyHandler_VG { static SMAServiceOrderId so; static SMAServiceOrderTable orderTable; SMAServiceOrderTable orderTableNew; static SmaServiceOrderTableCopy construct(args _args) { return new SmaServiceOrderTableCopy(); } static void main(Args _args) { SmaServiceOrderTableCopy smaServiceOrderTableCopy; ; _args.record(orderTable); if (!_args || _args.dataset() != tablenum(SMAServiceOrderTable)) throw error(error::missingRecord(funcName())); smaServiceOrderTableCopy = SmaServiceOrderTableCopy::construct(_args); smaServiceOrderTableCopy.parmOrderTable(_args.record()); smaServiceOrderTableCopy.run(); } public SMAServiceOrderTable parmOrderTable(SMAServiceOrderTable _orderTable = orderTable) { orderTable = _orderTable; return orderTable; } public void run() { SMAServiceOrderLine orderLine = SMAServiceOrderLine::find(so, 1); SMAServiceOrderLine orderLineNew; orderTableNew.clear(); buf2Buf(orderTable,orderTableNew); orderTableNew.initValue(); orderTableNew.Description = 'qqqqq'; orderTableNew.ActivityNumber = ''; orderTableNew.CompletePercent = 0; orderTableNew.ServiceOrderId = NumberSeq::newGetNum(SMAParameters::numRefServiceOrderId()).num(); orderTableNew.insert(); while select orderLine where orderLine.ServiceOrderId == orderTable.ServiceOrderId { orderLineNew.clear(); buf2Buf(orderLine,orderLineNew); orderLineNew.initValue(); orderLineNew.ServiceOrderId = orderTableNew.ServiceOrderId; orderLineNew.ActivityId = ''; orderLineNew.ProjTransId = ''; orderLineNew.Description = 'qqqqqqqqqq'; orderLineNew.insert(); } SMAServiceOrderId oldServiceOrderId = orderTable.ServiceOrderId; if (orderTable.isFormDataSource()) { FormDataSource formDS; formDS = orderTable.dataSource(); formDS.research(); formDS.positionToRecordByValue(fieldnum(SMAServiceOrderTable, RecId), queryValue(orderTableNew.RecId)); } info(strfmt("@SMAServiceOrder:OrderDuplicated", oldServiceOrderId, orderTableNew.ServiceOrderId),"", SysInfoAction_TableField::newBufferField(orderTableNew, fieldnum(SMAServiceOrderTable, ServiceOrderId))); } [DataEventHandler(tableStr(DataEntity1), DataEventType::Updated)] public static void DataEntity1_onUpdated(Common sender, DataEventArgs e) { DataEntity1 spentity = sender as DataEntity1; so = spentity.ServiceOrderId; orderTable = SMAServiceOrderTable::find(so); Args args = new Args(); args.record(sender); ServiceOrderCopyHandler_VG::main(args); } } |
|
|
|