Динамика 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 );
- В новой версии SDK kbarticle переименовывается в Knowledgearticle. Я попытался использовать знание статьи без удачи.
- Соединение с экземпляром CRM Online также является правильным, и я могу выполнять другие запросы с помощью службы RetrieveMultiple.
- Статья опубликована, и у меня также есть разрешения на доступ к статье.
- Я могу получить ту же статью, используя 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.