You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Acumatica 23 R1及以上版本运行时获取已发布自定义项目列表

在Acumatica 23 R1及以上版本获取已发布自定义项目列表的方法

一、数据库层面查询

Acumatica 23R1版本中,已发布的项目信息存储在dbo.SiteMapProject和dbo.SiteMapProjectItem表中,替代了旧版本的CustPublishProject表。

1. 获取所有已发布项目

SELECT * 
FROM dbo.SiteMapProject
WHERE IsPublished = 1

2. 关联自定义项目(如CustProject)查询已发布的自定义项

如果需要筛选出已发布的CustProject自定义项,可以通过关联SiteMapProjectItem表(记录项目与具体实体的关联关系)实现:

SELECT c.* 
FROM dbo.CustProject c
INNER JOIN dbo.SiteMapProjectItem spi 
    ON spi.EntityID = c.ProjID 
    AND spi.EntityType = 'CustProject' -- 指定实体类型
INNER JOIN dbo.SiteMapProject p 
    ON p.ProjectID = spi.ProjectID 
    AND p.IsPublished = 1

二、Acumatica运行时代码获取

在自定义代码中,可以通过PXSelect查询已发布项目,示例如下:

1. 获取所有已发布项目

using PX.Data;

// 在Graph类中执行查询
var publishedProjects = PXSelect<SiteMapProject, 
    Where<SiteMapProject.isPublished, Equal<True>>>.Select(this);

2. 获取已发布的CustProject自定义项

using PX.Data;

var publishedCustProjects = PXSelectJoin<CustProject,
    InnerJoin<SiteMapProjectItem, On<SiteMapProjectItem.entityID, Equal<CustProject.projID>,
        And<SiteMapProjectItem.entityType, Equal<Required<SiteMapProjectItem.entityType>>>>,
    InnerJoin<SiteMapProject, On<SiteMapProject.projectID, Equal<SiteMapProjectItem.projectID>,
        And<SiteMapProject.isPublished, Equal<True>>>>>,
    Where<SiteMapProjectItem.entityType, Equal<Required<SiteMapProjectItem.entityType>>>>
    .Select(this, "CustProject", "CustProject");

说明

Acumatica在2021R2及后续版本(包含23R1)重构了发布项目的存储机制,将原有的项目发布表统一替换为SiteMapProject(记录项目基本信息)和SiteMapProjectItem(记录项目包含的具体实体/项),因此旧代码中的CustPublishProject表不再存在。

内容的提问来源于stack exchange,提问作者user2803805

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 12:22:58