SQL : SQL:数据表 变量
SQL : SQL:数据表 变量
DECLARE @TableItem TABLE ( FItemID INT, FIsConfig TINYINT NOT NULL DEFAULT(0), FBomInterID INT NOT NULL DEFAULT(0), FBOMNumber NVARCHAR(200) NOT NULL DEFAULT(''), FERPClsID INT NOT NULL DEFAULT(0) ) INSERT INTO @TableItem ( FItemID ) SELECT 0 UNION SELECT 1296 UPDATE t1 SET t1.FErpClsID=t2.FErpClsID FROM @TableItem t1 INNER JOIN t_ICItemBase t2 ON t1.FItemID = t2.FItemID UPDATE t1 SET t1.FIsConfig = 1,t1.FBOMInterID = t3.FInterID,t1.FBomNumber = t3.FBOMNumber FROM @TableItem t1 INNER JOIN ICPlan_CharConfig t2 ON t1.FItemID = t2.FItemID INNER JOIN ICBOM t3 ON t2.FSourceItemID=t3.FItemID and t3.FInterID=t2.FBOMInterID WHERE t1.FBomInterID = 0 AND t1.FErpClsID IN (2,3) UPDATE t1 SET t1.FBOMInterID = t2.FInterID,t1.FBomNumber = t2.FBOMNumber FROM @TableItem t1 INNER JOIN ICBOM t2 ON t1.FItemID = t2.FItemID WHERE t1.FBomInterID = 0 AND t2.FUseStatus = 1072 AND t1.FErpClsID IN (2,3) SELECT * FROM @TableItem WHERE FItemID > 0
郭少锋
创建 2024-06-15 15:40:07
SQL
云星空 : 物料启用辅助属性,单据添加必录校验
云星空 : 物料启用辅助属性,单据添加必录校验
通过如下公式,检验等级(FF100005)必录但未录(其他各维度,参照此公式单独配置): FMaterialID !=null and len(filter(lambda x: (x.AuxPropertyId_Id == 100009 and x.IsEnable1==true), FMaterialID.MaterialAuxPty))>0 and (FAuxPropId.ActiveObject = @null or FAuxPropId.ActiveObject['F100009'] = 0) 公式说明:1. FMaterialID !=null 物料已经录入 2. len(filter(lambda x: (x.AuxPropertyId_Id == 100009 and x.IsEnable1==true), FMaterialID.MaterialAuxPty))>0 对物料的MaterialAuxPty单据体进行循环,找到内码为100009的辅助属性,判断其是否启用,如果启用,则满足条件 3. (FAuxPropId.ActiveObject = @null or FAuxPropId.ActiveObject['F100009'] = 0)辅助属性未录入,或者是辅助属性维度F100009未录入 特别说明:上述公式,并不是通用的公式,因为其中使用辅助属性维度F100009,在其他数据中心,可能根本不存在,或者代表的含义不同。请勿照搬,必须在理解了公式之后,在本地数据中心进行适当调整,以适用于本数据中心。 应用案例:物料启用EPE宽度的辅助属性,在销售订单EPE宽度字段必录 ---1.查找物料辅助属性对应标示 select p.* from T_BD_MATERIAL m left join t_BD_MaterialAuxPty p on p.FMATERIALID=m.FMATERIALID where m.FNUMBER=' 16254100A01701' and m.FUSEORGID=276234 --100005 EPE长度(mm) --100006 EPE厚度(mm) --100007 EPE宽度(mm) --100002 纸度(英寸) --100003 纸度 --100004 纸长(英寸) 2.在销售订单保存操作添加校验 FMaterialID !=null and len(filter(lambda x: (x.AuxPropertyId_Id == 100005 and x.IsEnable1==true), FMaterialID.MaterialAuxPty))>0 and (FAuxPropId.ActiveObject = @null or FAuxPropId.ActiveObject['F100005'] = 0) 3:利用辅助属性进行计算 FSecCountQty = FCountQty * (float(str( FAuxPropId.ActiveObject['F100002']))) * (float(str( FAuxPropId.ActiveObject['F100004']))) * 25.4*25.4 / 1000000
郭少锋
创建 2024-06-07 00:21:35
云星空
云星空 : JSONObject 用法
云星空 : JSONObject 用法
原文链接:https://vip.kingdee.com/article/467732362118540288?productLineId=1&isKnowledge=2&lang=zh-CN using Kingdee.BOS.Core.CommonFilter; using Kingdee.BOS.Core.CommonFilter.PlugIn; using Kingdee.BOS.Core.DynamicForm.PlugIn.Args; using Kingdee.BOS.Core.DynamicForm.PlugIn.ControlModel; namespace DynamicFormPlugIn.Filter { [Kingdee.BOS.Util.HotUpdate] public class FilterPlugIn_FBatchFilterGrid : AbstractCommonFilterPlugIn { /* * 过滤表单插件设置高级过滤 */ public override void TreeNodeClick(TreeNodeArgs e) { InitFBatchFilterGridInClient(); } /// <summary> /// 设置服务端的高级过滤逻辑(如果不显示过滤界面需要使用这个方案直接修改过滤方案) /// </summary> private void InitFBatchFilterGridInServer() { /* * json 结构设置高级过滤 */ Kingdee.BOS.JSON.JSONObject jsonObj = new Kingdee.BOS.JSON.JSONObject(); jsonObj["MakeUpType"] = "Column"; Kingdee.BOS.JSON.JSONArray jsonRows = new Kingdee.BOS.JSON.JSONArray(); Kingdee.BOS.JSON.JSONObject jsonSource = new Kingdee.BOS.JSON.JSONObject(); jsonSource["FieldName"] = "FSrcBillNo"; Kingdee.BOS.JSON.JSONArray jsonVal = new Kingdee.BOS.JSON.JSONArray(); jsonVal.Add("a"); jsonVal.Add("b"); jsonVal.Add("d"); jsonVal.Add("c"); jsonSource["Value"] = jsonVal.ToJSONString(); jsonSource["Logic"] = "OR"; jsonRows.Add(jsonSource); jsonObj["Source"] = jsonRows; var setting = jsonObj.ToJSONString(); var modelService = this.CommonFilterModel as ICommonFilterModelService; if (modelService == null) return; modelService.SchemeEntity.BatchFilterSetting = setting; this.CommonFilterModel.BatchFilterObject.Setting = modelService.SchemeEntity.BatchFilterSetting; } /// <summary> /// 设置客户端的高级过滤逻辑 /// </summary> private void InitFBatchFilterGridInClient() { Kingdee.BOS.JSON.JSONObject jsonObj = new Kingdee.BOS.JSON.JSONObject(); jsonObj["MakeUpType"] = "Column"; Kingdee.BOS.JSON.JSONArray jsonRows = new Kingdee.BOS.JSON.JSONArray(); Kingdee.BOS.JSON.JSONObject jsonSource = new Kingdee.BOS.JSON.JSONObject(); jsonSource["FieldName"] = "FSrcBillNo"; Kingdee.BOS.JSON.JSONArray jsonVal = new Kingdee.BOS.JSON.JSONArray(); jsonVal.Add("a"); jsonVal.Add("b"); jsonVal.Add("d"); jsonVal.Add("c"); jsonSource["Value"] = jsonVal.ToJSONString(); jsonSource["Logic"] = "OR"; jsonRows.Add(jsonSource); jsonObj["Source"] = jsonRows; jsonRows.Add(jsonSource); var batchFilter = this.View.GetControl<BatchFilterGrid>("FBatchFilterGrid"); batchFilter.SetFilterRowsWithMakeUpType(jsonObj); } } }
郭少锋
创建 2024-06-05 09:21:46
云星空
云星空 : 创建:函数 aGsf_Convert 转换 全角半角
云星空 : 创建:函数 aGsf_Convert 转换 全角半角
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- -- 删除:函数 if exists ( select * from sys.objects where object_id = object_id(N'dbo.aGsf_Convert') and type in (N'FN',N'IF',N'TF') ) drop function dbo.aGsf_Convert go --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- -- 创建:函数 aGsf_Convert 转换 全角半角 create function dbo.aGsf_Convert( @str nvarchar(4000) -- 要转换的字符串 ,@flag bit -- 转换成: 0 半角 1 全角 ) returns nvarchar(4000) as begin --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- declare @pat nvarchar(8),@step int,@i int,@spc int if @flag = 0 select @pat = N'%[!-~]%' ,@step = -65248 ,@str = replace( @str ,N' ' ,N' ' ) else select @pat = N'%[!-~]%' ,@step = 65248 ,@str = replace( @str ,N' ' ,N' ' ) set @i = patIndex( @pat collate Latin1_General_Bin ,@str ) while @i > 0 select @str = replace( @str ,subString( @str ,@i ,1) ,nchar( unicode( subString( @str ,@i ,1) ) + @step ) ) ,@i = patIndex( @pat collate Latin1_General_Bin ,@str ) return( @str ) --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- end /* --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- -- 使用示例 declare @s1 varchar(8000) = '中 2-3456a78STUVabn中 国opwxyz' ; select dbo.aGsf_Convert( @s1 ,0 ) ,dbo.aGsf_Convert( @s1 ,1 ) --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 转换说明 全角字符 unicode 从 65281~65374 在顺序上是对应的 半角字符 unicode 从 33~126 空格比较特殊,全角 12288 ,半角 32 指定排序规则 collate Latin1_General_BIN --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- */ go
郭少锋
编辑 2024-05-29 20:58:02
创建 2024-05-29 20:50:30
云星空
SQL : SQL 日期格式化
SQL : SQL 日期格式化
declare @time datetime; select @time = getDate(); -- 2081-03-24 21:39:45.590 select 单据日期 < convert(varchar(20),getDate(),23) ---------------------------------------------------------------------------------------------------------- --【常用】 declare @time datetime; set @time = '2081-03-24 21:39:45.589'; select convert(varchar(100), @time, 112) -- 20810324 ,convert(varchar(100), @time, 12) -- 810324 select convert(varchar(100), @time, 21) -- 2081-03-24 21:39:45.590 ,convert(varchar(100), @time, 20) -- 2081-03-24 21:39:45 ,convert(varchar(100), @time, 23) -- 2081-03-24 select convert(varchar(100), @time, 14) -- 21:39:45:590 ,convert(varchar(100), @time, 24) -- 21:39:45 select convert(varchar(100), @time, 111) -- 2081/03/24 ,convert(varchar(100), @time, 11) -- 81/03/24 select convert(varchar(100), @time, 102) -- 2081.03.24 ,convert(varchar(100), @time, 2) -- 81.03.24 ---------------------------------------------------------------------------------------------------------- select convert(varchar(100), @time, 114) -- 21:39:45:590 ,convert(varchar(100), @time, 14) -- 21:39:45:590 ,convert(varchar(100), @time, 8) -- 21:39:45 ,convert(varchar(100), @time, 24) -- 21:39:45 ,convert(varchar(100), @time, 108) -- 21:39:45 ---------------------------------------------------------------------------------------------------------- select convert(varchar(100), @time, 112) -- 20810324 ,convert(varchar(100), @time, 12) -- 810324 ---------------------------------------------------------------------------------------------------------- select convert(varchar(100), @time, 23) -- 2081-03-24 ,convert(varchar(100), @time, 120) -- 2081-03-24 21:39:45 ,convert(varchar(100), @time, 20) -- 2081-03-24 21:39:45 ,convert(varchar(100), @time, 121) -- 2081-03-24 21:39:45.590 ,convert(varchar(100), @time, 21) -- 2081-03-24 21:39:45.590 ,convert(varchar(100), @time, 25) -- 2081-03-24 21:39:45.590 ---------------------------------------------------------------------------------------------------------- select convert(varchar(100), @time, 105) -- 24-03-2081 ,convert(varchar(100), @time, 5) -- 24-03-81 ,convert(varchar(100), @time, 110) -- 03-24-2081 ,convert(varchar(100), @time, 10) -- 03-24-81 ---------------------------------------------------------------------------------------------------------- select convert(varchar(100), @time, 111) -- 2081/03/24 ,convert(varchar(100), @time, 11) -- 81/03/24 ,convert(varchar(100), @time, 101) -- 03/24/2081 ,convert(varchar(100), @time, 1) -- 03/24/81 ,convert(varchar(100), @time, 103) -- 24/03/2081 ,convert(varchar(100), @time, 3) -- 24/03/81 ,convert(varchar(100), @time, 22) -- 03/24/81 9:39:45 PM ---------------------------------------------------------------------------------------------------------- select convert(varchar(100), @time, 102) -- 2081.03.24 ,convert(varchar(100), @time, 2) -- 81.03.24 ,convert(varchar(100), @time, 104) -- 24.03.2081 ,convert(varchar(100), @time, 4) -- 24.03.81 ---------------------------------------------------------------------------------------------------------- select convert(varchar(100), @time, 106) -- 24 03 2081 ,convert(varchar(100), @time, 6) -- 24 03 81 ,convert(varchar(100), @time, 113) -- 24 03 2081 21:39:45:590 ,convert(varchar(100), @time, 13) -- 24 03 2081 21:39:45:590 select convert(varchar(100), @time, 100) -- 03 24 2081 9:39PM ,convert(varchar(100), @time, 0) -- 03 24 2081 9:39PM ,convert(varchar(100), @time, 109) -- 03 24 2081 9:39:45:590PM ,convert(varchar(100), @time, 9) -- 03 24 2081 9:39:45:590PM ---------------------------------------------------------------------------------------------------------- select convert(varchar(100), @time, 107) -- 03 24, 2081 ,convert(varchar(100), @time, 7) -- 03 24, 81 ---------------------------------------------------------------------------------------------------------- select convert(varchar(100), @time, 126) -- 2081-03-24T21:39:45.590 select convert(varchar(100), @time, 130) -- 14 ????? ??????? 1504 9:39:45:590PM ,convert(varchar(100), @time, 131) -- 14/06/1504 9:39:45:590PM
郭少锋
编辑 2024-05-29 20:54:18
创建 2023-02-21 14:46:01
SQL
SQL : SQL:拆分表数据
SQL : SQL:拆分表数据
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------- -- 查看:拆分结果 【K3单据 引用插件】 exec a_Select_ICClassType_Dll ; -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- -- 创建:临时表 drop table a_ICClassTypeDll go create table a_ICClassTypeDll ( FComponentExt nvarchar(100) ,FID int ,FName_CHS nvarchar(100) ,FTableName nvarchar(100) ); go -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- -- 创建:存储过程 create procedure a_Select_ICClassType_Dll as -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- -- 清空:表数据 delete from a_ICClassTypeDll ; -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- -- 拆分:表数据 declare @id int ; declare cursor_1 cursor for (select FID from ICClassType where FID > 210000000) open cursor_1 fetch next from cursor_1 into @id while @@fetch_status = 0 begin declare @Txt nvarchar(1000) ; select @Txt = FComponentExt from ICClassType where FID = @id ; -- print 'FID ' + convert(varchar(100),@id) ; declare @Txt1 nvarchar(100) = '' ; select @Txt1 = 'aGsf_K3.' ; declare @Txt2 nvarchar(100) = '' ; select @Txt2 = '|' ; declare @Start int = 1 ; declare @End int = 1 ; while @Start > 0 begin select @Start = charIndex( @Txt1 ,@Txt ,@Start ) ; -- print '@Start ' + convert(varchar(100),@Start) ; select @End = charIndex( @Txt2 ,@Txt ,@Start ) ; -- print '@End ' + convert(varchar(100),@End ) ; if @Start = 0 continue ; declare @Txt3 nvarchar(100) = '' ; select @Txt3 = subString( @Txt ,@Start + len(@Txt1) ,@End - ( @Start + len(@Txt1) ) ) ; -- print '@Txt3 ' + convert(varchar(100),@Txt3 ) ; insert into a_ICClassTypeDll(FID,FName_CHS,FTableName,FComponentExt) select FID,FName_CHS,FTableName,@Txt3 from ICClassType where FID = @id ; select @Start = @End + len(@Txt2) ; -- print '@Start ' + convert(varchar(100),@Start) ; end fetch next from cursor_1 into @id end close cursor_1 deallocate cursor_1 -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- -- 显示:拆分结果 select * from a_ICClassTypeDll order by FComponentExt,FID ; -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- go
郭少锋
编辑 2024-05-26 16:28:18
创建 2024-05-26 16:25:44
SQL
云星空 : C# 去除空格
云星空 : C# 去除空格
在C#中,我们可以使用以下几种方法来去除字符串中的空格: 方法一:使用正则表达式 string str = " Hello World "; string result = Regex.Replace(str, @"\s+", ""); // 使用正则表达式替换所有空格 Console.WriteLine(result); // 输出:"HelloWorld" 方法二:使用String的Replace方法 string str = " Hello World "; string result = str.Replace(" ", ""); // 使用Replace方法替换空格 Console.WriteLine(result); // 输出:"HelloWorld" 方法三:使用String的Split和Join方法 string str = " Hello World "; string[] words = str.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries); // 使用Split方法以空格分割字符串,并移除空格 string result = string.Join("", words); // 使用Join方法将分割后的字符串连接起来 Console.WriteLine(result); // 输出:"HelloWorld" 方法四:使用StringBuilder的Append和Replace方法 string str = " Hello World "; StringBuilder sb = new StringBuilder(); foreach (char c in str) { if (!char.IsWhiteSpace(c)) { sb.Append(c); // 逐个字符添加到StringBuilder对象中 } } string result = sb.ToString().Replace(" ", ""); // 使用Replace方法替换空格 Console.WriteLine(result); // 输出:"HelloWorld"
郭少锋
创建 2024-05-23 19:42:22
云星空
云星空 : C# 文本比较
云星空 : C# 文本比较
if (e.Key.EqualsIgnoreCase("FReCheck"))
郭少锋
创建 2024-05-22 22:13:38
云星空
云星空 : 修改 Web.config,IIS启动速度提升60倍
云星空 : 修改 Web.config,IIS启动速度提升60倍
https://vip.kingdee.com/article/537953720802328576?productLineId=1&lang=zh-CN bin中dll文件更新后,第一次重启IIS需要几分钟。 开发环境,需要不断改代码、编译dll、重启。每次都要等几分钟,严重影响开发效率。 可以修改web.config,改为按需加载dll,提高启动速度。 1、修改Web.config 打开Program Files (x86)\Kingdee\K3Cloud\WebSite\Web.config,找到节点system.web/compilation/assemblies 2、修改assemblies节点 <assemblies> <remove assembly="*" /> <add assembly="System.Management, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A" /> <add assembly="Kingdee.BOS" /> <add assembly="Kingdee.BOS.Web.Core" /> <add assembly="Kingdee.BOS.Web" /> <add assembly="Kingdee.BOS.Web.HTML" /> <add assembly="Kingdee.BOS.Web.HTML.Core" /> <add assembly="Kingdee.K3.SCM.SCP.Web" /> </assemblies> 3、测试 编译一个新dll文件放入bin中,重启IIS,测试星空页面打开速度。 原来需要2分半,现在只需2秒。 注意: 1、开发、测试环境建议修改,提高效率; 2、正式环境不会频繁更新dll文件,也就打完补丁后第一次重启慢点,不建议修改(可能会导致有些aspx页面打不开); 3、即将发布的V9版本,将默认增加此配置,提高启动速度;
郭少锋
创建 2024-05-16 23:12:10
云星空
K3 BOS : 金蝶K3:锁定单据头字段
K3 BOS : 金蝶K3:锁定单据头字段
【问题描述:】 我想在工业单据的插件中锁定单据头字段,但实现不了? 【解决方法:】 For i = 0 To m_BillTransfer.Head.count - 1 If m_BillTransfer.Head(i).Caption = "客户地点:" Then '客户地点显示、不可编辑(Visible改为False为不显示) m_BillTransfer.Head(i).Visible = True m_BillTransfer.Head(i).Enabled = False m_BillTransfer.Head(i).Caption= "XXXX" Exit For End If Next i 【问题描述:】 我想在录产品入库单时做一插件,只要有一个地方改变就自动隐藏单据体中的“备注”列,试来试去不行,还请高人指点,先谢了! 【解决方法:】 你可以将其锁定,而不必隐藏: Private Sub m_BillTransfer_HeadChange(ByVal CtlIndex As Long, ByVal Value As Variant, ByVal bNewBill As Boolean, Cancel As Boolean) Dim vsEntrys As Object Dim i As Long Set vsEntrys = m_BillTransfer.Grid For i = 1 To UBound(m_BillTransfer.EntryCtl) If UCase(m_BillTransfer.EntryCtl(i).FieldName) = "FNOTE" Then Exit For End If Next i '锁定单据体备注字段 With vsEntrys .col = i .Col2 = i .row = -1 .BlockMode = True .Lock = True .BlockMode = False End With End Sub 你也可以将此列锁定后列宽设置为0,变通实现隐藏: With vsEntrys .col = i .Col2 = i .row = -1 .BlockMode = True .Lock = True .BlockMode = False .ColWidth(i) = 0 End With
郭少锋
创建 2024-05-14 21:37:39
K3 BOS