如何保存记录并立即使用其GUID

jim*_*bob 2 dynamics-crm dynamics-crm-2011

我正在从功能区按钮执行一些javascript,我想要做的是保存我正在创建的记录,然后立即将其GUID用于某些代码.每次我尝试它时,即使我在保存记录后请求它,GUID也会返回null.如果我在保存之后再次尝试按钮,那么它可以工作,但不是因为我正在保存它.

有没有办法做到这一点?

function RibbonButton_AddProduct()
{
  //Save the Record
  Xrm.Page.data.entity.save();

  LoadProductCreate();
}

function LoadProductCreate()
{
  var serverUrl;
  var errorMessage = "Context to retrieve the Server URL is not available.";
  if (typeof GetGlobalContext != "undefined"){
     serverUrl = GetGlobalContext().getServerUrl();
  } else {
  if (typeof Xrm != "undefined"){
    serverUrl = Xrm.Page.context.getServerUrl();
  } else {
    alert(errorMessage);
    return;
  }
}
if (serverUrl.match(/\/$/)){
   serverUrl = serverUrl.substring(0, serverUrl.length - 1);
}     

var recordId = Xrm.Page.data.entity.getId();

alert(recordId);
var url = serverUrl + "/main.aspx?etc=10030&extraqs=%3f_CreateFromId%3d%"+recordId
  +"%257d%26_CreateFromType%3d10029%26etc%3d10030%26"
  +"pagemode%3diframe%26preloadcache%3d1345465354543&pagetype=entityrecord";
window.open(url);
}
Run Code Online (Sandbox Code Playgroud)

Jam*_*ood 9

这是解决此问题的不同方法.

你要做的是"对抗系统" - 你实际上是在制作两个保存按钮.在Crm的其余部分,当功能区按钮需要Id时,必须首先保存记录.例如,您无法在未保存的记录上使用对话框或工作流程按钮,也无法将"新/现有"添加到未保存的记录中.

因此,我的解决方案是禁用未保存表单上的按钮,强制用户手动保存记录,然后允许他们使用您的按钮 - 这是Crm的使用方式,并且Crm的其余部分将使用工作.

你不应该反对系统,你应该使用它,你有一个产品来定制和扩展 - 而不是改变.

如果这不符合你的要求,我会建议使用格雷格的建议(1)有标志,虽然听起来有点乱 - 但这是一个固有的要求.