根据加载的记录属性显示记录加载字段

问题描述 投票:0回答:1

我的销售订单上有一个自定义超链接字段,我想隐藏该字段,直到该订单具有已发货的项目履行记录。该字段仅在查看记录时需要显示。我不知道如何做到这两点:检查记录是否具有项目履行并设置字段的显示。

我认为 ClientScript 是正确的方法,因为这纯粹是一个 UI 问题,但是 根据文档,ClientScript 仅在创建或编辑记录时运行,而不是在查看记录时运行,因此这是行不通的.

然后我尝试了 UserEvents,但它们只有 3 个触发点:

beforeLoad
beforeSubmit
afterSubmit
。我尝试使用
beforeLoad
,虽然看起来确实可以在那里切换显示,但此时记录尚未加载,所以我认为我无法检查它是否有项目履行.

如何根据记录的属性更改查看模式下记录字段的显示?

我目前拥有的代码,

/**
 * @NApiVersion 2.x
 * @NScriptType ClientScript
 */
define(
    ['N/log', 'N/search', 'N/ui/serverWidget'],
    /**
     * @param {log} log The log SuiteScript module
     * @param {search} search The search SuiteScript module
     * @param {serverWidget} serverWidget The ui.serverWidget SuiteScript module
     * @returns {Object} Our list of Client Script callbacks
     */
    function (log, search, serverWidget) {
        /**
         * Function to be executed after page is initialized.
         *
         * @param {Object} scriptContext The context of the page when this function is called
         * @param {Record} scriptContext.currentRecord - Current form record
         * @param {string} scriptContext.mode - The mode in which the record is being accessed (create, copy, or edit)
         *
         * @since 2015.2
         */
        function pageInit(scriptContext) {
            const currRecord = scriptContext.currentRecord;
            /** @type {search.Type[]} */
            const shipmentRecords = search.create({
                type: search.Type.ITEM_FULFILLMENT,
                filters: [
                    ["createdfrom", search.Operator.IS, currRecord.getValue("tranid")],
                ],
                columns: ["internalid"],
            }).run().getRange(0, 1);

            if (shipmentRecords.length > 0) {
                currRecord.getField({
                    fieldId: "custbody_my_dynamic_link",
                }).updateDisplayType({
                    displayType: serverWidget.FieldDisplayType.NORMAL,
                });
            }
        }

        return {
            pageInit: pageInit,
        };
    },
);
javascript netsuite suitescript2.0
1个回答
0
投票

我建议根据之前的事件设置字段的值 - EG:创建项目履行,然后使用按

beforeLoad
作为上下文类型过滤的用户事件
VIEW
设置字段的显示类型。

具体细节取决于链接的确定方式;换句话说,需要什么数据才能生成

custbody_my_dynamic_link
字段中的链接。

可能能够将其设为“动态字段” - 例如:取消选中自定义字段定义页面上的“存储值” - 并使用公式或保存的搜索设置默认值。这将消除在项目履行上创建单独的用户事件的需要。

如果您提供现场内容及其生成方式的确切详细信息,我们可能能够提供更多帮助。

© www.soinside.com 2019 - 2024. All rights reserved.