如何增加现成字段的长度?
How to increase the length of out-of-the-box fields?
目前,我们正在使用 InventoryItem.InventoryCD 字段的全部 30 个字符,但我们需要更多。我们如何才能将此字段长度增加到 45 个字符?
这可以通过创建包含数据库脚本的自定义项目轻松完成。本指南将特定于 InventoryItem.InventoryCD,但该想法可以应用于任何领域。有关详细信息,请参阅末尾的注释部分。
对于 InventoryCD,这是您需要遵循的 3 个步骤。
1。自定义项目中的数据库脚本
导航到自定义项目屏幕 (SM204505) 并创建一个新的自定义项目。转到数据库脚本部分,单击 添加 并选择 脚本。
复制与您的数据库匹配的脚本,然后单击“确定”:
SQLServer
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
)
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);
这些脚本仅更改我们需要的列,但为此,我们删除现有索引并在最后重新创建它。您可以 运行 手动测试这些命令,然后再将它们添加到您的自定义设置中。
2。发布项目并重启应用程序
我们拥有此定制项目所需的一切。通过转至 Publish 菜单并单击 Publish with Cleanup 来发布它。成功发布后,导航至“系统”>“管理”>“进程”>“应用更新”屏幕 (SM203510)。我们将重新启动应用程序,这将重新启动整个网站。 确保在执行之前通知所有用户保存他们的工作!准备就绪后,单击重新启动应用程序。
此步骤将确保框架丢弃以前的数据库架构并在内存中加载 up-to-date 架构。
3。更改片段长度
最后一步是修改 INVENTORY 段以在我们的 InventoryCD 上允许更长的长度。导航到 Configuration > Common Settings > Segmented Keys > Segmented Keys 屏幕 (CS202000) 和 select INVENTORY 作为分段密钥 ID。将新长度应用于网格中的线段并保存。您现在可以开始测试了!
备注
如果您想修改 Acumatica 中的任何 out-of-the-box 字段,则必须根据该字段调整第 3 步。
3a。备用 DAC 修改
在这个步骤中
,您需要确保 DAC 字段类型属性与新列长度相匹配。例如,DAC 字符串字段可能已从
[PXDBString(30, IsUnicode = true)]
到
[PXDBString(45, IsUnicode = true)]
您可以在此 link 找到有关 DAC 字段属性修改的更多信息:
https://help.acumatica.com/(W(11))/Wiki/ShowWiki.aspx?pageid=1911428f-d4ca-4207-9396-a744db21cdfb
请注意,增加字段长度可能会在升级过程中损坏数据,因为用于升级过程的数据库模式是在 %AcumaticaPath%/Database/database_schema.xml 中定义的
为了顺利升级不要忘记修改 database_schema.xml:
<col name="InventoryCD" type="NVarChar(30)" />
至
<col name="InventoryCD" type="NVarChar(45)" />
否则您可能会收到 "string will be truncated" 错误,然后数据损坏。
目前,我们正在使用 InventoryItem.InventoryCD 字段的全部 30 个字符,但我们需要更多。我们如何才能将此字段长度增加到 45 个字符?
这可以通过创建包含数据库脚本的自定义项目轻松完成。本指南将特定于 InventoryItem.InventoryCD,但该想法可以应用于任何领域。有关详细信息,请参阅末尾的注释部分。
对于 InventoryCD,这是您需要遵循的 3 个步骤。
1。自定义项目中的数据库脚本
导航到自定义项目屏幕 (SM204505) 并创建一个新的自定义项目。转到数据库脚本部分,单击 添加 并选择 脚本。
复制与您的数据库匹配的脚本,然后单击“确定”:
SQLServer
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
)
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);
这些脚本仅更改我们需要的列,但为此,我们删除现有索引并在最后重新创建它。您可以 运行 手动测试这些命令,然后再将它们添加到您的自定义设置中。
2。发布项目并重启应用程序
我们拥有此定制项目所需的一切。通过转至 Publish 菜单并单击 Publish with Cleanup 来发布它。成功发布后,导航至“系统”>“管理”>“进程”>“应用更新”屏幕 (SM203510)。我们将重新启动应用程序,这将重新启动整个网站。 确保在执行之前通知所有用户保存他们的工作!准备就绪后,单击重新启动应用程序。
此步骤将确保框架丢弃以前的数据库架构并在内存中加载 up-to-date 架构。
3。更改片段长度
最后一步是修改 INVENTORY 段以在我们的 InventoryCD 上允许更长的长度。导航到 Configuration > Common Settings > Segmented Keys > Segmented Keys 屏幕 (CS202000) 和 select INVENTORY 作为分段密钥 ID。将新长度应用于网格中的线段并保存。您现在可以开始测试了!
备注
如果您想修改 Acumatica 中的任何 out-of-the-box 字段,则必须根据该字段调整第 3 步。
3a。备用 DAC 修改
在这个步骤中 ,您需要确保 DAC 字段类型属性与新列长度相匹配。例如,DAC 字符串字段可能已从
[PXDBString(30, IsUnicode = true)]
到
[PXDBString(45, IsUnicode = true)]
您可以在此 link 找到有关 DAC 字段属性修改的更多信息:
https://help.acumatica.com/(W(11))/Wiki/ShowWiki.aspx?pageid=1911428f-d4ca-4207-9396-a744db21cdfb
请注意,增加字段长度可能会在升级过程中损坏数据,因为用于升级过程的数据库模式是在 %AcumaticaPath%/Database/database_schema.xml 中定义的 为了顺利升级不要忘记修改 database_schema.xml:
<col name="InventoryCD" type="NVarChar(30)" />
至
<col name="InventoryCD" type="NVarChar(45)" />
否则您可能会收到 "string will be truncated" 错误,然后数据损坏。