AXForum  
Go Back   AXForum > Microsoft Dynamics AX > DAX: Программирование
DAX
Forgotten Your Password?
Register Forum Rules FAQ Members List Today's Posts Search

 
 
Thread Tools Search this Thread Display Modes
Old 04.10.2018, 17:29   #1  
syl is offline
syl
Участник
syl's Avatar
 
236 / 21 (1) +++
Join Date: 10.06.2015
Location: Киев
D365 Handle timesheetline workflow submission
D365 необходимо после отправки TSTimesheetLine в Workflow, в зависимости от условий переназначить ее на другого человека. Собственно вопрос в том как отследить этот момент?
Old 04.10.2018, 17:54   #2  
EVGL is offline
EVGL
Banned
Соотечественники
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
4,445 / 3001 (0) ++++++++++
Join Date: 09.07.2002
Location: Parndorf, AT
Что значит "отследить момент"? "Отследить" или "перенаправить"?
Old 04.10.2018, 18:31   #3  
syl is offline
syl
Участник
syl's Avatar
 
236 / 21 (1) +++
Join Date: 10.06.2015
Location: Киев
Я имею ввиду что нужно где то написать EventHandler или Extension. Но я не могу ни за что зацепиться...
Old 04.10.2018, 19:43   #4  
EVGL is offline
EVGL
Banned
Соотечественники
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
4,445 / 3001 (0) ++++++++++
Join Date: 09.07.2002
Location: Parndorf, AT
Quote:
Originally Posted by syl View Post
Я имею ввиду что нужно где то написать EventHandler или Extension. Но я не могу ни за что зацепиться...
Зачем что-либо писать, если можно сконфигурировать? Поставьте условие внутри workflow, и перенаправляйте:
Click image for larger version

Name:	TScondition.PNG
Views:	1018
Size:	231.3 KB
ID:	12102

Либо как вариант создайте цепь последовательных одобрений, которые выполняются автоматически, если срабатывает некое условие, либо остаются у человека:
Click image for larger version

Name:	TSWorkflow.png
Views:	996
Size:	67.6 KB
ID:	12101
Old 05.10.2018, 12:24   #5  
syl is offline
syl
Участник
syl's Avatar
 
236 / 21 (1) +++
Join Date: 10.06.2015
Location: Киев
Об этом я подумал в первую очередь. Но так не выходит, внутри воркфлоу не видно тех данных что нужны для условия, да и само условие довольно сложное
Old 05.10.2018, 13:33   #6  
Ivanhoe is offline
Ivanhoe
Участник
Ivanhoe's Avatar
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
4,143 / 2161 (81) +++++++++
Join Date: 29.09.2005
Location: Санкт-Петербург
А где данные есть? В 2012 я писал методы основной сущности, они отображались в редакторе. А внутри метода соответственно вся логика.

С помощью extension нельзя свой метод реализовать? В классе TsWorkflowTimesheetLines свой parm написать.
__________________
Ivanhoe as is..
This post has been rated by: EVGL (1).
Old 05.10.2018, 14:38   #7  
EVGL is offline
EVGL
Banned
Соотечественники
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
4,445 / 3001 (0) ++++++++++
Join Date: 09.07.2002
Location: Parndorf, AT
Так точно. "Lines without project manager" на моем скриншоте - добавленный parm-метод.
Old 05.10.2018, 15:18   #8  
syl is offline
syl
Участник
syl's Avatar
 
236 / 21 (1) +++
Join Date: 10.06.2015
Location: Киев
Можете скинуть код этого метода. Я что то не могу пока сообразить как это работает. На методы в этом классе нету никаких Reference'ов
Old 05.10.2018, 15:26   #9  
Ivanhoe is offline
Ivanhoe
Участник
Ivanhoe's Avatar
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
4,143 / 2161 (81) +++++++++
Join Date: 29.09.2005
Location: Санкт-Петербург
Там в стандарте есть метод parm - сделайте по аналогии. На вход запись базовой таблицы подается, дальше сами реализуйте свою логику.
__________________
Ivanhoe as is..
Old 05.10.2018, 15:40   #10  
syl is offline
syl
Участник
syl's Avatar
 
