首页 > 其他分享 >NetSuite-Get-specific-Custom-Record-Types-and-related-sub-Custom-Fields-CarlZeng

NetSuite-Get-specific-Custom-Record-Types-and-related-sub-Custom-Fields-CarlZeng

时间:2024-05-10 16:15:03浏览次数:18  
标签:sub Get CF CustomRecordType Custom Record ScriptID var CustomField

NetSuite: Get specific Custom Record Types and related sub Custom Fields

image-20240509164300563

背景

以前当使用search.create({})来获取数据时,我们需要制定特定的数据返回列;例如:search.createColumn(options)

而query可以使用 SELECT * FROM 来动态返回所有的数据列(这在有的时候是一个优点),那么如何让search也动态返回所有的数据列呢?

SELECT CF.ScriptID , *
         FROM CustomField CF left join CustomRecordType on CF.recordtype = CustomRecordType.internalid
 				 Where CF.ScriptID like UPPER('%CUSTRECORD_test%')
 					# ScriptID这个地方,sql系统返回的全部是大写字母,所以检索时也要用大写字母检索

var arrColFlds = query.runSuiteQL({
query: `SELECT CF.ScriptID scriptid
FROM CustomField CF left join CustomRecordType on CF.RecordType = CustomRecordType.internalid Where CustomRecordType.scriptid = 'CUSTOMRECORD_1' and CF.ScriptID like 'CUSTRECORD%' `
}).asMappedResults();

以上这个query就可以返回Record Type为CUSTOMRECORD_1的所有自定义字段。

如果你需要所有系统中的Custom Record Types

SELECT
    Name,
    ScriptID,
    InternalID,
    Description,
    BUILTIN.DF( Owner ) AS Owner,
    AllowQuickSearch,
    AllowInlineEditing,
    AllowAttachments
FROM
    CustomRecordType
ORDER BY
    Name

可以它对应的数据库表:CustomRecordType, 而保存自定义字段的数据库表名:CustomField

如果你需要所有系统中的Custom Fields

SELECT
    Name,
    ScriptID,
    Description,
    FieldType,
    FieldValueType,
    FieldValueTypeRecord,
    BUILTIN.DF( FieldValueTypeRecord ) AS FieldValueTypeRecordName,
    IsMandatory,
    IsStored,
    IsShowInList,
    BUILTIN.DF( Owner ) AS Owner
FROM
    CustomField

题外话

如果是在Client端,又不想使用query的情况下;可以用ajax访问抓取Record Catalog,速度会比较慢,抓取所有的自定义表和详细的子自定义字段。

var rcEndpoint = '/app/recordscatalog/rcendpoint.nl'; var recordTypes; var action = 'getRecordTypes'; var data = encodeURI( JSON.stringify( { structureType: 'FLAT' } ) ); var url = rcEndpoint + '?action=' + action + '&data=' + data; var xhr = new XMLHttpRequest();
xhr.open( 'get', url, false );
xhr.send();

recordTypes = JSON.parse( xhr.response );
console.log( JSON.stringify( recordTypes, null, 5 ) ); var schema = [];
recordTypes.data.forEach( function( recordType ) {

console.log( 'Loading details for record type ' + recordType.id + '...' );    action = 'getRecordTypeDetail';
data \= encodeURI( JSON.stringify( { scriptId: recordType.id, detailType: 'SS\_ANAL' } ) ); var url = rcEndpoint + '?action=' + action + '&data=' + data; var xhr = new XMLHttpRequest();
xhr.open( 'get', url, false );
xhr.send();
recordDetail \= JSON.parse( xhr.response );    
schema.push( recordDetail.data );

});
console.log( JSON.stringify( schema, null, 5 ) );

总结

结合上面的两个query,我们可以把两个表join起来,用来查询特定Record Type的自定义字段:

var arrColFlds = query.runSuiteQL({
query: `SELECT CF.ScriptID scriptid
FROM CustomField CF left join CustomRecordType on CF.RecordType = CustomRecordType.internalid Where CustomRecordType.scriptid = 'CUSTOMRECORD_1' and CF.ScriptID like 'CUSTRECORD%' `
}).asMappedResults();

Limitation

这样检索,依然无法查询到那些自定义Record Type下的Custom Field被inactive的字段。

目前唯一的办法就是按 select CustomField, 然后order by id以后 然后去猜下一个id的号码,如果猜对UI就是显示出这个custom field 的设置页面,否者报错:You are not allowed to access this custom field.

