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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 04.10.2018, 17:29   #1  
syl is offline
syl
Участник
Аватар для syl
 
236 / 21 (1) +++
Регистрация: 10.06.2015
Адрес: Киев
D365 Handle timesheetline workflow submission
D365 необходимо после отправки TSTimesheetLine в Workflow, в зависимости от условий переназначить ее на другого человека. Собственно вопрос в том как отследить этот момент?
Старый 04.10.2018, 17:54   #2  
EVGL is offline
EVGL
Banned
Соотечественники
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
4,445 / 3001 (0) ++++++++++
Регистрация: 09.07.2002
Адрес: Parndorf, AT
Что значит "отследить момент"? "Отследить" или "перенаправить"?
Старый 04.10.2018, 18:31   #3  
syl is offline
syl
Участник
Аватар для syl
 
236 / 21 (1) +++
Регистрация: 10.06.2015
Адрес: Киев
Я имею ввиду что нужно где то написать EventHandler или Extension. Но я не могу ни за что зацепиться...
Старый 04.10.2018, 19:43   #4  
EVGL is offline
EVGL
Banned
Соотечественники
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
4,445 / 3001 (0) ++++++++++
Регистрация: 09.07.2002
Адрес: Parndorf, AT
Цитата:
Сообщение от syl Посмотреть сообщение
Я имею ввиду что нужно где то написать EventHandler или Extension. Но я не могу ни за что зацепиться...
Зачем что-либо писать, если можно сконфигурировать? Поставьте условие внутри workflow, и перенаправляйте:
Нажмите на изображение для увеличения
Название: TScondition.PNG
Просмотров: 157
Размер:	231.3 Кб
ID:	12102

Либо как вариант создайте цепь последовательных одобрений, которые выполняются автоматически, если срабатывает некое условие, либо остаются у человека:
Нажмите на изображение для увеличения
Название: TSWorkflow.png
Просмотров: 255
Размер:	67.6 Кб
ID:	12101
Старый 05.10.2018, 12:24   #5  
syl is offline
syl
Участник
Аватар для syl
 
236 / 21 (1) +++
Регистрация: 10.06.2015
Адрес: Киев
Об этом я подумал в первую очередь. Но так не выходит, внутри воркфлоу не видно тех данных что нужны для условия, да и само условие довольно сложное
Старый 05.10.2018, 13:33   #6  
Ivanhoe is offline
Ivanhoe
Участник
Аватар для Ivanhoe
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
4,143 / 2156 (80) +++++++++
Регистрация: 29.09.2005
Адрес: Санкт-Петербург
А где данные есть? В 2012 я писал методы основной сущности, они отображались в редакторе. А внутри метода соответственно вся логика.

С помощью extension нельзя свой метод реализовать? В классе TsWorkflowTimesheetLines свой parm написать.
__________________
Ivanhoe as is..
За это сообщение автора поблагодарили: EVGL (1).
Старый 05.10.2018, 14:38   #7  
EVGL is offline
EVGL
Banned
Соотечественники
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
4,445 / 3001 (0) ++++++++++
Регистрация: 09.07.2002
Адрес: Parndorf, AT
Так точно. "Lines without project manager" на моем скриншоте - добавленный parm-метод.
Старый 05.10.2018, 15:18   #8  
syl is offline
syl
Участник
Аватар для syl
 
236 / 21 (1) +++
Регистрация: 10.06.2015
Адрес: Киев
Можете скинуть код этого метода. Я что то не могу пока сообразить как это работает. На методы в этом классе нету никаких Reference'ов
Старый 05.10.2018, 15:26   #9  
Ivanhoe is offline
Ivanhoe
Участник
Аватар для Ivanhoe
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
4,143 / 2156 (80) +++++++++
Регистрация: 29.09.2005
Адрес: Санкт-Петербург
Там в стандарте есть метод parm - сделайте по аналогии. На вход запись базовой таблицы подается, дальше сами реализуйте свою логику.
__________________
Ivanhoe as is..
Старый 05.10.2018, 15:40   #10  
syl is offline
syl
Участник
Аватар для syl
 
236 / 21 (1) +++
Регистрация: 10.06.2015
Адрес: Киев
В том и дело, что там 2 парм метода с разными параметрами. Мне не понятно как система понимает что туда передать
Старый 05.10.2018, 16:40   #11  
Ivanhoe is offline
Ivanhoe
Участник
Аватар для Ivanhoe
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
4,143 / 2156 (80) +++++++++
Регистрация: 29.09.2005
Адрес: Санкт-Петербург
У меня метод один:
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..
Старый 05.10.2018, 16:51   #12  
syl is offline
syl
Участник
Аватар для syl
 
