【发布时间】:2017-01-05 04:55:20
【问题描述】:
我正在尝试创建一个打开选项卡的操作,将上传文件的外部 URL 插入选项卡,并导航到该 URL,就像用户单击“文件”按钮然后单击文件的标题之一一样打开包含文件内容的选项卡。
这是我用来获取外部链接的代码。请注意,对于此示例,我将 FileID 作为扩展列存储在 InventoryItem 表中:
PXView item = Base.Views["Item"];
InventoryItem item = PXSelect<InventoryItem, Where<InventoryItem.inventoryCD,
Equal<Current<InventoryItem.inventoryCD>>>>
.Select(Base, Base.Views["Item"].Cache.Current);
InventoryItemExt itemext = item.Cache.GetExtension<InventoryItemExt>(item);
UploadFileWithIDSelector fileInfo = PXSelect<UploadFileWithIDSelector,
Where<UploadFileWithIDSelector.fileID,
Equal<Current<PX.Objects.IN.InventoryItemExt.usrDefaultSpecID>>>
.Select(Base, itemext.UsrDefaultSpecID);
然后我尝试执行以下代码以使用 ExternalLink 打开页面:
throw new PXRedirectToUrlException(fileInfo.ExternalLink, "");
这会导致以下错误:
对象引用未设置为对象的实例。
DAC无法直接获取外部链接吗?有什么办法可以解决这个问题,以便它检索外部链接?是否有另一种(可能更简单)的方法来检索上传文件的外部链接?
谢谢
【问题讨论】:
-
可能与您的问题无关,但您将参数传递给 BQL 查询,就好像您使用的是Required而不是Current。如果可行,则意味着您当前的记录与您指定的记录相同。此外,获取库存项目的第一个查询是有缺陷的,因为Required 会期望一个InventoryCD 而不是一个完整的对象。你很可能会得到你想要的:
InventoryItem item = Base.Item.Current;和InventoryItemExt itemext = PXCache<InventoryItem>.GetExtension<InventoryItemExt>(item);,或者只使用没有参数的最后一行。
标签: acumatica