23.04.2020, 00:12 | #1 |
Administrator
|
D365FO: Журнал выдачи спецодежды
Добрый день всем!
Вопрос скорее больше к специалистам из Microsoft, если они случайно заглянут в эту тему. Собственно вопрос в том, что журнал не работает ))). Проверял на PU34 По сравнению с 2012 в форме RAssetInventIssueTrans сильно "поредел" код и в частности совершенно нет строк по сохранению InventDimId. Точнее он есть, но на initValue (при создании строки), когда еще даже нет номенклатуры. В результате в журнале меняй, не меняй складские аналитики - толку ноль. И если Склад-Сайт ещё можно в шапке журнала указать и они перетекут в строки (само собой без возможности изменения), то любая дополнительная аналитика (например, Профиль учета) уже не переходит. Т.е. сами аналитики конечно в строках поменять можно, только они нигде не сохраняются и при выходе из строк в шапку при попытке нажатия кнопки Закрыть - система пытается списать номенклатуру с пустыми складскими аналитиками и естественно у нее это не получается, если кроме сайта-склада есть ещё какие-нибудь первичные аналитики (типа профиля учёта). Ну т.е. понятен конечно сценарий, когда этот функционал работает - только если на номенклатуру назначены складские аналитики Склад-Сайт (и больше никаких) и они же вручную указаны в шапке журнала выдачи. Но как бы в 2012 функционал работал гибче. Вопрос: это поправимо? (В смысле реально получить фикс?). Или это есть сознательное ограничение?
__________________
Возможно сделать все. Вопрос времени |
|
23.04.2020, 08:43 | #2 |
Участник
|
в поддержку им напиши
__________________
|
|
01.02.2021, 20:43 | #3 |
Administrator
|
В связи с тем, что у меня процесс обращения в поддержку не очень прямой, а исправление до PU40 так и не доехало - решил просто дописать код самостоятельно. Фактически, критически не хватает только одной строчки кода в начале метода validateWrite() датасорса RAssetInventIssueTrans, который был в 2012 - это строчка по вычислению InventDimId с сохранением вычисленного значения в таблицу RAssetInventIssueTrans.
Но я решил пройти немного подальше и попытаться заполнить некоторые аналитики по умолчанию, дополнительно проверив, что они активные. X++: /// <summary> /// Перенос кода из AX 2012 по сохранению InventDimId /// </summary> // VSUH, RAssesFixes, 01.02.2021 [ExtensionOf(formDataSourceStr(RAssetInventIssueTrans,RAssetInventIssueTrans))] final class RAssetInventIssueTransForm_RAssetInventIssueTransDS_VS_Extension { public boolean validateWrite() { FormRun fr = element; InventDim inventDim = fr.dataHelper().FindDataSource(formDataSourceStr(RAssetInventIssueTrans, InventDim)).cursor(); RAssetInventIssueTrans rAssetInventIssueTrans = fr.dataHelper().FindDataSource(this.name()).cursor(); RAssetInventIssueTable assetInventIssueTable = fr.assetInventIssueTable(); InventTable inventTable = InventTable::find(rAssetInventIssueTrans.ItemId); if (!rAssetInventIssueTrans.RecId) { if (!inventDim.InventLocationId && InventDimGroupSetup::newInventTable(inventTable).isDimensionActive(fieldNum(inventDim, InventLocationId))) { inventDim.InventLocationId = assetInventIssueTable.InventLocationId; inventDim.InventSiteId = InventLocation::find(assetInventIssueTable.InventLocationId).InventSiteId; } if (!inventDim.InventProfileId_RU && InventDimGroupSetup::newInventTable(inventTable).isDimensionActive(fieldNum(inventDim, InventProfileId_RU))) { if (inventTable.AssetGroupId_RU) { inventDim.InventProfileId_RU = RAssetParameters::find().LowCostAssetInventProfileId; } else { inventDim.InventProfileId_RU = inventDim.inventLocation().InventProfileId_RU; } } } rAssetInventIssueTrans.InventDimId = InventDim::findOrCreate(inventDim).InventDimId; return next validateWrite(); } }
__________________
Возможно сделать все. Вопрос времени |
|
|
|