236 / 21 (1) +++
Join Date: 10.06.2015
Location: Киев
В том и дело, что там 2 парм метода с разными параметрами. Мне не понятно как система понимает что туда передать
Old 05.10.2018, 16:40   #11  
Ivanhoe is offline
Ivanhoe
Участник
Ivanhoe's Avatar
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
4,143 / 2161 (81) +++++++++
Join Date: 29.09.2005
Location: Санкт-Петербург
У меня метод один:
X++:
/// <summary>
    /// This method is used to specify conditions on total number of hours while setting up the configuration for timesheet line workflow.
    /// </summary>
    /// <param name="_companyId">
    /// Present Company Id supplied by framework.
    /// </param>
    /// <param name="_tableId">
    /// Table Id supplied by framework.
    /// </param>
    /// <param name="_recId">
    /// Record Id of the timesheetline for which total number of hours is required.
    /// </param>
    /// <returns>
    /// Total number of hours in the timesheet line.
    /// </returns>
    public TSHoursTotal parmTotalWeekHours(
        CompanyId _companyId,
        TableId   _tableId,
        RecId     _recId)
    {
        TSHoursTotal    tsHoursTotal;
        TSTimesheetLine tsTimesheetLine = TSTimesheetLine::findRecId(_recId);

        if (tsTimesheetLine.RecId != 0)
        {
            tsHoursTotal = tsTimesheetLine.totalWeekHours();
        }
        else
        {
            throw error(strFmt("@SYS113080", _recId, tableId2name(_tableId)));
        }

        return tsHoursTotal;
    }
__________________
Ivanhoe as is..
Old 05.10.2018, 16:51   #12  
syl is offline
syl
Участник
syl's Avatar
 
236 / 21 (1) +++
Join Date: 10.06.2015
Location: Киев
Идея в том что кроме условия надо достать ресурс на который строка будет переназначаться из кастомной таблицы через ряд рилейшнов. Или его тоже можно задать парм методом?
Old 05.10.2018, 16:56   #13  
Ivanhoe is offline
Ivanhoe
Участник
Ivanhoe's Avatar
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
4,143 / 2161 (81) +++++++++
Join Date: 29.09.2005
Location: Санкт-Петербург
Это вам надо смотреть в сторону Workflow Participant Assignment Providers. Писать своего, тогда в редакторе Workflow сможете указывать не конкретного сотрудника - а метод. А в методе уже решать, кого вернуть как участника.
__________________
Ivanhoe as is..
Old 05.10.2018, 17:02   #14  
syl is offline
syl
Участник
syl's Avatar
 
236 / 21 (1) +++
Join Date: 10.06.2015
Location: Киев
Ну возвращаясь к первоначальному вопросу: где ловить событие WorkflowActivated или типа того что бы переасайнить на другого человека?
Old 05.10.2018, 17:28   #15  
Ivanhoe is offline
Ivanhoe
Участник
Ivanhoe's Avatar
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
4,143 / 2161 (81) +++++++++
Join Date: 29.09.2005
Location: Санкт-Петербург
В редакторе WF у вас есть несколько вариантов сделать ветвление и/или изменить шаги согласования:
1. условие на основании данных документа-основания - это методы parm
2. подстановочная модель участника WF - это класс наследник для participant provider.

