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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 25.09.2009, 08:28   #1  
Alexx7 is offline
Alexx7
Сам.AX
Аватар для Alexx7
Самостоятельные клиенты AX
1C
 
305 / 28 (1) +++
Регистрация: 22.07.2009
Класс wrkCtrMasterData_prod в AX40sp2
Доброго здоровья.

Кто знает зачем нужен класс wrkCtrMasterData_prod при обновлении произв. заказа (приемка), если мы не используем в производстве маршруты и задания? Больше всего интересует что выполняет метод Load() в котором есть загадочный, для меня, кусок кода:
X++:
        if (this.last())
        do
        {
            this.updateExplosion(cacheProdTable);
        } while (this.prev());
Спасибо.
Старый 25.09.2009, 12:12   #2  
fed is offline
fed
Moderator
Аватар для fed
Ex AND Project
Соотечественники
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
2,907 / 5717 (196) ++++++++++
Регистрация: 13.03.2002
Адрес: Hüfingen,DE
В общем - wrkCtrMasterData инкапуслирует несколько зависимых производственных заказов, получившихся из спецификации с типами строк "Производство". Метод load() просто загружает данные о заказах в память. Загадочный кусок кода - просто пробегает по списку заказов и по каждому запускает сводное планирование (фактически - ищет покрытие списаний под ПЗ). В версии 2009 эта штука запускается только при разноске маршрутных журналов (но никак не журнала приемки), если в параметрах производства включена галка Update Capacity Plan (поле JournalUpdateCapacity). Возможно - в вашем случае он отрабатывает потому, что какие-то загадочные галочки в журнале приемки (я их названия плохо помню) подспудно запускают разноску маршрутных операций со стандартными значениями (из BOMCalcTrans).
Идея за эти стоит следующая: Хочется чтобы по фактическим временным данным, внесенным в журнал маршрутных проводок пересчитывалась загрузка производственных мощностей. Хочу заметить, что я этот механизм до конца не раскапывал, никогда им не пользовался и как он работает полностью не понимаю. Я например так до конца и не разобрался, как временные данные введенные в журнале, обновляют время текущей операции в prodRoute/prodRoteJob. Однако - очень подозреваю что общая идея, которую я тут описал - правильная...
За это сообщение автора поблагодарили: Murlin (1), Alexx7 (1).
Старый 25.09.2009, 12:17   #3  
EVGL is offline
EVGL
Banned
Соотечественники
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
4,445 / 3001 (0) ++++++++++
Регистрация: 09.07.2002
Адрес: Parndorf, AT
Цитата:
Сообщение от fed Посмотреть сообщение
В версии 2009 эта штука запускается только при разноске маршрутных журналов (но никак не журнала приемки), если в параметрах производства включена галка Update Capacity Plan (поле JournalUpdateCapacity)...
Возможно, что они "перепрыгивают" статусы п. заказа и из Estimated запускают сразу приемку из меню Update.
Я бы поинтересовался, что именно беспокоит автора. Или это опять та же тема, что и несколько недель назад, с изменением даты отгрузки подчиненных заказов?
Старый 25.09.2009, 14:33   #4  
Alexx7 is offline
Alexx7
Сам.AX
Аватар для Alexx7
Самостоятельные клиенты AX
1C
 
305 / 28 (1) +++
Регистрация: 22.07.2009
Вся идея в том, что строчка
X++:
this.updateExplosion(cacheProdTable);
впоследстии приводит Вот сюда (Класс ReqCalc):
X++:
void updateItemLock(ItemId _itemId)
{
    ;
    select pessimisticlock inventTableLock
        where inventTableLock.ItemId == _itemId;
}
В результате возникают блокировки, которые вызывают жуткие тормоза при приемке.
Старый 25.09.2009, 14:56   #5  
EVGL is offline
EVGL
Banned
Соотечественники
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
4,445 / 3001 (0) ++++++++++
Регистрация: 09.07.2002
Адрес: Parndorf, AT
Понятно. Если можете гарантировать, что сводное планирование не будет запускаться в конкурентном режиме, закомментируйте эти строчки в ReqCalc.
Старый 25.09.2009, 15:09   #6  
Alexx7 is offline
Alexx7
Сам.AX
Аватар для Alexx7
Самостоятельные клиенты AX
1C
 
305 / 28 (1) +++
Регистрация: 22.07.2009
Вот комментировать код то совсем не желательно. У меня всётаки есть надежда, что:
Цитата:
Сообщение от fed Посмотреть сообщение
....
Возможно - в вашем случае он отрабатывает потому, что какие-то загадочные галочки в журнале приемки (я их названия плохо помню) подспудно запускают разноску маршрутных операций со стандартными значениями (из BOMCalcTrans).
....
Пытаюсь по коду проанализаровать, где есть проверка галочки. Но если кто уже знает о вышеупомянутой "загадочной галке". Буду признателен.
Старый 25.09.2009, 15:14   #7  
EVGL is offline
EVGL
Banned
Соотечественники
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
4,445 / 3001 (0) ++++++++++
Регистрация: 09.07.2002
Адрес: Parndorf, AT
ProdParameters.JournalUpdateCapacity - в случае авторазноски журнала произв. маршрутов. Больше параметров нет.
Стек вызова до ReqCalc приведите, пожалуйста.
Старый 25.09.2009, 15:42   #8  
Alexx7 is offline
Alexx7
Сам.AX
Аватар для Alexx7
Самостоятельные клиенты AX
1C
 
