|  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). | |