Как я понял задачу - нужно по условиям выбирать разных участников WF, которых нельзя заранее прописать в сценарии, а нужно "вычислять" на лету. Пишете своего провайдера, называете условно "Случайный согласователь" - указываете вместо ФИО на нужно шаге согласования "Случайный согласователь". При переходе WF на этот шаг система запустит ваш класс-провайдер и назначит шаг согласования на того, кого вернет ваш класс.
__________________
Ivanhoe as is..
Old 05.10.2018, 17:30   #16  
Ivanhoe is offline
Ivanhoe
Участник
Ivanhoe's Avatar
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
4,143 / 2161 (81) +++++++++
Join Date: 29.09.2005
Location: Санкт-Петербург
В стандарте есть пример провайдера WorkflowUserGroupParticipantProvider - позволяет в сценарии указать не конкретного ФИО, а группу пользователей. И система сама при перехода на шаг WF посмотрит на состав этой группы пользователей и каждому из них пришлет задание поучаствовать в WF.
__________________
Ivanhoe as is..
Old 05.10.2018, 17:37   #17  
Ivanhoe is offline
Ivanhoe
Участник
Ivanhoe's Avatar
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
4,143 / 2161 (81) +++++++++
Join Date: 29.09.2005
Location: Санкт-Петербург
Вот на шаге согласования в назначении участника нужно выбрать "Participant" а потом на второй вкладке выбрать Тип - тут и будет в списке ваш самописный провайдер.
Attached Thumbnails
Click image for larger version

Name:	Screenshot_19.png
Views:	769
Size:	160.8 KB
ID:	12105   Click image for larger version

Name:	Screenshot_20.png
Views:	714
Size:	73.8 KB
ID:	12106  

__________________
Ivanhoe as is..
Old 06.10.2018, 00:56   #18  
EVGL is offline
EVGL
Banned
Соотечественники
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
4,445 / 3001 (0) ++++++++++
Join Date: 09.07.2002
Location: Parndorf, AT
Есть только маленькое "но": в D365FO через extensions не получится подключить нового провайдера к существующему workflow. Остается серия parm-методов и цепочка IF-ов.
Old 06.10.2018, 09:16   #19  
Ivanhoe is offline
Ivanhoe
Участник
Ivanhoe's Avatar
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
4,143 / 2161 (81) +++++++++
Join Date: 29.09.2005
Location: Санкт-Петербург
А в существующего провайдера добавить свой вариант? Как я понимаю екстеншены, должно быть возможно.
__________________
Ivanhoe as is..
Old 08.10.2018, 09:30   #20  
Ivanhoe is offline
Ivanhoe
Участник
Ivanhoe's Avatar
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
4,143 / 2161 (81) +++++++++
Join Date: 29.09.2005
Location: Санкт-Петербург
Quote:
Originally Posted by EVGL View Post
Есть только маленькое "но": в D365FO через extensions не получится подключить нового провайдера к существующему workflow. Остается серия parm-методов и цепочка IF-ов.
Есть провайдеры, которые AvailableForAllWorkflowTemplates = Yes, если свой сделать новый и поставить это свойство, в существующие WF он не добавится? Не очень, что он везде будет виден, но тоже вариант.
__________________
Ivanhoe as is..
This post has been rated by: EVGL (5).
 

Similar Threads
Thread Thread Starter Forum Replies Last Post
Workflow и Budget control на закупке D365 wojzeh DAX: Функционал 2 10.01.2018 18:16
atinkerersnotebook: Developing a Product Approval Workflow in Dynamics AX 2012 Blog bot DAX Blogs 0 09.11.2013 17:12
atinkerersnotebook: Using Vendor Requests to Manage On-boarding New Vendors Blog bot DAX Blogs 1 22.10.2013 02:24
Solutions Monkey: Using Microsoft Dynamics Ax 2009 Workflow controls in EP Blog bot DAX Blogs 0 30.07.2008 10:05
Arijit Basu: AX 2009 Workflows: A Quick overview Blog bot DAX Blogs 0 19.06.2008 02:07

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Forum Jump

Рейтинг@Mail.ru
All times are GMT +3. The time now is 17:30.
Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Contacts E-mail, Advertising.