03.12.2013, 13:02 | #1 |
Участник
|
Проблемы с планированием заданий в производстве
Всем добрый день!
У меня возникло некоторое недопонимание работы с заданиями в производстве. Очень прошу помочь! Имею некоторый маршрут, по которому для производственного заказа сформированы задания. ПЗ переведён в статус Начато и, к примеру, уже завершено одно задание. Далее, требуется увеличить время одной из последующих задач, которая ещё не выполнялась. Произвожу изменение в маршруте ПЗ вручную (к примеру, увеличиваю время выполнения в одной из строк). Далее, вызываю функцию обновления заданий (Обновить / Планирование заданий). После этого выбираю направление планирования (пробовал разные) и нажимаю ОК. В результате система перепланирует данные задания и изменяет время, определённое для каждого из заданий, включая Завершённое. Но, как по мне, изменять данные о планировании уже Завершённого задания некорректно, так как дата и время там могут стать даже позже, чем выполняемое задание на данный момент. Подскажите пожалуйста, в чём суть такой работы функционала. Может чего-то не понимаю или ещё не знаю. DAX 2009 Заранее спасибо! Последний раз редактировалось Cardagant; 03.12.2013 в 13:06. |
|
13.01.2014, 12:30 | #2 |
Участник
|
Добрый день! Неужели никто не сможет помочь?
Нашёл, что даты редактируются в WrkCtrJobData_ProdJob.update() X++: super(); cacheProdRouteJob.SchedTimeHours = (this.rec_JobTime() / 3600); cacheProdRouteJob.CalcTimeHours = (this.rec_JobCalcTime() / 3600) * (this.rec_LoadPercent() / 100); cacheProdRouteJob.FromDate = scheduleJobs.jobLinkData().rec_FromDate(); cacheProdRouteJob.FromTime = scheduleJobs.jobLinkData().rec_FromTime(); cacheProdRouteJob.ToDate = scheduleJobs.jobLinkData().rec_ToDate(); cacheProdRouteJob.ToTime = scheduleJobs.jobLinkData().rec_ToTime(); cacheProdRouteJob.WrkCtrId = wrkCtrData.rec_WrkCtrId(); if ((cacheProdRouteJob.FromDate == cacheProdRouteJob.ToDate && cacheProdRouteJob.FromTime == cacheProdRouteJob.ToTime) || this.rec_JobTime() == 0) { cacheProdRouteJob.SchedCancelled = NoYes::Yes; } else cacheProdRouteJob.SchedCancelled = NoYes::No; cacheProdRouteJob.update(); Последний раз редактировалось Cardagant; 13.01.2014 в 13:37. |
|
13.01.2014, 14:56 | #3 |
Moderator
|
Если я не ошибаюсь, в параметрах операции планирования заданий можно указать номер операции для планирования (или перепланирования). И в вашем случае, просто надо сделать некую обертку, которая последовательно вызывает эту операцию для всех незавершенных операций.
Disclaimer: Сам я этого не пробовал, но раз других вариантов нету - попробуйте копать в этом направлении... |
|
|
За это сообщение автора поблагодарили: Cardagant (1). |
13.01.2014, 16:09 | #4 |
Участник
|
Цитата:
Сообщение от fed
Если я не ошибаюсь, в параметрах операции планирования заданий можно указать номер операции для планирования (или перепланирования). И в вашем случае, просто надо сделать некую обертку, которая последовательно вызывает эту операцию для всех незавершенных операций.
Disclaimer: Сам я этого не пробовал, но раз других вариантов нету - попробуйте копать в этом направлении... Как бы вы оценили решение: при планировании заданий просто пропускать уже завершённые? Чем-то это может грозить? Имею ввиду, что при загрузке заданий в методе WrkCtrJobLinkData_ProdJob\load() добавить условие исключения завершённых заданий. Код приведён ниже: X++: while select forupdate _prodRouteJob index ProdOprIdx where _prodRouteJob.prodId == masterData.rec_NumId() && _prodRouteJob.oprNum == routeData.rec_OprNum() // Кроме завершённых && prodRouteJob.JobStatus != ProdJobStatus::Completed { if (scheduleJobs.schedOprNum() == _prodRouteJob.OprNum && scheduleJobs.schedFromWrkCtrId() != scheduleJobs.schedToWrkCtrId() && scheduleJobs.schedFromWrkCtrId() && scheduleJobs.schedToWrkCtrId()) { if (scheduleJobs.schedToWrkCtrId() == _prodRouteJob.WrkCtrId) throw error(strFmt("@SYS75431",_prodRouteJob.WrkCtrId,_prodRouteJob.OprNum)); if (scheduleJobs.schedFromWrkCtrId() == _prodRouteJob.WrkCtrId) { _prodRouteJob.WrkCtrId = scheduleJobs.schedToWrkCtrId(); _prodRouteJob.doUpdate(); } } . . . Последний раз редактировалось Cardagant; 13.01.2014 в 16:40. |
|
13.01.2014, 16:51 | #5 |
Moderator
|
В общем - не уверен. Но попробовать можно
У меня есть подозрение что при этом могут порушиться связи типа Start-To-Finish или Finish to finish. Хотя с другой стороны - если задания уже завершены - то поезд ушел и у нас все равно цепочки оборвуться - даже если мы по другому спланируем... |
|
13.01.2014, 16:52 | #6 |
Участник
|
Цитата:
Сообщение от fed
В общем - не уверен. Но попробовать можно
У меня есть подозрение что при этом могут порушиться связи типа Start-To-Finish или Finish to finish. Хотя с другой стороны - если задания уже завершены - то поезд ушел и у нас все равно цепочки оборвуться - даже если мы по другому спланируем... Спасибо Вам за ответы! |
|
Теги |
планирование заданий, производство |
|
|