如何增加开箱即用字段的长度?

Sim*_* ML 1 acumatica acumatica-kb

目前,我们正在使用 InventoryItem.InventoryCD 字段的全部 30 个字符,但我们需要更多。我们如何将该字段长度增加到 45 个字符?

Sim*_* ML 5

这可以通过创建包含数据库脚本的自定义项目轻松完成。本指南将特定于 InventoryItem.InventoryCD,但该想法可以应用于任何领域。有关详细信息,请参阅末尾的注释部分。

对于 InventoryCD,您需要遵循以下 3 个步骤。

1. 定制项目中的数据库脚本

导航到“自定义项目”屏幕 (SM204505) 并创建一个新的自定义项目。转到 DB Scripts 部分,单击Add并选择Script

复制与您的数据库匹配的脚本,然后单击“确定”:

SQL服务器

DROP INDEX [Inventory_InventoryCD] ON [InventoryItem]
ALTER TABLE InventoryItem ALTER COLUMN InventoryCD nvarchar(45) NOT NULL
CREATE UNIQUE NONCLUSTERED INDEX [Inventory_InventoryCD] ON [dbo].[InventoryItem]
(
    [CompanyID] ASC,
    [InventoryCD] ASC
)
Run Code Online (Sandbox Code Playgroud)

MySQL

ALTER TABLE InventoryItem 
DROP INDEX Inventory_InventoryCD;

ALTER TABLE InventoryItem CHANGE InventoryCD InventoryCD NVARCHAR(45) NOT NULL;

CREATE UNIQUE INDEX Inventory_InventoryCD
ON InventoryItem (CompanyID, InventoryCD);
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

这些脚本仅更改我们需要的列,但为此,我们删除现有索引并在最后重新创建它。您可以手动运行这些命令来测试它们,然后再将它们添加到您的自定义中。

2. 发布项目并重启应用

我们拥有这个定制项目所需的一切。通过转到“发布”菜单并单击“发布并清理”来发布它。成功发布后,导航至系统 > 管理 > 流程 > 应用更新屏幕 (SM203510)。我们将重新启动应用程序,这将重新启动整个网站。请务必在执行此操作之前通知所有用户保存他们的工作!准备好后,单击“重新启动应用程序”

此步骤将确保框架丢弃以前的数据库模式并在内存中加载最新的模式。

3. 更改段长度

最后一步是修改INVENTORY段,以允许 InventoryCD 上有更长的长度。导航至配置 > 通用设置 > 分段按键 > 分段按键屏幕 (CS202000),然后选择INVENTORY作为分段按键 ID。将新长度应用到网格中的线段并保存。您现在可以开始测试了!

在此输入图像描述

笔记

如果您想要修改 Acumatica 中的任何现成字段,则必须根据该字段调整步骤 3。

3a. 替代 DAC 修改

In this steps , you would need to make sure that the DAC field type attribute matches the new columns length. As an example, a DAC string field could have been changed from

[PXDBString(30, IsUnicode = true)]

to

[PXDBString(45, IsUnicode = true)]

You can find more info on DAC fields attributes modifications at this link :

https://help.acumatica.com/(W(11))/Wiki/ShowWiki.aspx?pageid=1911428f-d4ca-4207-9396-a744db21cdfb