错误:编译错误:不支持sObject类型“KnowledgeArticleVersion”。

时间:2013-07-01 23:47:01

标签: class error-handling apex-code

我在看起来不再存在的对象上收到错误。当尝试将不相关的Apex触发器部署到生产环境中时,由于此错误,它不会让我失望。有没有人见过这个?你有什么建议吗?

代码

public with sharing class KnowledgeArticleViewerController {
    public KnowledgeArticleVersion article {get; set;}
    private Id articleId;

    public KnowledgeArticleViewerController(ApexPages.standardController stdController) {
        articleId = ApexPages.currentPage().getParameters().get('id');

        List<KnowledgeArticleVersion> articles = [SELECT Id,Title FROM KnowledgeArticleVersion WHERE PublishStatus = 'Online'];

        ApexPages.addMessage( new ApexPages.Message(ApexPages.Severity.ERROR, 'Got article ids: ' + articles.get(0).Id 
         + ' ' + articles.get(1).Id + ' ' + articles.get(2).Id) );

        article = articles.get(0);

    }
}

结束代码

  

错误:编译错误:不支持sObject类型“KnowledgeArticleVersion”。如果您尝试使用自定义对象,请务必在实体名称后附加“__c”。请参考您的WSDL或描述调用以获取适当的名称。在第8栏第44栏

没有KnowledgeArticleVersion个对象,这个代码在我到达这里之前已经实施了两年多。

2 个答案:

答案 0 :(得分:0)

每当您将任何代码更改部署到Salesforce的生产实例时,都会重新编译该实例的所有代码并运行所有测试。

您必须通过删除对不存在的sObject(KnowledgeArticleVersion)的引用来修复此代码,然后才能部署其他更改。

答案 1 :(得分:0)

我遇到了类似的问题(完全相同的错误),但这是针对运行Apex类的Bot。如果其他人遇到相同的权限问题,我将分享解决方案。


您需要确保Bot(或应用)具有KnowledgeArticleVersion对象的权限。

设置权限集sfdc.chatbot.service.permset(如果是针对您的应用,请更改此设置)➡对象设置

然后:

  • 选择Knowledge

    KnowledgeArticleVersion对象位于Knowledge下(我的第一个选项。第二个Knowledge选项具有0个总字段

  • 授予ReadView All权限

  • 保存
  • 返回并重试。