24.10.2016, 11:21 | #1 |
Участник
|
Вопрос по взаимодействию CRM 2011 и AX
Добрый день.
Возникла следующая необходимость: есть кастомная сущность в CRM и соответствующий ей заказ на продажу в АХ. В кастомной сущности есть 3 поля, одно заполняется автоматически при создании объекта, 2 - по прошествии времени (спустя 2-6 недель). И хотелось бы данный поля перенести в связанный заказ на продажу. На данный момент существует уже механизм создания заказа на продажу в АХ через эту кастомную сущность, и он будет дополнен, чтобы поле, которое заполняется в момент создания кастомного объекта, сразу же переносилось в АХ. Но возникли вопросы с тем, как переносить данные из тех полей, которые заполняются спустя время. Вариант с ручным переносом(занесли в карточку кастомного объекта -> нажали кнопку) - самый простой, но специалисту будет необходимо обрабатывать по 20-100 записей при получении, так что вариант так себе. Вариант с сервисом - хороший вариант, но будет потреблять ресурсы. И вариант, который интересен мне: возможно ли как-то через CRM-овские БП запустить синхронизацию и, если да, то как должен выглядеть такой механизм? Т.е. хотелось бы, чтобы на обновление 2 необходимых полей запускался БП, запускалась бы синхронизация с АХ. Это было бы наименьшее потребление ресурсов и времени. Или все-таки первые 2 варианта реалистичнее? |
|
24.10.2016, 12:57 | #2 |
Чайный пьяница
|
А каким образом у вас реализована начальная загрузка данных из CRM в AX?
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством. Подписывайтесь на мой блог, twitter и YouTube канал. Пользуйтесь моим Ultimate Workflow Toolkit |
|
25.10.2016, 03:43 | #3 |
Участник
|
js, soap-запрос и далее
X++: xmlHttp.open('POST', "domain" + port + "/AxdService/SalesOrderService.svc/soap", false); xmlHttp.setRequestHeader('soapAction', "http://tempuri.org/IAxdService/process"); xmlHttp.setRequestHeader('Content-Type', 'text/xml'); try { xmlHttp.send(data); } |
|
25.10.2016, 10:06 | #4 |
Чайный пьяница
|
Ну во-первых я бы рекомендовал перенести эти вызовы в плагин.
Во вторых - сервис я так понимаю самописный? Почему бы там не реализовать и сценарий апдейта и не вызывать этот сервис при обновлении акаунта?
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством. Подписывайтесь на мой блог, twitter и YouTube канал. Пользуйтесь моим Ultimate Workflow Toolkit |
|
25.10.2016, 10:56 | #5 |
Участник
|
Цитата:
или я Вас немного непонимаю, или Вы меня недопоняли... в общем приведенный код и, соответственно, сервис, запускается по кнопке вручную, когда требуется перенести запись из CRM в АХ. Из тех 3 полей, которые будут добавляться, при создании 1 уже будет заполнено и его перенесем сразу, проблем нет. А вот оставшиеся 2 заполняются спустя время. Соответственно, или делаем по аналогии с созданием в сервисе функцию update(как вы написали), и запускаем вручную(новой кнопкой), или, что хотелось бы, если возможно, разработать какой-то механизм с триггером, чтобы при обновлении этих полей запустить функцию update или из этого же сервиса, или в каком-то другом месте, и обновить связанную запись в АХ. |
|
25.10.2016, 12:26 | #6 |
Чайный пьяница
|
Берём в свои руки VS, пособие по разработке плагинов и пилим код
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством. Подписывайтесь на мой блог, twitter и YouTube канал. Пользуйтесь моим Ultimate Workflow Toolkit |
|
|
За это сообщение автора поблагодарили: Дмитрий А.А. (1). |
26.10.2016, 10:09 | #7 |
Участник
|
Как правильно сказал товарищ a33ik - плагин вам в помощь.
В вашем случае нужно реагировать на событие создания записи кастомной сущности и переносить в AX значение первого поля, а так же реагировать на обновление записи (точнее обновление указанных полей записи) и отправлять значения других полей. Т.е. вам нужны два плагина: на событие Create, и на событие Update. Причем, плагин может быть как синхронный, так и асинхронный (что удобно, если допускается лаг по времени в появлении данных в AX). Альтернативой плагину может служить бизнес-правило (Workflow). В этом случае вам нужно будет вместо плагина написать кастомное действие Workflow. |
|
|
|