Salesforce 尝试执行工作簿apex代码时出错

Salesforce 尝试执行工作簿apex代码时出错,salesforce,Salesforce,尝试执行工作簿apex代码时出错 System.QueryException:列表没有行可分配给SObject:Class.InvoiceUtilities.renumberLineItems:第8行第1列AnonymousBlock:第1行第1列AnonymousBlock:第1行第1列 公共类发票实用程序{ //类方法对给定发票号的行项目重新编号 //返回指示成功或失败的字符串 公共静态字符串renumberLineItemsString invoiceName{ //创建目标发票对象及其行

尝试执行工作簿apex代码时出错

System.QueryException:列表没有行可分配给SObject:Class.InvoiceUtilities.renumberLineItems:第8行第1列AnonymousBlock:第1行第1列AnonymousBlock:第1行第1列

公共类发票实用程序{ //类方法对给定发票号的行项目重新编号 //返回指示成功或失败的字符串 公共静态字符串renumberLineItemsString invoiceName{ //创建目标发票对象及其行项目的副本 发票= [选择i.名称,按名称从行项目中选择名称 从发票上 其中i.Name=:发票名称限制1]; //循环浏览每一行项目,边走边重新编号 整数i=1; 对于第\u行项目\uuu c项:发票。第\u行项目\uu r{ item.Name=String.valueOfi; System.debugitem.Name; i++; } //更新一个事务中的行项目,如果出现任何问题,请回滚 //并将错误消息返回到调用环境 试一试{ database.updateinvoice.Line\u items\u\r; }捕获DME{ 返回e.getMessage; } //成功后,向调用程序返回消息 返回“行项目已成功重新编号”; } }
由于SOQL查询未返回任何值,因此引发了错误。SOQL总是返回一个对象列表,如果只返回一个变量,它将被正确地分配给单个变量。如果SOQL查询结果为零或多个结果,则查询将失败。您必须使用列表

公共类发票实用程序{ //类方法对给定发票号的行项目重新编号 //返回指示成功或失败的字符串 公共静态字符串renumberLineItemsString invoiceName{ //创建目标发票对象及其行项目的副本 列出发票=[选择i.名称, 选择名称 来自第\u行项目\u\r 点名 从发票上 其中i.Name=:发票名称限制1]; 如果!发票是空的{ 发票=发票[0]; //循环浏览每一行项目,边走边重新编号 整数i=1; 对于第\u行项目\uuu c项:发票。第\u行项目\uu r{ item.Name=String.valueOfi; System.debugitem.Name; i++; } //更新一个事务中的行项目,如果出现任何问题,请回滚 //并将错误消息返回到调用环境 试一试{ database.updateinvoice.Line\u items\u\r; }捕获DME{ 返回e.getMessage; } //成功后,向调用程序返回消息 返回“行项目已成功重新编号”; }否则{ 返回“未找到重新编号的记录”; } } }