|  13.02.2008, 16:01 | #1 | 
| Участник | Создание скл проводок при закр склада (AX 3 SP2). 
			
			Изначально есть складская проводка (InventTrans): Qty CostAmountPosted CostAmountAdjustment всего QtySettled CostAmountSettled ValueOpen 1800 17228,13 1757,27 18985,4 1761 18574,05 Да с количеством 1800, из которых сопоставлено и закрыто проводок по количеству 1761 и сумме 18574,05. После того, как по этой номенклатуре отработает закрытие склада, происходит разделение исходной проводки на две: Qty CostAmountPosted CostAmountAdjustment всего QtySettled CostAmountSettled ValueOpen 1761 16854,85 1719,19 18574,04 1761 18574,05 Да 39 373,28 38,08 411,36 37 390,27 Да сумма: 18985,4 (в более аккуратном виде эти проводки во вложении ) 1.По первой из них сумма CostAmountPosted и CostAmountAdjustment получается на копейку меньше, чем сопоставленная сумма, в следствии чего сия проводка так и остается открытой! 2.Сумма второй проводки получается на копейку больше, в результате чего при сопоставлении одна из открытых расходных проводок корректируется на эту копейку и создается проводка на -0.01. Примечание: ВСЕ эти проводки обработаны пересчетом складских остатков, поэтому я рассчитывал, что закрытие склада не будет порождать новые коррекции и соответственно менять счета. Вопрос: 1.Некая логика в таком расщеплении проводок есть - почему бы и нет. Но смущает: - полученный результат, а именно открытая из-за копейки приходная проводка и появившаяся коррекция  - я не встречал в доках упоминаний о подобной тактике Я не нашел кода, который выполнял бы создание новых складских проводок. До сих пор был уверен, что закрытие и пересчет склада только модифицирует складские проводки. Заранее благодарен за помощь   | 
|  | 
|  13.02.2008, 16:38 | #2 | 
| Участник | 
			
			Если проводка расщипилась - значит они каким-то значением отличаются - не можете сказать каким? А еще лучше - привидите проводки целиком, исходную и две новые. Последний раз редактировалось petr; 13.02.2008 в 16:49. | 
|  | 
|  13.02.2008, 17:09 | #3 | 
| Участник | 
			
			Во вложении xls файлик с проводками.
		 | 
|  | 
|  13.02.2008, 17:15 | #4 | 
| Участник | 
			
			Тогда еще вопрос. Что произойдет, если принудительно объединить складские проводки в одну (функции - суммирование) на форме складских проводок? Должны бы в одну объединиться, можете пропробовать (ничего страшного произойти не должно, все равно вы на копии работаете)
		 | 
|  | 
|  13.02.2008, 17:49 | #5 | 
| Участник | 
			
			Изначально проводка была смаркирована с лотом ЛН0055574 (поле InventRefTransId) на количество 1761. Поэтому проводка разделилась на две записи. Из оставшихся 39 сопоставилось 37.
		 | 
|  | 
|  13.02.2008, 17:49 | #6 | 
| Участник | 
			
			Сталкивался с проблемами закрытия склада после пересчета, подробности уже забылись, осталось только правило : "Откатить все пересчеты перед закрытием склада". И не я один : Пересчет складских запасов PS. "Размножения" проводок не припоминаю. | 
|  | 
|  13.02.2008, 17:54 | #7 | 
| Участник | 
			
			To Petr Функции->Суммирование не работает, т.к. в хелпе: "Примечание При наличии проводок сопоставления для текущей номенклатуры группировка не выполняется. Это же относится и к отмененным закрытиям склада." | 
|  | 
|  13.02.2008, 18:12 | #8 | 
| Участник | Цитата: Цитата: Вот только непонятно, по идее, еще до закрытия должны были быть 2 проводки (после маркировки - если промаркировали не на все кол-во - проводки должны разделиться на 2: промаркированную и нет). А что с этим лотом ЛН0055574, сколько в нем промаркированно? | 
|  | 
|  13.02.2008, 18:14 | #9 | 
| Участник | 
			
			И еще, а можно огласить все проводки в InventTrans с лотами: ЛН3652418 и ЛН0055574, до и после закрытия?
		 | 