SELECT
	CustomField.description,
	CustomField.externalId,
	CustomField.fieldType,
	CustomField.internalId,
	CustomField.id,
	CustomField.name,
	CustomField.lastModifiedDate,
	CustomField.fieldValueTypeRecord,
	CustomField.isMandatory,
	CustomField.owner,
	CustomField.recordType,
	CustomField.scriptid,
	CustomField.isShowInList,
	CustomField.isStored,
	CustomField.fieldValueType,
FROM
	CustomField
	order by id
#WHERE recordType = 835
#这个recordType(注意大小写,suitequery对大小写敏感)就是指定了Record Type的internalid数字

标签:sub,Get,CF,CustomRecordType,Custom,Record,ScriptID,var,CustomField
From: https://www.cnblogs.com/backuper/p/18184681

相关文章

  • yum、apt、apt-get的使用
    前言在Linux中安装软件时,各种安装的命令整得我有些眼花缭乱的,有curl、wget、yum、apt-get、rpm等等,今天用时间来梳理一下这些软件包的安装工具。在Linux中要安装软件,有两种方式:源码安装和二进制包,通过源码安装需要经过编译后才能得到可执行的二进制程序,较为繁琐。而通过软件包......
  • Flutter中向Widget子组件传参数(多个参数)
    以下是传递参数的示例import'package:flutter/material.dart';classInspectListextendsStatefulWidget{constInspectList({super.key});@overrideState<StatefulWidget>createState()=>_InspectListState();}class_InspectListStateexte......
  • ROS话题通讯编写发布者(publisher)与订阅者(subscriber) Python
    学习参考:ROS/Tutorials/WritingPublisherSubscriber(python)-ROSWiki本文主要为了加强学习记忆,不是供人参考学习,如果想要学习点击链接系统学习; 在自己创建的工作空间下的src目录下创建一个新的功能包,在功能包中创建scripts文件夹,在内部放置.py源码; 下面剖析发布者源码......
  • 53_Maximum Subarray-最大子数组
    问题描述Givenanintegerarray nums,findthe subarray withthelargestsum,andreturn itssum.给定一个数组nums,找到一个子数组。使它的和最大,返回子数组例子Input:nums=[-2,1,-3,4,-1,2,1,-5,4]Output:6Explanation:子数组[4,-1,2,1]有最大的和6.基......
  • 要获取线程池中任务的返回值,可以使用submit()方法返回的Future对象。你可以通过调用Fu
    importjava.util.concurrent.ArrayBlockingQueue;importjava.util.concurrent.ThreadPoolExecutor;importjava.util.concurrent.TimeUnit;publicclassMain{publicstaticvoidmain(String[]args){//设置线程池参数intcorePoolSize=5;//......
  • LeetCode 1186. Maximum Subarray Sum with One Deletion
    原题链接在这里:https://leetcode.com/problems/maximum-subarray-sum-with-one-deletion/description/题目:Givenanarrayofintegers,returnthemaximumsumfora non-empty subarray(contiguouselements)withatmostoneelementdeletion. Inotherwords,youwa......
  • idea使用svn报错-Error:Can not get current revision for file
    idea中使用svn结果报错:Error:CannotgetcurrentrevisionforfileD:/IDEADire…,并且idea提示一下警告:解决方案:安装svn的时候要主要勾选上第二个选项,如下图所示:最后在idea中配置svn的安装路径下的svn.exe,File->settings->VersionControl–>Subversion......
  • SSL error:0909006C:PEM routines:get_name:no start line: crypto/pem/pem_lib.c:745
    在anolis上编译内核时碰到-SSLerror:0909006C:PEMroutines:get_name:nostartline:crypto/pem/pem_lib.c:745的问题,#makemodules_installINSTALL/lib/modules/6.9.0-rc1/modules.orderINSTALL/lib/modules/6.9.0-rc1/modules.builtinINSTALL/lib/modules/6.9......
  • qt 使用windows 的USB库 hid.dll 报错 :undefined reference to `HidD_GetAttributes(v
     1、cmakeLists.txt文件引入相应的库: cmake_minimum_required(VERSION3.5)project(test1LANGUAGESCXX)file(GLOBSRC./*.cpp./*.h)add_executable(test1${SRC})include(GNUInstallDirs)target_link_libraries(${PROJECT_NAME}hidsetupapi)inst......
  • 把.nuget文件夹从C盘移到其它盘
    C盘是系统盘,考虑到很多程序都会占用系统盘资源,所以500G的固态硬盘究竟,一开始C盘就划了300G的大小。但即便这样,不知不觉中,C盘的空间也快不够用了。分析了一下C盘的空间占用情况,发现.nuget文件夹大概有40多G的大小。这个不能忍,直接上网搜了一下移到其它盘的方法。下面我写一下我的......