02.11.2011, 12:46 | #1 |
Участник
|
Маркировка + резервирование в заказанных = проблема при изменении складской аналитики
Имеются утверждённые и смаркированные друг с другом производственные заказы. Таким образом система выход заказа одного уровня сопоставляет со входом заказа другого уровня. Для каждой складской проводки в статусе "Заказано" есть ожидающая её (примаркированная к ней) проводка в статусе "Зарезервировано в заказанных". Система не даёт изменить складскую аналитику для первого заказа. Пишет
Цитата:
Имеются проводки со статусом Зарезервировано в заказанных
В результате невозможно изменить складскую аналитику. |
|
02.11.2011, 13:20 | #2 |
Moderator
|
В стандарте такой механизм есть, но он работает он, гм, выборочно. Можешь посмотреть на метод inventUpdate.updateDimReserveChange() и на следующий кусок кода из inventUpdate.writeInventTrans().
X++: if (_inventTrans.orig() && _inventTrans.InventDimId != _inventTrans.orig().InventDimId)// Do not use inventTrans_orig as it may not match content in database { fromInventDim = InventDim::find(_inventTrans.orig().InventDimId); if (InventDimFixedClass::inventDimFieldsDifferent(fromInventDim,toInventDim) & InventDimFixedClass::initPrimaryDim(movement.dimGroupId()) != 0 && InventDim::mustCheckDimChange(movement.dimGroupId(),fromInventDim,toInventDim)) { if (_inventTrans.orig().isUpdatedEstimated()) { inventOnhand = InventOnhand::newPhysicalUpdate(movement,fromInventDim); if(!this.allowChangeDim(inventOnhand, _inventTrans, fromInventDim)) throw error(strfmt("@SYS54456")); } else if (!_inventTrans.orig().isUpdatedQuotation()) { inventOnhand = InventOnhand::newPhysicalUpdate(movement,fromInventDim); if (! inventOnhand.checkItemDraw(-_inventTrans.Qty,allowNegativePhysical)) throw error(strfmt("@SYS54456")); } if (_physicalUpdate) this.updateDimReservePhysical(toInventDim,_inventTrans.Qty,_inventTrans.InventRefTransId); reserveAgainDimId = fromInventDim.InventDimId; } else { qtyRemain = this.updateDimReserveChange(toInventDim,fromInventDim,_inventTrans.Qty,_physicalUpdate,_inventTrans.InventRefTransId); if (_physicalUpdate) this.updateDimReservePhysical(toInventDim,qtyRemain,_inventTrans.InventRefTransId); } Кстати мне кажется, что в более ранних версиях (по крайней мере в версии 3.0, в которой я этот механизм обнаружил), система вообще меняла автоматически любую аналитику, не помеченную как первичная аналитика хранения. Кроме того - обрати внимание на поле inventTrans.inventDimFixed. Это та аналитика, которая по задумке авторов не может менятся в проводке автоматически. Она инициализируется из первичной аналитики хранения, но также может быть указана руками при резервировании. Опять таки - это про оригинальную версию 3.0. Похоже что в 2009ой версии, флажки в этой аналитике не проверяют, если она не нулевая, то вообще аналитику запрещают менять автоматически. |
|
|
За это сообщение автора поблагодарили: Hard (1). |
02.11.2011, 13:21 | #3 |
Участник
|
Мы, например, вообще эти связи м/у ПЗ убили, слишком много проблем с ними, во всяком случае у нас. Изменения главного ПЗ система не позволяет сделать (кроме аналитики вроде еще количество и еще что-то, не вспомню). Кроме того были проблемы, если удаляешь ПЗ ниже уровнем, бывает остаются связи и ПЗ верхнего уровня не удалишь. Сейчас мы используем создание цепочки ПЗ на основе строк спецификации с типом строки "Производство", но без маркировки и резерва.
Последний раз редактировалось Bega; 02.11.2011 в 13:24. |
|
02.11.2011, 13:47 | #4 |
Участник
|
Цитата:
Но вопрос скорее то не в том, что бы просто обойти эту проверку. Хочется изменить складскую аналитику так, чтобы не порвалась цепочка резервирования, т.е. одновременно и на приходной и на расходной проводках Последний раз редактировалось S.Kuskov; 02.11.2011 в 13:52. |
|
02.11.2011, 14:02 | #5 |
Moderator
|
Ну так inventUpdate.updateDimReserveChange() и ищет расходную проводку, связанную с данной приходной, а потом обновляет там аналитику...
|
|
|
За это сообщение автора поблагодарили: S.Kuskov (5). |
02.11.2011, 14:08 | #6 |
Administrator
|
Не, не совсем так. Там стоит одинарный амперсанд а не двойной (т.е. это битовая операция, а не логическая) Следовательно, необходимым условием является не то, что у номенклатуры нет первичной аналитики хранения, а то, что ни одна из первичных аналитик не изменяется в данный момент.
__________________
Not registered yet? Register here! Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me |
|
|
За это сообщение автора поблагодарили: fed (2). |
02.11.2011, 14:24 | #7 |
Участник
|
Цитата:
Так. До меня дошло. Механизм inventUpdate.updateDimReserveChange() не работате в случае если среди изменяемых аналитик присутствует первичная аналитика?. А что будет если это условие выключить? Последний раз редактировалось S.Kuskov; 02.11.2011 в 14:29. |
|
02.11.2011, 14:34 | #8 |
Moderator
|
Я уверен что это работает в версии 2009. Просто на одном из моих подшефных проектов, немцы забыли поставить галочку "Первичная аналитика хранения" для аналитики склад, а потом очень, очень удивлялись когда система пыталась списывать в производство со склада отгрузок Просто закупщики меняли в закупке склад (просто потому что решали эту закупку прямиком отправить клиентам как запчасти). При этом склад менялся и в складских проводках списания в производство (Хотя в строке спецификации производственного заказа стояла цеховая кладовая конечно, а не склад отгрузок)...
Последний раз редактировалось fed; 02.11.2011 в 14:37. |
|
02.11.2011, 14:38 | #9 |
Administrator
|
В смысле, в коде? Предположу, что в некоторых ситуациях может разойтись аналитика в заказе и в проводке.
А почему бы просто не снять с этой аналитики галочку Первичная?
__________________
Not registered yet? Register here! Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me |
|
02.11.2011, 14:41 | #10 |
Участник
|
|
|
02.11.2011, 14:46 | #11 |
Administrator
|
Её можно будет не указывать в заказах при создании строк. Следовательно, потом можно будет резервировать откуда угодно.
Добавлено: Вот ещё fed яркий пример привёл того, на что это повлияет. В том смысле, что перерезервироваться будет везде, а не только в производственных заказах. Так что аккуратней с ней, с галочкой этой
__________________
Not registered yet? Register here! Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me |
|
|
За это сообщение автора поблагодарили: S.Kuskov (3). |