|  | 
|  13.02.2008, 18:15 | #10 | 
| Участник | 
			
			to Exus ЛН0055574 - лот строки контракта И потом, если уж и разделилась на две, то почему так криво?!! Можно было, ведь, проверить суммы, чтобы проводка-то закрылась, ведь это, собственно, и есть цель. Ан нет! На копейку отличие и проводка уже открыта. | 
|  | 
|  13.02.2008, 18:23 | #11 | 
| Участник | 
			
			Проводки разделяются всегда по кол-ву, см. метод InventTrans.setSplitAmount()
		 | 
|  | 
|  13.02.2008, 18:26 | #12 | 
| Участник | 
			
			И еще: разделение проводок и закрытие склада (сопоставление) никак между собой не связанны, во всяком случае мне про это неизвестно.  Сопоставление оперирует с полями CostAmountAdjustment, QtySettled, CostAmountSettled (и дополн. в русской версии), разделение производится при различиях в "стринговых" полях. Разделить проводку, чтобы половину сопоставить, половину оставить открытой - такого я в стандарте не встречал. Пока... | 
|  | 
|  13.02.2008, 18:27 | #13 | 
| Участник | 
			
			Все складские проводки во вложении
		 | 
|  | 
|  13.02.2008, 18:32 | #14 | 
| Участник | 
			
			to Petr Дык я ж с чего и начал (см. исходное собщение)- до этого я тоже не связывал разделение проводок с сопоставлением/пересчетом  Но эксперимент был достаточно чистым: 1.сохранил все проводки по номенклатуре+коду аналитики (см.AllTrans лист 1-й) 2.запустил закрытие по конкретной номенклатуре 3.сохранил все проводки по номенклатуре+коду аналитики (см.AllTrans лист 2-й) Кроме меня никто в этой базе не работал. | 
|  | 
|  13.02.2008, 19:14 | #15 | 
| Участник | Цитата: Напишите еще версию Аксапты, плз. | 
|  | 
|  13.02.2008, 19:23 | #16 | 
| Участник | 
			
			Касательно разделения проводок при закрытии склада: В DAX3.0SP4 (обновленное закрытие склада) разделение (согласно перекрестных ссылок) происходит только в одном месте: InventAdj_Closing.updateSettleRefTransId() X++: // clear unused references if (mapQtyIssue || mapQtyReceipt) { while select forupdate inventTrans index hint openItemIdx where inventTrans.ValueOpen == inventTransOpen::Yes && inventTrans.ItemId == _inventTable.ItemId && inventTrans.InventRefTransId != '' { if ((inventTrans.Qty > 0 && (! mapQtyIssue || ! mapQtyIssue.exists(inventTrans.InventTransId) || abs(mapQtyIssue.lookup(inventTrans.InventTransId)) < inventAdj::settleQtyDiff())) || (inventTrans.Qty < 0 && (! mapQtyReceipt || ! mapQtyReceipt.exists(inventTrans.InventTransId) || abs(mapQtyReceipt.lookup(inventTrans.InventTransId)) < inventAdj::settleQtyDiff()))) { if (inventTrans.QtySettled) inventTrans.updateSplit(inventTrans.financialOpenQty()); inventTrans.InventRefTransId = ''; inventTrans.doUpdate(); if (! inventTrans.isUpdatedFinancial()) { movement = inventTrans.inventMovement(true); if (movement && movement.inventRefTransId() != '') { movement.setInventRefFields(inventRefType::None,'',''); movement.updateDoBuffer(); } } } } } Ну а то, что сопоставленная сумма не равна фин. сумме проводки - такое бывает (я наблюдат при закрытии по средней такое). Ничего особенно страшного в этом нет, это будет только влиять на производительность отчетов и скорость последующих закрытий склада. Но если таких ситуаций немного, то тоже ничего страшного. И еще. В некоторых СП при создании заказа на основе контракта (Blanket order) складская проводка по этому заказу ссылается на лот строки из контракта, в некоторых нет (т.е. для вашей исходной проводки поле InventRefTransId не будет заполнено), соответственно нет разбиения и т.д. Эту ситуацию на форуме уже обсуждали. Т.е. | 
|  | 
|  13.02.2008, 19:39 | #17 | 
| Участник | 
			
			P.S.  Ссыкли на обсуждение проблемы с заполненными InventRefTransId лотом контракта Пересчет с/с в проводках с заполненным InventRefTransId Изыскания по поводу функциональности поля "Ссылка на лот" | 
|  | 
| Теги | 
| ax3.0 | 
|  | 
| 
 |