Поле запроса к аннотации тела документа усекается до 2000 символов - PullRequest
2 голосов
/ 02 апреля 2019

Я использую CRM SDK для извлечения данных из таблицы аннотаций в Dynamics 365 CRM с помощью следующего кода.

                QueryExpression query = new QueryExpression("annotation");
                query.Distinct = true;
                query.ColumnSet.AllColumns = true;
                query.Criteria.AddCondition("annotationid", 
                ConditionOperator.Equal, "2A5C8C6C-4155-E911-9114-005056BE2027");
                EntityCollection PartyEnt = CRMUtilities.RetrieveMultiple(query);
                Entity Annotation = new Entity();
                if (PartyEnt.Entities.Count > 0)
                {
                    Annotation = PartyEnt.Entities.FirstOrDefault();
                    string documentBody = Annotation.Attributes["documentbody"].ToString()
                }

Я успешно получаю данные, но с некоторыми ограничениями!

Я извлек данные из аннотации и сохранил строку base64 в переменной documentBody, проблема в том, что он извлек только 2000 символов из атрибутов documentBody, однако в базе данных он содержит более 2000 символов.

Помогите мне!

Что-нибудь нужно настроить в CRM для получения полных данных?

Ответы [ 2 ]

0 голосов
/ 03 апреля 2019

Вы не можете сделать это напрямую, Сначала вам нужно будет преобразовать тело документа в Base64, а затем преобразовать этот base64 в строку Вот пример кода

Annotation = PartyEnt.Entities.FirstOrDefault();
  //converting document body content to bytes              
byte[] fileinByte= Convert.FromBase64String(Annotation.Attributes["documentbody"].ToString());

//Converting to String
string fileContentinString = System.Text.Encoding.UTF8.GetString(fileinByte);
0 голосов
/ 02 апреля 2019

Удалите query.Distinct = true; из вашего запроса.

...