|
06.07.2005, 14:25 | #1 |
Moderator
|
Пересчет inventSum
День добрый!
1. Можно ли стандартным образом функционалом пересчитать inventSum (интересует поле 'В наличии') на основании проводок? 2. Чем мне аукнется если я руками изменю поле 'В наличии'? |
|
18.09.2014, 13:30 | #2 |
Участник
|
Я почему-то решил что у вас оракл.
Видимо из-за баннеров Вот и спросил. Скрипт просматривал только по диагонали. Чем вас не устроил InventSumReCalcItem о котором raz написал ? |
|
21.09.2014, 21:56 | #3 |
Участник
|
Доработал пост в блоге, учёл все комментарии.
Годится ? По правде говоря, я об этом классе не знал. Класс выполняет ту-же работу. Но скрипт, перед тем, как что-то сделать -- предоставляет лог. Скрипт можно использовать для экспресс-диагностики Квалифицированный ответ можно получить только от вендора, но можно порассуждать. Допустим есть чистая настроенная база. Пока ещё ни одной складской проводки. В складской картотеке есть одна номенклатура -- "Ведро" И вот вы купили одно ведро и сразу же его продали. Нажимаем кнопку "Запасы". Видим - Ведро, количество - 0. А если закрытую строку из InventSum удалить, то в форме "Запасы" будет пусто. Так не должно быть. Так ? |
|
22.09.2014, 06:51 | #4 |
Участник
|
|
|
22.09.2014, 10:10 | #5 |
Участник
|
|
|
22.09.2014, 07:59 | #6 |
Участник
|
А разве закрытой строка становится не после сопоставления закрытием склада? По-моему алгоритм закрытия как-то использует информацию из InventSum? Или я ошибаюсь? И точно ли не понадобятся такие закрытые строки в InventSum в случае открытия (отмены закрытия) склада?
|
|
22.09.2014, 10:57 | #7 |
Участник
|
Цитата:
есть такой код : X++: this.closedQty = this.isAllQtyFieldsZero(); this.closed = this.isAllValueFieldsZero() && this.closedQty; А в методах тупо идет сравнение количественных и суммовых полей с нулем. На закрытие склад ей пофигу. Просто как правило суммовые поля выравниваются после закрытия что приводит к их обнулению и взведению галки closed. Но такое может быть и без закрытия склада. Закрытие склада, насколько я помню не использует InventSum. Табличка InventSum упоминается в методах \Classes\InventCostClosingCancel_WorkInvent\checkAndDeleteVirtualTransfer \Classes\InventCostClosingCancel_WorkInvent\deleteVirtualTransfers но не для выборки из базы или фильтрации, а как накопительная переменная в памяти. По идее, они просто создадутся вновь если Аксапте потребуется остаток сделать отличным от нуля. Но я сам не проверял. |
|
22.09.2014, 11:01 | #8 |
Участник
|
Я бы еще подправил метод
\Classes\InventSumDateEngine\selectInventOnHand вот это место X++: insert_recordset inventSumDateTrans (ItemId, PostedQty, ReceivedQty, DeductedQty, PickedQty, RegisteredQty, PostedValue, #InventDimFields, ParmId, TransType) select ItemId, sum(PostedQty), sum(Received), sum(Deducted), sum(Picked), sum(Registered), sum(PostedValue) from inventSum group by ItemId where inventSum.Closed == NoYes::Yes join #InventDimFields, parmId /*scalar*/, inventSumDateType /*scalar*/ from inventDim group by #InventDimFields where inventDim.InventDimId == inventSum.InventDimId exists join inventTrans where inventTrans.ItemId == inventSum.ItemId && inventTrans.InventDimId == inventSum.InventDimId && inventTrans.DateStatus >= perDate; Насколько я помню используется только в одном отчете по остаткам. |
|
22.09.2014, 14:34 | #9 |
Участник
|
Цитата:
Т.к. есть такой код в InventOnHand, похоже, что в стандарте на это могут закладываться, и придётся проверять весь код при обновлениях системы. У нас, например (Ax 3.0), в доработках внедренцев (и наших) во многих местах код рассчитан на существование этой связки. Кроме того, я посмотрел метод InventTrans.update из стандарта, и там тоже ожидается, что соответствующий InventSum существует, т.е. если проводки с удалённым InventSum когда-то будут использоваться (отмена закрытия склада, например), нужно проверить, как поведёт себя и этот код. Последний раз редактировалось Ярослав Щекин; 22.09.2014 в 14:37. |
|
23.09.2014, 10:44 | #10 |
Участник
|
Так я и хотел в этой теме обсудить, какие места в стандартной Аксапте могут сломаться из-за такой кастомизации и как это лечить.
А свои доработки каждый сам будет допиливать. |
|
13.11.2014, 11:11 | #11 |
Участник
|
Наткнулся на статью:
http://technet.microsoft.com/en-us/l.../dn505749.aspx Думаю, что код можно портировать и на более ранние версии.
__________________
Айрат Вильданов. skype: vildanov.a |
|
|
За это сообщение автора поблагодарили: Logger (5), S.Kuskov (2). |
15.11.2014, 16:48 | #12 |
Участник
|
Цитата:
Сообщение от AraraT®
Наткнулся на статью:
http://technet.microsoft.com/en-us/l.../dn505749.aspx Думаю, что код можно портировать и на более ранние версии. |
|