AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Функционал
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 02.11.2011, 12:46   #1  
online
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,440 / 1775 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Маркировка + резервирование в заказанных = проблема при изменении складской аналитики
Имеются утверждённые и смаркированные друг с другом производственные заказы. Таким образом система выход заказа одного уровня сопоставляет со входом заказа другого уровня. Для каждой складской проводки в статусе "Заказано" есть ожидающая её (примаркированная к ней) проводка в статусе "Зарезервировано в заказанных". Система не даёт изменить складскую аналитику для первого заказа. Пишет
Цитата:
Имеются проводки со статусом Зарезервировано в заказанных
В результате невозможно изменить складскую аналитику.
Есть ли в стандарте какой-нибудь механизм, который бы позволил синхронно изменить складскую аналитику на приходном и на расходном документах примаркированных друг к другу?
Старый 02.11.2011, 13:20   #2  
fed is offline
fed
Moderator
Аватар для fed
Ex AND Project
Соотечественники
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
2,909 / 5730 (197) ++++++++++
Регистрация: 13.03.2002
Адрес: Hüfingen,DE
В стандарте такой механизм есть, но он работает он, гм, выборочно. Можешь посмотреть на метод 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);
            }
Как можно заметить, вожделенный вызов метода updateDimReserveChange случается только если у номенклатуры вообще нету первичной аналитики хранения (InventDimFixedClass::initPrimaryDim(movement.dimGroupId()) вернул 0) или же такая аналитика есть, но та аналитика которая была изменена, не является аналитикой физического склада (InventDim::mustCheckDimChange(movement.dimGroupId(),fromInventDim,toInventDim) вернул false). В общем - надо чтобы второй if в этом фрагменте провалился в часть else...

Кстати мне кажется, что в более ранних версиях (по крайней мере в версии 3.0, в которой я этот механизм обнаружил), система вообще меняла автоматически любую аналитику, не помеченную как первичная аналитика хранения. Кроме того - обрати внимание на поле inventTrans.inventDimFixed. Это та аналитика, которая по задумке авторов не может менятся в проводке автоматически. Она инициализируется из первичной аналитики хранения, но также может быть указана руками при резервировании. Опять таки - это про оригинальную версию 3.0. Похоже что в 2009ой версии, флажки в этой аналитике не проверяют, если она не нулевая, то вообще аналитику запрещают менять автоматически.
За это сообщение автора поблагодарили: Hard (1).
Старый 02.11.2011, 13:21   #3  
Bega is offline
Bega
Участник
Аватар для Bega
 
382 / 444 (15) +++++++
Регистрация: 18.08.2005
Адрес: Москва
Цитата:
Сообщение от S.Kuskov Посмотреть сообщение
Есть ли в стандарте какой-нибудь механизм, который бы позволил синхронно изменить складскую аналитику на приходном и на расходном документах примаркированных друг к другу?
Мы, например, вообще эти связи м/у ПЗ убили, слишком много проблем с ними, во всяком случае у нас. Изменения главного ПЗ система не позволяет сделать (кроме аналитики вроде еще количество и еще что-то, не вспомню). Кроме того были проблемы, если удаляешь ПЗ ниже уровнем, бывает остаются связи и ПЗ верхнего уровня не удалишь. Сейчас мы используем создание цепочки ПЗ на основе строк спецификации с типом строки "Производство", но без маркировки и резерва.

Последний раз редактировалось Bega; 02.11.2011 в 13:24.
Старый 02.11.2011, 13:47   #4  
online
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,440 / 1775 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Цитата:
Сообщение от fed Посмотреть сообщение
В стандарте такой механизм есть, но он работает он, гм, выборочно. Можешь посмотреть на метод inventUpdate.updateDimReserveChange() и на следующий кусок кода из inventUpdate.writeInventTrans().
Ага это я уже тоже нашёл.

Но вопрос скорее то не в том, что бы просто обойти эту проверку. Хочется изменить складскую аналитику так, чтобы не порвалась цепочка резервирования, т.е. одновременно и на приходной и на расходной проводках

Последний раз редактировалось S.Kuskov; 02.11.2011 в 13:52.
Старый 02.11.2011, 14:02   #5  
fed is offline
fed
Moderator
Аватар для fed
Ex AND Project
Соотечественники
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
2,909 / 5730 (197) ++++++++++
Регистрация: 13.03.2002
Адрес: Hüfingen,DE
Цитата:
Сообщение от S.Kuskov Посмотреть сообщение
Ага это я уже тоже нашёл.

