Динамика 365 SearchByTitleKbArticleRequest не возвращает записей

Я пытаюсь получить kbarticle из онлайн-экземпляра Dynamics 365. Я использую очень простой запрос, предоставленный примером SDK, но он никогда не возвращает kbarticle.

Ниже приведен код:

 SearchByTitleKbArticleRequest searchByTitleRequest =
                    new SearchByTitleKbArticleRequest()
                    {
                        SubjectId = subjectId, // I have retrieved subjectid earlier. 
                        UseInflection = false,
                        SearchText = "My Article",
                        QueryExpression = new QueryExpression()
                        {
                            ColumnSet = new ColumnSet(true),
                            EntityName = "kbarticle" // I've tried knowledgearticle as well.
                        }
                    };

var searchByTitleResponse = (SearchByTitleKbArticleResponse)
                    serviceProxy.Execute(searchByTitleRequest);

        // check success
        var retrievedArticles = searchByTitleResponse.EntityCollection.Entities;                      
        Console . WriteLine ( "  Results of search (titles found):" + retrievedArticles.Count ); // It is always 0
        foreach ( var article in retrievedArticles )
            Console . WriteLine ( article .Id );
  1. В новой версии SDK kbarticle переименовывается в Knowledgearticle. Я попытался использовать знание статьи без удачи.
  2. Соединение с экземпляром CRM Online также является правильным, и я могу выполнять другие запросы с помощью службы RetrieveMultiple.
  3. Статья опубликована, и у меня также есть разрешения на доступ к статье.
  4. Я могу получить ту же статью, используя REST, а также используя RetrieveMultiple, поэтому я не вижу никаких проблем в статье или в моем соединении.

Может кто-нибудь указать мне правильное направление, чтобы это сообщение работало?

1 ответ

Решение

Это зависит от того, какую сущность вы используете, ниже я приведу пример для KnowledgeArticle.

Согласно статьям базы знаний Search с использованием полнотекстового поиска, статья Knowledge индексируется полнотекстовым индексом и поддерживает полнотекстовый поиск SQL Server.

Вы можете использовать FullTextSearchKnowledgeArticleRequest для поиска статей.

var queryExpression = new QueryExpression("knowledgearticle")
{
    ColumnSet = new ColumnSet(true),
    PageInfo = new PagingInfo()
    {
        PageNumber = 1,
        Count = 5,
    }
};

FullTextSearchKnowledgeArticleRequest searchByTitleRequest =
        new FullTextSearchKnowledgeArticleRequest()
        {
            UseInflection = true,
            SearchText = "Error",
            RemoveDuplicates = false,
            StateCode = 0,
            QueryExpression = queryExpression
        };


var fullTextSearchKnowledgeArticleResponse = (FullTextSearchKnowledgeArticleResponse)
                   orgService.Execute(searchByTitleRequest);

// check success
var retrievedArticles = fullTextSearchKnowledgeArticleResponse.EntityCollection.Entities;
Console.WriteLine("Results of search (titles found):" + retrievedArticles.Count);
foreach (var article in retrievedArticles)
    Console.WriteLine(article.Id);

Обратите внимание, что для индексации данных в SQL требуется определенное время, которое может не вернуть вновь созданную статью с использованием FullTextSearchKnowledgeArticleRequest.

Другие вопросы по тегам