Стояла такая задача:
Пусть у нас есть производственный заказ с более менее правильной спецификацией и фиктивный маршрутом в 1 операцию - сделать хорошо, он выполняется, т.е. разносятся журналы, меняются статусы и т.д.
И вот настал момент, когда фиктивный маршрут нам нужно поменять на нормальный(пронормированный и прочее), но нам необходимо:
- отгрузочные накладные не откатывать (что списали, то уже не вернешь);
- откатить старые журналы карат заданий;
- обновить журнал карта заданий;
- провести все задания из нового журнала;
- списать новые позиции спецификации если такие есть;
Решению, которое нашла я:
Откатывала журналы карты заданий
X++:
ProdJournalCheckPostRoute prodJournalCheckPostRoute;
ProdJournalCreateRoute prodJournalCreate;
ProdJournalTable prodJournalTable;
;
prodJournalCreate = ProdJournalCreateRoute::newStatusDecrease( m_prodTable.ProdId );
prodJournalCreate.run();
prodJournalTable = prodJournalCreate.usedProdJournalTable();
if ( prodJournalTable.RecId && prodJournalTable.JournalId )
{
prodJournalCheckPostRoute = ProdJournalCheckPostRoute::newPostJournal( prodJournalTable.JournalId, true );
prodJournalCheckPostRoute.run();
}
Для обновления маршрута я не вводила все необходимые параметры ручками при формировании новых записей в ProdRoute
А использовала бубен и танцы с таблицей ReqRoute,
а именно создавала там маршрут с помощью ReqTrans.createRoute(), далее практически скопипастив метод ReqTransPoMarkFirm.createProdRoute создавала записи в ProdRoute
для обновления заданий пробегала ProdRoute и переписывала задания с помощью
X++:
while select prodRoute
order by OprNum,OprPriority
where prodRoute.ProdId == m_prodTable.ProdId
{
prodJobUpdate = ProdJobUpdate::newProdIdOprNum( prodRoute.ProdId, prodRoute.OprNum);
prodJobUpdate.run();
}
Теперь вопрос, насколько ужасно мое решение? -__-
Знает кто-нибудь менее шаманский способ?