305 / 28 (1) +++
Регистрация: 22.07.2009
Цитата:
Сообщение от EVGL Посмотреть сообщение
ProdParameters.JournalUpdateCapacity - в случае авторазноски журнала произв. маршрутов. Больше параметров нет.
Стек вызова до ReqCalc приведите, пожалуйста.
На неё навешан конфиг кей (ProdRouting), который у нас закрыт. Так что, к сожалению, этот вариант исключен.
Старый 25.09.2009, 15:49   #9  
Alexx7 is offline
Alexx7
Сам.AX
Аватар для Alexx7
Самостоятельные клиенты AX
1C
 
305 / 28 (1) +++
Регистрация: 22.07.2009
Цитата:
Сообщение от EVGL Посмотреть сообщение
Стек вызова до ReqCalc приведите, пожалуйста.
[s]\Classes\ReqCalc\updateItemLock (4)
[s]\Classes\ReqCalcExplodeProd\insertData (23)
[s]\Classes\ReqCalc\updateData (10)
[s]\Classes\ReqCalc\run (11)
[s]\Classes\ReqCalcExplode\run (10)
[s]\Classes\WrkCtrMasterData_Prod\updateExplosion (9)
[s]\Classes\WrkCtrMasterData_Prod\load (55)
[s]\Classes\WrkCtrScheduleJobs\run (13)
[s]\Classes\ProdUpdScheduling\run (13)
[s]\Classes\ProdUpdScheduling_Operation\run (10)
[s]\Classes\ProdTableType\runOperationScheduling (9)
[s]\Classes\ProdStatusType_CostEstimate\runOperationScheduling (12)
[s]\Classes\ProdUpdRelease\runPreviousJob (12)
[s]\Classes\ProdStatusType_CostEstimate\runRelease (13)
[s]\Classes\ProdUpdStartUp\runPreviousJob (10)
[s]\Classes\ProdStatusType_CostEstimate\runStartUp (13)
[s]\Classes\ProdUpdReportFinished\runPreviousJob (9)
[s]\Classes\ProdStatusType_CostEstimate\runReportFinished (12)
[s]\Classes\ProdMultiReportFinished\run (15)
[c]\Classes\ProdMultiReportFinished\main (16)
Старый 25.09.2009, 16:00   #10  
EVGL is offline
EVGL
Banned
Соотечественники
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
4,445 / 3001 (0) ++++++++++
Регистрация: 09.07.2002
Адрес: Parndorf, AT
Все понятно. Вы запускаете приемку для заказа в статусе Estimated, как я и предполагал. Система последовательно обновляет статусы, проходя через статус "Запланировано". Вы не найдете параметра, чтобы отключить такое поведение.
За это сообщение автора поблагодарили: Alexx7 (1).
Старый 25.09.2009, 16:37   #11  
Alexx7 is offline
Alexx7
Сам.AX
Аватар для Alexx7
Самостоятельные клиенты AX
1C
 
305 / 28 (1) +++
Регистрация: 22.07.2009
Цитата:
Сообщение от EVGL Посмотреть сообщение
Все понятно. Вы запускаете приемку для заказа в статусе Estimated, как я и предполагал. Система последовательно обновляет статусы, проходя через статус "Запланировано". Вы не найдете параметра, чтобы отключить такое поведение.
Если в параметрах производства (ProdParameters) убрать галку " Ограничение по материалам" (MatLimited) на влкдке "Стандартное обновление", то обновление обходит [s]\Classes\ReqCalc\updateItemLock (4) и всё обрабоатывается намного быстрее.
Вопрос: Чем черевато обнуление галочки?
.
Старый 25.09.2009, 17:29   #12  
EVGL is offline
EVGL
Banned
Соотечественники
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
4,445 / 3001 (0) ++++++++++
Регистрация: 09.07.2002
Адрес: Parndorf, AT
Тем, что при планировании (втч. вычислении ближайшей даты поставки) не будет учитываться наличие материалов.
Старый 08.10.2009, 11:00   #13  
Alexx7 is offline
Alexx7
Сам.AX
Аватар для Alexx7
Самостоятельные клиенты AX
1C
 
305 / 28 (1) +++
Регистрация: 22.07.2009
Вопрос № 2.

При обновлении производственного заказа до статуса "Запланировано", обновляется таблица "Чистые потребности" (ReqTrans). Туда попадают строки спецификации изделия по условиям настроеным ранее. Считаю, что всё логично. Вопрос: Почему при обновлении блокируется само изделие, а не сырьё из спецификации?

Вот в этот кусок кода ([s]\Classes\ReqCalc\updateItemLock (4) ) попадает выходное изделие.
X++:
void updateItemLock(ItemId _itemId)
{
    ;
    select pessimisticlock inventTableLock
        where inventTableLock.ItemId == _itemId; // Блокирует изделие. Зачем?
}
Теги
ax4.0, ошибка, производство

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
класс InventSumDateValueReportDim Физические запасы? Poleax DAX: Программирование 12 01.07.2008 15:27
Проблема с передачей контролов из формы в класс matew DAX: Программирование 0 28.04.2008 17:37
Класс SysMailer Ivandos DAX: Программирование 0 13.12.2007 18:25
Какой потомок "вызвал" родительский класс? somebody DAX: Программирование 5 09.08.2005 14:52
Класс xSysLastValue Maxim Gorbunov DAX: База знаний и проекты 0 27.11.2001 17:39
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

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

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

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