|  27.04.2021, 09:21 | #1 | 
| Участник | DFO365 зависает при смене склада в закупке 
			
			Привет! DFO365 зависает при смене склада в закупке, в которой более 500 строк. Вот такой код работает несколько часов для 500 строк. X++: purchTable.InventLocationId = 'XXXXXX'; //purchTable.modifiedField(fieldNum(PurchTable, InventLocationId)); purchTable.InventSiteId = InventLocation::find(purchTable.InventLocationId).InventSiteId; //purchTable.modifiedField(fieldNum(PurchTable, InventSiteId)); PurchTable2LineUpdatePrompt purchTable2LineUpdatePrompt = PurchTable2LineUpdatePrompt::newFromPurchTable(purchTable); purchTable.update(); PurchTable2LineUpdate purchTable2LineUpdate; purchTable2LineUpdate = PurchTable2LineUpdate::construct(purchTable2LineUpdatePrompt); purchTable2LineUpdate.parmUpdatePricedisc(NoYes::Yes); //пробовал ставить NoYes::No, но эффекта не дало purchTable2LineUpdate.parmUpdatePriceDiscMode(PriceDiscUpdatePriceDisc::KeepManualSystem); purchTable2LineUpdate.parmCopyTaxGroupToMarkupTrans(DialogButton::No); purchTable2LineUpdate.update(); Есть ли какой-то красивый способ поменять склад в шапке и строках закупки ? 
				__________________ Мои утилиты для Аксапты версий 3.0-2012: http://aceofdatabase.blogspot.com/ Последний раз редактировалось Ace of Database; 27.04.2021 в 09:24. | 
|  | 
|  27.04.2021, 10:01 | #2 | 
| Участник | 
			
			Заработало Удалось сделать вот так: X++: purchTable.InventLocationId = 'XXXXXX'; //purchTable.modifiedField(fieldNum(PurchTable, InventLocationId)); purchTable.InventSiteId = InventLocation::find(purchTable.InventLocationId).InventSiteId; //purchTable.modifiedField(fieldNum(PurchTable, InventSiteId)); purchTable.update(); while select forupdate purchLine where purchLine.PurchId == purchTable.PurchId exists join existInventDim where existInventDim.inventDimId == purchLine.InventDimId && existInventDim.InventLocationId != purchTable.InventLocationId { inventDim = purchLine.inventDim(); inventDim.InventLocationId = purchTable.InventLocationId; inventDim.InventSiteId = inventDim.inventLocation().InventSiteId; inventDim = InventDim::findOrCreate(inventDim); purchLine.InventDimId = inventDim.inventDimId; //purchLine.setInventDimId(inventDim.inventDimId); purchLine.update(); }  Теперь все отрабатывает за 10 минут, включая разноску накладной. 
				__________________ Мои утилиты для Аксапты версий 3.0-2012: http://aceofdatabase.blogspot.com/ | 
|  | 
|  27.04.2021, 10:12 | #3 | 
| Участник | 
			
			А в чём отличие от способа по старинке - что вы отключили связывание складской и фин аналитики сайт? В нём была проблема?
		 | 
|  | 
|  27.04.2021, 10:15 | #4 | 
| Участник | Цитата:   В этой моей задаче не надо пересчитывать цены. Только поменять склад. Я там в отладчике смотрел, какой-то ужас творится с налоговыми проводками по закупке, которая еще даже не утверждена. Возможно, она считает PurchTotals. 
				__________________ Мои утилиты для Аксапты версий 3.0-2012: http://aceofdatabase.blogspot.com/ | 
|  | 
|  27.04.2021, 14:23 | #5 | 
| Участник | 
			
			В D365 тоже долго считается сумма закупки\заказа, в котором несколько сотен строк ?
		 
				__________________ Дмитрий | 
|  | 
|  27.04.2021, 16:04 | #6 | 
| Участник | Цитата: Через связку PurchTable2LineUpdate - AXPurchLine реально одна строка по 10 секунд обрабатывалась. Но не каждая, некоторые строки быстро проскакивают. 
				__________________ Мои утилиты для Аксапты версий 3.0-2012: http://aceofdatabase.blogspot.com/ Последний раз редактировалось Ace of Database; 27.04.2021 в 16:08. | 
|  |