Sam's Microsoft Dynamics 365 Blog

Tuesday, 23 October 2018

Display SharePoint Documents on Form in MS Dynamics CRM


Here’s an easy way to embed the SharePoint document window you’d normally get by navigating to “Documents” under related records, which includes all the native functionality like search, upload, 
This might fall under the area of semi/not supported but if it happens to break one day you won’t have invested too much.

You’ll need to create an iFrame for the SharePoint content, probably within it’s own tab. Remember what you name the iFrame as you’ll need to modify with that value. 

When configuring the iFrame...

On the General tab:

  • Restrict cross-frame scripting… to Unchecked
On the Formatting tab:
  • Number of Rows to 34
  • Scrolling to Never
  • Display Border to Unchecked
You could set the rows to a lower number, you’d just end up with a scrollbar despite the never scroll setting. 

Take this code and update the iFrame name and add it to the form. Call SetDocumentFrame during the form’s OnLoad event.







function SetDocumentiFrame() {

    try {
        // Get Subgrid URL
        var url = Xrm.Page.context.getClientUrl() +
            "/userdefined/areas.aspx?formid=ab44efca-df12-432e-a74a-83de61c3f3e9&inlineEdit=1&navItemName=Documents&oId=%7b" +
            Xrm.Page.data.entity.getId().replace("{", "").replace("}", "") + "%7d&oType=" +
            Xrm.Page.context.getQueryStringParameters().etc +
            "&pagemode=iframe&rof=true&security=852023&tabSet=areaSPDocuments&theme=Outlook15White";

        ///Append subgrid in Iframe
        Xrm.Page.getControl("IFRAME_SharePointDocuments").setSrc(url);
    }
    catch (err) {

    }


}


If you’re doing this, you might also consider turning on the option to auto-create SharePoint folders. Otherwise people are going to be getting prompted. You can find this under:

Settings => Document Management => Document Management Settings and then it’s on the 2nd page. 





With any luck, you’ll end up with something like this:








Wednesday, 3 October 2018

Display Image of Product in Dynamics Portal


In this blog, i am going to discuss about “Image” type attribute/field display in Dynamics Portal. Here we have an Image for a Product, we will display this image on Dynamics Portal.





I am creating a Web Template with name Display_image_Product.




Put below code in Source.

// Get Product Id from URL and assign it in pid
 {% assign pid = request.params['id'] %}
   {% fetchxml my_query %}
    <fetch version="1.0" mapping="logical">
    <entity name="product">
      <attribute name="name" />
      <attribute name="productid" />
      <attribute name="entityimage" />
      <attribute name="entityimage_url" />
<filter type="and">
<condition attribute="productid" value="{{ pid }}" uitype="product" operator="eq"/>
</filter>
     </entity>
  </fetch>
{% endfetchxml %}

 {% for result in my_query.results.entities %}
<img data-entityimage="{{ result.entityimage | join: ',' }}" />

<script type="text/javascript">

function toBase64(str) {
if (!str) return null;
var uarr = new Uint8Array(str.split(',').map(function (x) { return parseInt(x); }));
return btoa(String.fromCharCode.apply(null, uarr));
}

// Find any entity images and convert the byte string to base64
window.addEventListener('load', function () {
document.querySelectorAll('img[data-entityimage]').forEach(function (img) {
var data = img.dataset && img.dataset.entityimage;
var base64data = data ? toBase64(data) : null;
if (base64data) {
img.src = 'data:image/jpeg;base64,' + base64data;
}
});
});
</script>
          
 {% endfor %}


In above code it will get a Product Guid and will fetch its related image.



Here i have used in my Portal and it looks like:-


Web Resource vs PCF vs Canvas App - which of the one is used?

While started working on specific Business Requirements related to custom layout, there is a always common question that "where to star...