Допустим Вы написали проект, который берет что-то (например, ObjectId )из формы CRM, а дальше вытаскивает нужные поля из базы или создает какой-то объект,не суть важно. Остановимся на таком примере:

Есть объект сущности Обращение. По нажатию на кнопку «Получить и вернуть»  будет вызываться aspx-страница, которая получит GUID текущего Обращения, найдет всю Электронную почту, у которой «В отношении» прописано данное Обращение и вернет в поле «new_Email» сущности ОБращение GUID первой найденной Электронной почты.

Описывать как делать проект и как получать GUID электронной почты я пока что не буду, остановлюсь на том, как вернуть этот самый GUID в crm форму.

aspxtocrm1

Кнопка "Получить и вернуть" и поле new_email

В конце кода в aspx-странице допишите эту строчку:

Response.Output.Write(«<body><script>window.returnValue=’» + Guid_email + «‘; window.close();</script></body>»);

Тут переменная Guid_email содержит GUID найденной Электронной почты (В моем случае он такой : 3084f505-dd01-de11-bc53-000c29f1b2cb ).Выполнение этой строки обеспечит нам возврат значения и закроет aspx-страницу.

Теперь как словить это значение в форме CRM?

В событии OnLoad формы Обращения прописываем следующий код:

window.doEmail=function()
{

eGuid=window.showModalDialog («/AspxToCrm?oId=»+crmForm.ObjectId);

crmForm.all.new_email.DataValue=eGuid;

}

Тут вызывается моя aspx-страница (лежит в вирт каталоге AspxToCrm). При вызове она принимает GUID текущего обращения. Кстати, на всякий случай, принять GUID мы можем так:

string sId = Request.QueryString["oId"];

В файле isv.config.xml нужно обработать событие при нажатии на кнопку «Получить и вернуть». Тут вызывается функция из кода в OnLoad‘е:

<Entity name=»incident»>
<ToolBar ValidForCreate=»0″ ValidForUpdate=»1″>
<Button Icon=»/_imgs/ico_18_debug.gif» JavaScript=»window.doEmail();» PassParams=»1″ WinParams=»" WinMode=»0″>
<Titles>
<Title LCID=»1049″ Text=»Получить и вернуть» />
</Titles>
<ToolTips>
<ToolTip LCID=»1049″ Text=»Получить и вернуть» />
</ToolTips>
</Button>
</ToolBar>
</Entity>

Ну а теперь сохраняем, публикуем и смотрим на результат :)

aspxtocrm2

Кнопка "Получить и вернуть" и поле new_email

Опять-таки, можно проще это сделать, чтобы страница вообще не открывалась, но при этом код срабатывал, но там уже надо юзать xml :)