Как установить поле Dynamics CRM/365 со значением Base64String в JavaScript

Я хочу установить «base64string» со строковым значением документа base 64, затем я позже возьму это значение и загружу документ в sharepoint (у меня уже есть код С# для этой работы через консольное приложение).

Мой код ниже, похоже, не работает, в основном значение никогда не устанавливается. Поле base64string является многострочным с 1 миллионом символов.

<html>
<head>
  <meta charset="utf-8">
</head>
<body>
  Please select a file and then hit Evaluate:
  <br/>
  <input id="file" type="file" />
  <button id="button">Upload        
    <script>           
      document.getElementById('button').addEventListener('click', function() {
        var files = document.getElementById('file').files;
        if (files.length > 0) {
          getBase64(files[0]);
        }
      });

      function getBase64(file) {
        var reader = new FileReader();
        reader.readAsDataURL(file);
        reader.onload = function () {        
          Xrm.Page.getAttribute("base64string").setValue(reader.result);
        };
        reader.onerror = function (error) {};
      }        
    </script>      
</body>
</html>

person MswatiLomnyama    schedule 02.07.2018    source источник
comment
Куда вы помещаете этот код?   -  person James Wood    schedule 02.07.2018
comment
@JamesWood код размещается как веб-ресурс в форме кампании   -  person MswatiLomnyama    schedule 02.07.2018


Ответы (1)


В Xrm.Page.getAttribute("base64string") вы уверены, что base64string является именем поля? Если это настраиваемое поле, оно должно иметь префикс, например abc_base64string.

Кроме того, веб-ресурс HTML не может напрямую обращаться к Xrm.Page.

Ссылка на другие веб-ресурсы из веб-ресурса HTML.

Веб-ресурс HTML, добавленный в форму, не может использовать глобальные объекты, определенные библиотекой JavaScript, загруженной в форму. Веб-ресурс HTML может взаимодействовать с объектами Xrm.Page или Xrm.Utility в форме с помощью parent.Xrm.Page или >parent.Xrm.Utility, но глобальные объекты, определенные сценариями форм, не будут доступны с помощью родителя.

Я считаю, что ваш код должен выглядеть примерно так:

reader.onload = function () {        
    parent.Xrm.Page.getAttribute("abc_base64string").setValue(reader.result);
};
person James Wood    schedule 02.07.2018