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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 03.12.2013, 13:02   #1  
Cardagant is offline
Cardagant
Участник
 
317 / 54 (2) ++++
Регистрация: 11.10.2011
Проблемы с планированием заданий в производстве
Всем добрый день!

У меня возникло некоторое недопонимание работы с заданиями в производстве. Очень прошу помочь!

Имею некоторый маршрут, по которому для производственного заказа сформированы задания.
ПЗ переведён в статус Начато и, к примеру, уже завершено одно задание.
Далее, требуется увеличить время одной из последующих задач, которая ещё не выполнялась. Произвожу изменение в маршруте ПЗ вручную (к примеру, увеличиваю время выполнения в одной из строк).
Далее, вызываю функцию обновления заданий (Обновить / Планирование заданий).
После этого выбираю направление планирования (пробовал разные) и нажимаю ОК.

В результате система перепланирует данные задания и изменяет время, определённое для каждого из заданий, включая Завершённое. Но, как по мне, изменять данные о планировании уже Завершённого задания некорректно, так как дата и время там могут стать даже позже, чем выполняемое задание на данный момент.

Подскажите пожалуйста, в чём суть такой работы функционала. Может чего-то не понимаю или ещё не знаю.
DAX 2009

Заранее спасибо!

Последний раз редактировалось Cardagant; 03.12.2013 в 13:06.
Старый 13.01.2014, 12:30   #2  
Cardagant is offline
Cardagant
Участник
 
317 / 54 (2) ++++
Регистрация: 11.10.2011
Добрый день! Неужели никто не сможет помочь?

Нашёл, что даты редактируются в 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();
Однако насколько я понял, JobTime для завершённых задач устанавливается в нуле и у них всегда будут прописаны даты, от которых производится планирование (ProdParmScheduling.SchedDate и ProdParmScheduling.SchedTime), а также таким заданиям установится галка SchedCancelled, как видно из примера кода, хотя оно уже завершено.

Последний раз редактировалось Cardagant; 13.01.2014 в 13:37.
Старый 13.01.2014, 14:56   #3  
online
fed
Moderator
Аватар для fed
Ex AND Project
Соотечественники
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
2,907 / 5717 (196) ++++++++++
Регистрация: 13.03.2002
Адрес: Hüfingen,DE
Если я не ошибаюсь, в параметрах операции планирования заданий можно указать номер операции для планирования (или перепланирования). И в вашем случае, просто надо сделать некую обертку, которая последовательно вызывает эту операцию для всех незавершенных операций.
Disclaimer: Сам я этого не пробовал, но раз других вариантов нету - попробуйте копать в этом направлении...
За это сообщение автора поблагодарили: Cardagant (1).
Старый 13.01.2014, 16:09   #4  
Cardagant is offline
Cardagant
Участник
 
317 / 54 (2) ++++
Регистрация: 11.10.2011
Цитата:
Сообщение от 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  
online
fed
Moderator
Аватар для fed
Ex AND Project
Соотечественники
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
2,907 / 5717 (196) ++++++++++
Регистрация: 13.03.2002
Адрес: Hüfingen,DE
В общем - не уверен. Но попробовать можно
У меня есть подозрение что при этом могут порушиться связи типа Start-To-Finish или Finish to finish. Хотя с другой стороны - если задания уже завершены - то поезд ушел и у нас все равно цепочки оборвуться - даже если мы по другому спланируем...
Старый 13.01.2014, 16:52   #6  
Cardagant is offline
Cardagant
Участник
 
317 / 54 (2) ++++
Регистрация: 11.10.2011
Цитата:
Сообщение от fed Посмотреть сообщение
В общем - не уверен. Но попробовать можно
У меня есть подозрение что при этом могут порушиться связи типа Start-To-Finish или Finish to finish. Хотя с другой стороны - если задания уже завершены - то поезд ушел и у нас все равно цепочки оборвуться - даже если мы по другому спланируем...
У меня подобный ход мыслей. Тогда буду пробовать сделать так.
Спасибо Вам за ответы!
Теги
планирование заданий, производство

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Проблемы с Exists Join Logger DAX: Программирование 28 28.04.2010 02:54
Перепланирование производственных заданий по факту spy DAX: Функционал 11 12.08.2009 10:13
Модификация возврата партий в производстве (Axapta 3.0) Paul_ST DAX: Программирование 1 07.02.2006 12:11
Проблемы работы ERP в многофилиальной и территориально разнесённой компании СНГ. SlavaK DAX: Прочие вопросы 18 02.03.2004 15:25
Планирование заданий в производстве PSA DAX: Функционал 15 02.02.2004 17:59
Опции темы Поиск в этой теме
Поиск в этой теме:

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

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

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

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