Но вопрос скорее то не в том, что бы просто обойти эту проверку. Хочется изменить складскую аналитику так, чтобы не порвалась цепочка резервирования, т.е. одновременно и на приходной и на расходной проводках
Ну так inventUpdate.updateDimReserveChange() и ищет расходную проводку, связанную с данной приходной, а потом обновляет там аналитику...
За это сообщение автора поблагодарили: S.Kuskov (5).
Старый 02.11.2011, 14:08   #6  
Maxim Gorbunov is offline
Maxim Gorbunov
Administrator
Соотечественники
Лучший по профессии 2009
 
2,483 / 645 (26) +++++++
Регистрация: 27.11.2001
Адрес: Dubai, UAE
Цитата:
Сообщение от fed Посмотреть сообщение
Как можно заметить, вожделенный вызов метода updateDimReserveChange случается только если у номенклатуры вообще нету первичной аналитики хранения (InventDimFixedClass::initPrimaryDim(movement.dimGroupId()) вернул 0)
Не, не совсем так. Там стоит одинарный амперсанд а не двойной (т.е. это битовая операция, а не логическая) Следовательно, необходимым условием является не то, что у номенклатуры нет первичной аналитики хранения, а то, что ни одна из первичных аналитик не изменяется в данный момент.
__________________
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  
online
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,440 / 1775 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Цитата:
Сообщение от fed Посмотреть сообщение
Ну так inventUpdate.updateDimReserveChange() и ищет расходную проводку, связанную с данной приходной, а потом обновляет там аналитику...
Хм. Значит желаемое мной поведение должно по умолчанию воспроизводится в стандарте? Странно но сейчас у меня этот метод вообще не вызывается. Спасибо за наводку, буду копать в эту сторону

Так. До меня дошло. Механизм inventUpdate.updateDimReserveChange() не работате в случае если среди изменяемых аналитик присутствует первичная аналитика?.

А что будет если это условие выключить?

Последний раз редактировалось S.Kuskov; 02.11.2011 в 14:29.
Старый 02.11.2011, 14:34   #8  
fed is offline
fed
Moderator
Аватар для fed
Ex AND Project
Соотечественники
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
2,909 / 5730 (197) ++++++++++
Регистрация: 13.03.2002
Адрес: Hüfingen,DE
Я уверен что это работает в версии 2009. Просто на одном из моих подшефных проектов, немцы забыли поставить галочку "Первичная аналитика хранения" для аналитики склад, а потом очень, очень удивлялись когда система пыталась списывать в производство со склада отгрузок Просто закупщики меняли в закупке склад (просто потому что решали эту закупку прямиком отправить клиентам как запчасти). При этом склад менялся и в складских проводках списания в производство (Хотя в строке спецификации производственного заказа стояла цеховая кладовая конечно, а не склад отгрузок)...

Последний раз редактировалось fed; 02.11.2011 в 14:37.
Старый 02.11.2011, 14:38   #9  
Maxim Gorbunov is offline
Maxim Gorbunov
Administrator
Соотечественники
Лучший по профессии 2009
 
2,483 / 645 (26) +++++++
Регистрация: 27.11.2001
Адрес: Dubai, UAE
Цитата:
Сообщение от S.Kuskov Посмотреть сообщение
А что будет если это условие выключить?
В смысле, в коде? Предположу, что в некоторых ситуациях может разойтись аналитика в заказе и в проводке.

А почему бы просто не снять с этой аналитики галочку Первичная?
__________________
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  
online
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,440 / 1775 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Цитата:
Сообщение от Maxim Gorbunov Посмотреть сообщение
А почему бы просто не снять с этой аналитики галочку Первичная?
Хороший вопрос А на что это ещё повлияет?
Старый 02.11.2011, 14:46   #11  
Maxim Gorbunov is offline
Maxim Gorbunov
Administrator
Соотечественники
Лучший по профессии 2009
 
2,483 / 645 (26) +++++++
Регистрация: 27.11.2001
Адрес: Dubai, UAE
Цитата:
Сообщение от S.Kuskov Посмотреть сообщение
А на что это ещё повлияет?
Её можно будет не указывать в заказах при создании строк. Следовательно, потом можно будет резервировать откуда угодно.

Добавлено: Вот ещё 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).
Теги
маркировка, резервирование

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Вопросы по изменению складской аналитики ena_ax DAX: Функционал 12 09.06.2009 19:11
Сравнение в разрезе складской аналитики. longson DAX: Программирование 3 14.01.2008 13:45
Резервирование в заказанных Седов Александр DAX: Прочие вопросы 4 14.04.2006 12:47
Резервирование в заказанных -глюк??? sev DAX: Функционал 1 13.04.2006 08:26
Резервирование в заказанных (серия 5) Dana DAX: Функционал 8 14.05.2004 14:37

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 11:11.