236 / 21 (1) +++
Регистрация: 10.06.2015
Адрес: Киев
Идея в том что кроме условия надо достать ресурс на который строка будет переназначаться из кастомной таблицы через ряд рилейшнов. Или его тоже можно задать парм методом?
Старый 05.10.2018, 16:56   #13  
Ivanhoe is offline
Ivanhoe
Участник
Аватар для Ivanhoe
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
4,143 / 2156 (80) +++++++++
Регистрация: 29.09.2005
Адрес: Санкт-Петербург
Это вам надо смотреть в сторону Workflow Participant Assignment Providers. Писать своего, тогда в редакторе Workflow сможете указывать не конкретного сотрудника - а метод. А в методе уже решать, кого вернуть как участника.
__________________
Ivanhoe as is..
Старый 05.10.2018, 17:02   #14  
syl is offline
syl
Участник
Аватар для syl
 
236 / 21 (1) +++
Регистрация: 10.06.2015
Адрес: Киев
Ну возвращаясь к первоначальному вопросу: где ловить событие WorkflowActivated или типа того что бы переасайнить на другого человека?
Старый 05.10.2018, 17:28   #15  
Ivanhoe is offline
Ivanhoe
Участник
Аватар для Ivanhoe
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
4,143 / 2156 (80) +++++++++
Регистрация: 29.09.2005
Адрес: Санкт-Петербург
В редакторе WF у вас есть несколько вариантов сделать ветвление и/или изменить шаги согласования:
1. условие на основании данных документа-основания - это методы parm
2. подстановочная модель участника WF - это класс наследник для participant provider.

Как я понял задачу - нужно по условиям выбирать разных участников WF, которых нельзя заранее прописать в сценарии, а нужно "вычислять" на лету. Пишете своего провайдера, называете условно "Случайный согласователь" - указываете вместо ФИО на нужно шаге согласования "Случайный согласователь". При переходе WF на этот шаг система запустит ваш класс-провайдер и назначит шаг согласования на того, кого вернет ваш класс.
__________________
Ivanhoe as is..
Старый 05.10.2018, 17:30   #16  
Ivanhoe is offline
Ivanhoe
Участник
Аватар для Ivanhoe
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
4,143 / 2156 (80) +++++++++
Регистрация: 29.09.2005
Адрес: Санкт-Петербург
В стандарте есть пример провайдера WorkflowUserGroupParticipantProvider - позволяет в сценарии указать не конкретного ФИО, а группу пользователей. И система сама при перехода на шаг WF посмотрит на состав этой группы пользователей и каждому из них пришлет задание поучаствовать в WF.
__________________
Ivanhoe as is..
Старый 05.10.2018, 17:37   #17  
Ivanhoe is offline
Ivanhoe
Участник
Аватар для Ivanhoe
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
4,143 / 2156 (80) +++++++++
Регистрация: 29.09.2005
Адрес: Санкт-Петербург
Вот на шаге согласования в назначении участника нужно выбрать "Participant" а потом на второй вкладке выбрать Тип - тут и будет в списке ваш самописный провайдер.
Миниатюры
Нажмите на изображение для увеличения
Название: Screenshot_19.png
Просмотров: 225
Размер:	160.8 Кб
ID:	12105   Нажмите на изображение для увеличения
Название: Screenshot_20.png
Просмотров: 228
Размер:	73.8 Кб
ID:	12106  

__________________
Ivanhoe as is..
Старый 06.10.2018, 00:56   #18  
EVGL is offline
EVGL
Banned
Соотечественники
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
4,445 / 3001 (0) ++++++++++
Регистрация: 09.07.2002
Адрес: Parndorf, AT
Есть только маленькое "но": в D365FO через extensions не получится подключить нового провайдера к существующему workflow. Остается серия parm-методов и цепочка IF-ов.
Старый 06.10.2018, 09:16   #19  
Ivanhoe is offline
Ivanhoe
Участник
Аватар для Ivanhoe
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
4,143 / 2156 (80) +++++++++
Регистрация: 29.09.2005
Адрес: Санкт-Петербург
А в существующего провайдера добавить свой вариант? Как я понимаю екстеншены, должно быть возможно.
__________________
Ivanhoe as is..
Старый 08.10.2018, 09:30   #20  
Ivanhoe is offline
Ivanhoe
Участник
Аватар для Ivanhoe
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
4,143 / 2156 (80) +++++++++
Регистрация: 29.09.2005
Адрес: Санкт-Петербург
Цитата:
Сообщение от EVGL Посмотреть сообщение
Есть только маленькое "но": в D365FO через extensions не получится подключить нового провайдера к существующему workflow. Остается серия parm-методов и цепочка IF-ов.
Есть провайдеры, которые AvailableForAllWorkflowTemplates = Yes, если свой сделать новый и поставить это свойство, в существующие WF он не добавится? Не очень, что он везде будет виден, но тоже вариант.
__________________
Ivanhoe as is..
За это сообщение автора поблагодарили: EVGL (5).
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
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

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

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

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