氚云帮助中心

H3.Data.Filter.Filterfilter=newH3.Data.Filter.Filter();//构建过滤器

H3.Data.Filter.AndandMatcher=newH3.Data.Filter.And();//构造And匹配器

andMatcher.Add(newH3.Data.Filter.ItemMatcher("控件编码",H3.Data.ComparisonOperatorType.Equal,"筛选依据值"));//添加筛选条件

filter.Matcher=andMatcher;

(二)依据多个控件值进行筛选

1.“AND”关键字连接

andMatcher.Add(newH3.Data.Filter.ItemMatcher("控件编码1",H3.Data.ComparisonOperatorType.Equal,"筛选依据值1"));//添加筛选条件

andMatcher.Add(newH3.Data.Filter.ItemMatcher("控件编码2",H3.Data.ComparisonOperatorType.Equal,"筛选依据值2"));//添加筛选条件

2.“OR”关键字连接

H3.Data.Filter.OrorMatcher=newH3.Data.Filter.Or();//构造Or匹配器

orMatcher.Add(newH3.Data.Filter.ItemMatcher("控件编码1",H3.Data.ComparisonOperatorType.Equal,"筛选依据值1"));//添加筛选条件

orMatcher.Add(newH3.Data.Filter.ItemMatcher("控件编码2",H3.Data.ComparisonOperatorType.Equal,"筛选依据值2"));//添加筛选条件

filter.Matcher=orMatcher;

(三)依据字段进行排序

1.正序排序

filter.AddSortBy("控件编码1",H3.Data.Filter.SortDirection.Ascending);//添加排序依据

2.倒序排序

filter.AddSortBy("控件编码1",H3.Data.Filter.SortDirection.Descending);//添加排序依据

必要说明:

(一)匹配器对象

H3.Data.Filter.And相当于SQL中“AND”关键字

H3.Data.Filter.Or相当于SQL中“OR”关键字

(二)筛选条件

H3.Data.ComparisonOperatorType.Equal相当于SQL中“=”

H3.Data.ComparisonOperatorType.NotEqual相当于SQL中“!=”

H3.Data.ComparisonOperatorType.Above相当于SQL中“>”

H3.Data.ComparisonOperatorType.NotBelow相当于SQL中“>=”

H3.Data.ComparisonOperatorType.Below相当于SQL中“<”

H3.Data.ComparisonOperatorType.NotAbove相当于SQL中“<=”

答:参考下面表格所示。

按钮名称

ActionName编码

暂存

Save

提交

Submit

删除

Remove

撤回

RetrieveInstance

同意

不同意

Reject

作废

CancelInstance

打印

Print

二维码

ViewQrCode

全屏

FullScreen

关闭

Close

编辑

Edit

转交

Forward

已阅

Read

答:创建/更新大批量数据的时候,用commit可以提高效率。

H3.DataModel.BulkCommitcommit=newH3.DataModel.BulkCommit();H3.DataModel.BizObjectSchemaschema=this.Request.Engine.BizObjectManager.GetPublishedSchema("D0001001");for(inti=0;i<1000;i++){H3.DataModel.BizObjectobj=newH3.DataModel.BizObject(this.Request.Engine,schema,this.Request.UserContext.UserId);obj["F000001"]=1;obj.Create(commit);//如果已经存在对象,不需要新建,只需Update就可以:obj.Update(commit);}stringerrorMsg=null;commit.Commit(this.Request.Engine.BizObjectManager,outerrorMsg);

答:对象子表以子对象数组形式存在,如果需要创建包含子表的对象或修改子表的值,需要构造或获取到子表对象数组,然后将子表对象数组赋值给主表的子表属性。

以下示例代码用于修改订单子表的某一列的值:

protectedoverridevoidOnSubmit(stringactionName,H3.SmartForm.SmartFormPostValuepostValue,H3.SmartForm.SubmitSmartFormResponseresponse)

{

H3.DataModel.BizObject[]details=(H3.DataModel.BizObject[])this.Request.BizObject["D00002SalesOrderDetail"];//获取子表属性并强制转换为对象数组

if(details!=null&&details.Length>0)

ListlstObject=newList();

foreach(H3.DataModel.BizObjectdetailindetails)

detail["WaitStockOutQuantity"]=detail["Quantity"];//修改子表列的属性

lstObject.Add(detail);

}

//将List转成对象数组,并重新赋值给主表

this.Request.BizObject["D00002SalesOrderDetail"]=lstObject.ToArray();

//获取一个Engine管理对象

H3.IEngineengine=this.Engine;

//表单编码

stringmasterSchemaCode="D00021testtable";

//表单数据Id

stringmasterBoId="bbc60153-19b8-4a57-b074-0c5b77367f8d";

//子表控件编码

stringchildSchemaCode="D00021F7287906e76734bef8819176bc15a8763";

//Load出要修改数据的主表业务对象

H3.DataModel.BizObjectmasterBo=H3.DataModel.BizObject.Load(H3.Organization.User.SystemUserId,engine,masterSchemaCode,masterBoId,false);

//获取子表结构体对象

H3.DataModel.BizObjectSchemachildSchema=masterBo.Schema.GetChildSchema(childSchemaCode);

//定义新的子表数据集合

ListnewChildBoList=newList();

//获取子表内已有数据

H3.DataModel.BizObject[]childBoArray=(H3.DataModel.BizObject[])masterBo[childSchemaCode];

if(childBoArray!=null&&childBoArray.Length>0)

foreach(H3.DataModel.BizObjectitemBoinchildBoArray)

//将子表内已有数据循环添加到新的子表数据集合里

newChildBoList.Add(itemBo);

//new一个子表业务对象,并添加到子表数据第一行

H3.DataModel.BizObjectchildBo1=newH3.DataModel.BizObject(engine,childSchema,H3.Organization.User.SystemUserId);

childBo1["F0000002"]="xxxxx";

newChildBoList.Insert(0,childBo1);

//new一个子表业务对象,并添加到子表数据最后一行

H3.DataModel.BizObjectchildBo2=newH3.DataModel.BizObject(engine,childSchema,H3.Organization.User.SystemUserId);

childBo2["F0000002"]="yyyyyy";

newChildBoList.Add(childBo2);

//将新的子表数据集合赋值到子表控件

masterBo[childSchemaCode]=newChildBoList.ToArray();

//修改主表业务对象,系统会自动识别出上面子表数据被修改了,执行完Update方法,新的子表数据就会被保存到数据库

masterBo.Update();

//取出子表内F0000002控件的值

stringF0000002=itemBo["F0000002"]+string.Empty;

//判断F0000002控件的值是否为空,不为空时,才将当前子表行数据添加到新的子表数据集合中,相当于把F0000002控件的值是否为空的行数据删除了

if(!string.IsNullOrEmpty(F0000002))

答:可序列化的虚业务对象可以直接返回到前台,由前台代码直接接收。以下示例代码用于在后台查询业务对象数组并添加到Response.ReturnData。由前台代码接收Response.ReturnData数据。

示例代码如下:

if(actionName=="BtnCheck")

stringaccountName=postValue.Data["AccountName"]+string.Empty;

H3.Data.Filter.Filterfilter=newH3.Data.Filter.Filter();

H3.Data.Filter.AndandMatcher=newH3.Data.Filter.And();

andMatcher.Add(newH3.Data.Filter.ItemMatcher("AccountName",H3.Data.ComparisonOperatorType.Contains,accountName));

intcount=0;

Dictionaryheaders=null;

DictionaryuserNames=null;

H3.Data.Serialization.VirtualObject[]objects=this.Request.Engine.BizObjectManager.GetList(

H3.Organization.User.SystemUserId,

"D00002Account",

H3.DataModel.GetListScopeType.GlobalAll,

filter,

outcount,

true,

outheaders,

outuserNames

);//查询虚对象

response.ReturnData=newDictionary();

response.ReturnData.Add("Objects",objects);//将对象返回到前台

答:氚云提供对表单所有数据的一键清除功能,该操作不受数据之间引用限制。

stringschemaCode="D00002Lead";

this.Request.Engine.BizObjectManager.Clear(schemaCode);//清除表单D00002Lead的所有数据。数据清除后不可恢复,请谨慎操作。

答:如果是带流程的表单,在创建业务对象时需要发起流程,需要调用Engine.Interactor.OriginateInstance接口发起流程。

H3.DataModel.BizObjectSchemaschema=this.Request.Engine.BizObjectManager.GetPublishedSchema("D000001InspectIssue");

H3.DataModel.BizObjectiReport=newH3.DataModel.BizObject(this.Request.Engine,schema,this.Request.UserContext.UserId,

this.Request.UserContext.User.ParentId);

iReport["IssueReportName"]="关于****的整改报告";

stringinstanceId=System.Guid.NewGuid().ToString();

if(string.IsNullOrEmpty(iReport.WorkflowInstanceId))

iReport.WorkflowInstanceId=instanceId;

iReport.Create();//创建对象

H3.Workflow.Instance.WorkflowInstancewfInstance=this.Request.Engine.WorkflowInstanceManager.GetWorkflowInstance(iReport.WorkflowInstanceId);

if(wfInstance==null)

//启动流程

stringworkItemID=string.Empty;

stringerrorMsg=string.Empty;

H3.Workflow.Template.WorkflowTemplatewfTemp=this.Request.Engine.WorkflowTemplateManager.GetDefaultWorkflow(iReport.Schema.SchemaCode);

this.Request.Engine.Interactor.OriginateInstance(this.Request.UserContext.UserId,iReport.Schema.SchemaCode,

wfTemp.WorkflowVersion,iReport.ObjectId,iReport.WorkflowInstanceId,H3.Workflow.WorkItem.AccessMethod.Web,

true,string.Empty,true,outworkItemID,outerrorMsg);

}//第七个参数false/true为是否提交流程操作

示例代码:

H3.Organization.OrgRolerole=newH3.Organization.OrgRole();

role.Code="manager";

role.Name="经理";

role.CompanyId=Engine.Organization.Company.CompanyId;

Engine.Organization.AddUnit(role);//创建角色

H3.Acl.FunctionAclacl=newH3.Acl.FunctionAcl(role.Code,"客户管理","createdby");

Engine.FunctionAclManager.AddAcl(acl);//给角色添加权限。

stringcustomer=this.Request[“Customer”]+string.Empty;

objectvalue=response.ReturnData["dataField"];

bool_flag=false;

if(_userRoles!=null)

foreach(H3.Organization.OrgRole_userRolein_userRoles)

_flag=true;

break;

if(_flag)

response.ReturnData["F0000001"].Visible=false;//设置字段不可见

response.ReturnData["F0000002"].Editable=false;//设置字段不可写

H3.DataModel.BizObjectFileHeader[]files=(H3.DataModel.BizObjectFileHeader[])this.Request.BizObject["F0000020"];//附件控件

foreach(H3.DataModel.BizObjectFileHeaderfinfiles)

stringFileId=f.FileId+string.Empty;

}//注意:新增的时候获取不了ID

stringfileInfo="";

string[]ObjectDataId={child.ObjectId};//表单的objectid数组

H3.DataModel.BizObjectFileHeader[]fileobject=this.Request.Engine.BizObjectManager.GetBizObjectFileHeaders(ObjectDataId);

if(fileobject!=null&&fileobject.Length>0)

foreach(H3.DataModel.BizObjectFileHeaderiteminfileobject)

fileInfo+=item.FileId+";";

stringuserId=this.Request.UserContext.UserId+string.Empty;//获取当前用户ID

H3.Organization.OrgRole[]userRoles=this.Engine.Organization.GetUserRoles(userId,true);//根据用户ID,获取该用户所有的角色

for(inti=0;i

if(userRoles[i].Name=="系统管理员")//判断是否为管理员

response.Message="true";

stringDianzhang="";//角色ID

H3.Organization.OrgRole[]allRoles=this.Engine.Organization.GetAllRoles();//获取所有角色

foreach(H3.Organization.OrgRoleallRoleinallRoles)

if(allRole.Name=="公海提醒")

Dianzhang=allRole.ObjectId;

string[]Renyuans=this.Engine.Organization.GetChildren(Dianzhang,H3.Organization.UnitType.User,true,H3.Organization.State.Active);//获取公海提醒角色的所有成员ID

DictionaryTaskObjects1=(Dictionary)response.ReturnData["D00021cChildTable"].Value;//获取子表数据

Dictionarytaskobject1=(Dictionary)TaskObjects1["T"];

foreach(stringkeyintaskobject1.Keys)

if(key=="D00021cChildTable.ChildNumber")

taskobject1[key].Visible=false;//设置子表‘ChildNumber’列隐藏

答:调用CopyFiles()。

//主表内附件控件复制到主表内附件控件上

this.Request.Engine.BizObjectManager.CopyFiles("原-主表编码","","原-主表内附件控件编码","原-主表数据ObjectId","新-主表编码","","新-主表内附件控件编码","新-主表数据ObjectId",true,true);

//主表内附件控件复制到子表内附件控件上

this.Request.Engine.BizObjectManager.CopyFiles("原-主表编码","","原-主表内附件控件编码","原-主表数据ObjectId","新-主表编码","新-子表编码","新-子表内附件控件编码","新-子表数据ObjectId",true,true);

//子表内附件控件复制到主表内附件控件上

this.Request.Engine.BizObjectManager.CopyFiles("原-主表编码","原-子表编码","原-子表内附件控件编码","原-子表数据ObjectId","新-主表编码","","新-主表内附件控件编码","新-主表数据ObjectId",true,true);

//子表内附件控件复制到子表内附件控件上

this.Request.Engine.BizObjectManager.CopyFiles("原-主表编码","原-子表编码","原-子表内附件控件编码","原-子表数据ObjectId","新-主表编码","新-子表编码","新-子表内附件控件编码","新-子表数据ObjectId",true,true);

/*

CopyFiles方法最后两个参数详解:

第一个true:本次复制附件到目标控件是覆盖还是添加,true为覆盖,false为添加

第二个true:若本次是覆盖模式,目标控件原先附件是否进行物理删除,true为物理删除,false为只删除记录

*/

//获取图片缩略图url,FileId:附件Id

stringfileurl=this.Request.UserContext.GetThumbnailUrl(stringFileId);

该接口即将下线如果上述接口报错提示缺少参数,请使用新接口

stringthumbnailUrl=this.Request.UserContext.GetThumbnailUrl(stringFileId,stringThumbnailKey)

stringObjectDataId=this.Request.BizObjectId;//表单的objectid数组

//支持多个数据ObjectId参数查询

H3.DataModel.BizObjectFileHeader[]fileobject=this.Request.Engine.BizObjectManager.GetBizObjectFileHeaders(newstring[]{ObjectDataId});

//获取图片缩略图

stringthumbnailUrl=this.Request.UserContext.GetThumbnailUrl(item.ObjectId,item.ThumbnailKey);

//获取原图url,FileId:附件Id

答:前端PostForm请求后端,后端返回前端的数据组,需要构建虚业务对象。

前端代码:

varparent=this;

$.SmartForm.PostForm("QueryStudentInfo",{

StudentId:"123"//学生ID

},function(data){

if(data.Errors&&data.Errors.length){

$.IShowError("错误",JSON.stringify(data.Errors));

}else{

debugger;

varresult=data.ReturnData;

if(result["StudentName"]){

//获取后端返回的学生姓名

varStudentName=result["StudentName"];

//给当前表单的F0000010控件设置值

parent.F0000010.SetValue(StudentName);

if(result["ClassInfo"]){

//获取后端返回的学生所在班级信息

varClassName=result["ClassInfo"]["ValueTable"];

if(result["LikeList"]){

//获取后端返回的学生喜好

varLikeList=result["LikeList"];

if(result["FamilyInfo"]){

//获取后端返回的学生家庭信息

varFamilyInfo=result["FamilyInfo"];

},function(error){

$.IShowError("错误",JSON.stringify(error));

},false);

后端代码:

protectedoverridevoidOnSubmit(stringactionName,

H3.SmartForm.SmartFormPostValuepostValue,

H3.SmartForm.SubmitSmartFormResponseresponse)

if(actionName=="QueryStudentInfo")

//从请求对象中获取学生ID

stringStudentId=this.Request["StudentId"]+string.Empty;

if(StudentId=="123")

//将学生姓名添加到响应对象中

response.ReturnData.Add("StudentName","张三");

//将学生所在班级信息添加到响应对象中

H3.Data.Serialization.VirtualObjectClassInfo=new

H3.Data.Serialization.VirtualObject();

ClassInfo.ValueTable["ClassName"]="大一";

response.ReturnData.Add("ClassInfo",ClassInfo);

//将学生喜好添加到响应对象中

string[]LikeList=newstring[3];

LikeList[0]="Rap";

LikeList[1]="跳舞";

LikeList[2]="打篮球";

response.ReturnData.Add("LikeList",LikeList);

//将学生家庭信息添加到响应对象中

ListFamilyInfo=new

List();

//将父亲信息添加到响应对象中

H3.Data.Serialization.VirtualObjectFatherInfo=new

FatherInfo.ValueTable["Name"]="李四";

FatherInfo.ValueTable["Age"]=41;

FamilyInfo.Add(FatherInfo);

//将母亲信息添加到响应对象中

H3.Data.Serialization.VirtualObjectMotherInfo=new

MotherInfo.ValueTable["Name"]="王五";

MotherInfo.ValueTable["Age"]=41;

FamilyInfo.Add(MotherInfo);

response.ReturnData.Add("FamilyInfo",FamilyInfo);

}else

//响应给前端一个异常信息

response.Errors.Add("未找到StudentId为“"+StudentId+"”的学生

信息!");

base.OnSubmit(actionName,postValue,response);

答:与主表业务对象更新类似。需要注意:子表的数据标题,如果配有主表字段控件则不可使用这样的更新写法。

stringschemaCode="";//子表控件编码

stringdetail="";//子表ObjectId

H3.DataModel.BizObjectaccountBo=H3.DataModel.BizObject.Load(this.Request.UserContext.UserId,this.Request.Engine,schemaCode,detail,false);//Load对象

accountBo["CustomerName"]="深圳氚云网络科技有限公司";//修改对象属性值

accountBo["CustomerLevel"]="已成交";

accountBo.Status=H3.DataModel.BizObjectStatus.Effective;//将对象状态设为生效

accountBo.Update();//更新对象

答:重写response.ReturnData数据集。

protectedoverridevoidOnLoad(H3.SmartForm.LoadListViewResponseresponse)

base.OnLoad(response);

stringisFormControl=this.Request["isFormControl"]==null"":this.Request["isFormControl"].ToString();

//判断是否是在load列表数据时

if(isFormControl!="1"&&isFormControl!="true")

//将系统自带的filter添加进来,否则系统自带的筛选将失效

andMatcher.Add(this.Request.Filter.Matcher);

//获取当前表单业务对象模式

H3.DataModel.BizObjectSchemaallTaskSchema=this.Request.Schema;

//获取列表过滤后的业务对象

H3.DataModel.BizObject[]tasks=H3.DataModel.BizObject.GetList(this.Request.Engine,this.Request.UserContext.UserId,allTaskSchema,H3.DataModel.GetListScopeType.GlobalAll,filter);

//初始化一个集合,用来存储经过筛选后响应给前端的数据

List>list=newList>();

if(tasks!=null&&tasks.Length>0)

//筛选需要显示的列表数据,例如筛选出状态为正常的数据

foreach(H3.DataModel.BizObjectbizintasks)

Dictionarydic=newDictionary();

stringobj=biz["ObjectId"]+string.Empty;//获取表单ID

stringstate=biz["F0000002"]+string.Empty;//获取状态

if(state=="正常"&&obj!="")

//构造当前表单业务对象

H3.DataModel.BizObjectClient=newH3.DataModel.BizObject(this.Engine,this.Request.Schema,this.Request.UserContext.UserId);

Client.ObjectId=obj;//给对象ID赋值

Client.Load();//根据ID加载业务对象

Dictionary>dicdate=null;

foreach(H3.DataModel.PropertySchemaprointhis.Request.Schema.Properties)//给dic赋值

//附件、图片不会显示在列表上,需要排除掉

if(pro.DataType==H3.Data.BizDataType.File||pro.DataType==H3.Data.BizDataType.Image||pro.DataType==H3.Data.BizDataType.BizObjectArray)

continue;

//F0000008控件为日期控件,在这个转成标准的日期表达字符串,用于改变列表对此列异常的显示

if(pro.Name=="F0000008")

dic.Add(pro.Name,Client[pro.Name]+string.Empty);

else

dic.Add(pro.Name,Client[pro.Name]);

/*----Start以下代码为构造手机端摘要信息----*/

stringmobilesummary=null;//移动端摘要构造器所需

stringpcsummary=null;//移动端摘要构造器所需

stringtelephone=null;//移动端摘要构造器所需

Client.GetSummary(outdicdate,outmobilesummary,outpcsummary,outtelephone);//返回摘要信息

dic.Add("__MobileSummary",mobilesummary);

dic.Add("__MobileDicData",dicdate);

/*----End以上代码为构造手机端摘要信息----*/

//将经过筛选后的数据对象添加进集合中

list.Add(dic);

//赋值筛选后的列表数据

response.ReturnData=newList>();

response.ReturnData=list;

//由于我们改变了ReturnData集合,所以这里需要改变响应数据的条数

response.DataCount=list.Count;

答:提供C#的Newtonsoft.Json组件进行解析。

stringvalue=this.Serialize(objectvalue);//将对象序列化成json格式的字符串

Tvalue=this.Deserialize(stringvalue);//将json格式的字符串反序列化成T类型的对象

答:例如获取子表中F0000001字段的值。先获取子表控制值,将其转化为对象数组,在循环遍历取值。

stringzz=detail["F0000001"]+string.Empty;//获取子表中F0000001的字段值

//Activity3节点审批同意时获取审批意见

if(actionName=="Submit"&&this.Request.ActivityCode=="Activity3")

stringcomment=postValue.Comment.Text;

//Activity3节点审批不同意时获取审批意见

if(actionName=="Reject"&&this.Request.ActivityCode=="Activity3")

H3.Workflow.Instance.ITokentok=this.Request.Engine.WorkflowInstanceManager.GetWorkflowInstance("流程id").GetLastToken();

tok.Activity:流程节点编码,string类型

tok.Approval:是否同意,H3.Data.BoolValue类型:

H3.Data.BoolValue.True是同意,

H3.Data.BoolValue.False是不同意,

H3.Data.BoolValue.Unspecified是未处理或节点被取消

tok.TokenId:流程步骤表(H_Token)ObjectId字段值,string类型

tok.Participants:流程审批人,string[]类型,每一个数组元素对应一个审批人用户ID

tok.FinishedTime:流程节点结束事件,DateTime类型

tok.UsedTime:当前节点从开始到结束耗时,TimeSpan类型

System.Data.DataTableb=this.Engine.Query.QueryWorkItemDisplayAndParticipant(string[]InstanceIds,H3.Workflow.WorkItem.WorkItemStatestate);

InstanceIds:流程实例id数组

答:这种情况一般是你字段为不可写,然后通过代码SetValue的值,这种情况,你只需要在OnSubmit通过

this.Request.BizObject["字段"]=postValue.Data["字段"];

答:如果是提交的数据,在OnSubmit里面判断(因为编辑的时候他的数据的状态是生效的状态)

if(this.Request.BizObject.Status==H3.DataModel.BizObjectStatus.Draft)

//这里是新增提交的时候写的代码

if(this.Request.BizObject.Status==H3.DataModel.BizObjectStatus.Effective)

//这里是编辑的时候写的代码

//得到一个IEngine对象

H3.IEngineengine=this.Request.Engine;

//获取系统虚拟用户的人员Id(表单设计后端类、列表设计后端类、定时器类、自定义接口类中都可以获取)

stringsystemUserId=H3.Organization.User.SystemUserId;

stringcurrentUserId=this.Request.UserContext.UserId;

H3.DataModel.BizObjectbiz=H3.DataModel.BizObject.Load(currentUserId,engine,"D00021fbc02cce483842e6b65b3fb10dd64536",this.Request.BizObjectId+string.Empty,false);

//获取流水号并赋值

biz["F0000001"]=biz["SeqNo"]+string.Empty;

//流水号要在提交后获取

this.F0000005.BindChange

("key",function(){

$.SmartForm.PostForm

function(res){

parent.F0000004.SetValue(res.ReturnData.Data1);

},function(){

});

if(actionName=="GetDays")

stringstr=this.Request["F0000005"]+string.Empty;

foreach(stringstr2instr1)

H3.DataModel.BizObjectbiz=H3.DataModel.BizObject.Load(this.Request.UserContext.UserId,this.Engine,"D0002175521e4e872547d4b24098bd4ae17e3b",str2,false);//通过前端传回来的关联表单objectid,加载出业务对象

if(actionCode=="DataCopy"){

//点击复制按钮时检查是否选中数据

varobjects=$.ListView.GetSelected();

if(objects==null||objects==undefined||objects==""){

$.IShowWarn("您还未勾选数据,请勾选!");

return;

//判断选中数据是否大于1条

elseif(objects.length>1){

$.IShowWarn("不好意思,只能勾选一个采购单");

else{

$.ListView.Post("DataCopy",{objectId:objects[0].ObjectId,str1:"123"},

function(data){

if(data.ReturnData==null||!data.ReturnData.Message){

//刷新列表

$.ListView.RefreshView();

$.IShowSuccess("复制完成!");

elseif(data.ReturnData!=null&&data.ReturnData.Message){

$.IShowError(data.ReturnData.Message);

$.IShowError("复制失败!");

},

$.IShowError(data.Errors[0]);

false);

if(actionName=="DataCopy")

stringobjectId=this.Request["objectId"];

stringstr1=this.Request["str1"];

if(!string.IsNullOrEmpty(objectId))

H3.DataModel.BizObjectaccountBo=H3.DataModel.BizObject.Load(this.Request.UserContext.UserId,this.Engine,"D000213ef50cc75c5e4bac958ec64182d62d9d",objectId,false);

if(accountBo!=null)

H3.DataModel.BizObjectSchemaschema=this.Request.Engine.BizObjectManager.GetPublishedSchema("D000213ef50cc75c5e4bac958ec64182d62d9d");

H3.DataModel.BizObjectobj=newH3.DataModel.BizObject(this.Request.Engine,schema,this.Request.UserContext.UserId);//主表对象

obj["F0000001"]=DateTime.Now;//需求日期

...

//附件

this.Request.Engine.BizObjectManager.CopyFiles("D000213ef50cc75c5e4bac958ec64182d62d9d","","F0000012",accountBo.ObjectId,"D000213ef50cc75c5e4bac958ec64182d62d9d","","F0000012",obj.ObjectId,true,true);

//子表数据不为空

if(accountBo["D00021Fe17972588372432381107d8bc67e9d50"]!=null)

//得到子表数据

H3.DataModel.BizObject[]zibiao=(H3.DataModel.BizObject[])accountBo["D00021Fe17972588372432381107d8bc67e9d50"];

//创建存新子表数据集合

ListzibiaoList=newList();

//循环复制数据

foreach(H3.DataModel.BizObjectzbinzibiao)

H3.DataModel.BizObjectSchemanewSch=this.Request.Engine.BizObjectManager.GetPublishedSchema("D00021Fe17972588372432381107d8bc67e9d50");

H3.DataModel.BizObjectnewzb=newH3.DataModel.BizObject(this.Request.Engine,newSch,this.Request.UserContext.UserId);

newzb["F0000006"]=zb["F0000006"];

zibiaoList.Add(newzb);

obj["D00021Fe17972588372432381107d8bc67e9d50"]=zibiaoList.ToArray();

obj.Status=accountBo.Status;

if(string.IsNullOrEmpty(obj.WorkflowInstanceId))

obj.WorkflowInstanceId=System.Guid.NewGuid().ToString();

//创建对象

H3.ErrorCodecreateResult=obj.Create();

//判断是否成功创建数据对象

if(createResult!=H3.ErrorCode.Success)

response.ReturnData.Add("Message",createResult.ToString());

if(accountBo.Status==H3.DataModel.BizObjectStatus.Running)

obj.Status=H3.DataModel.BizObjectStatus.Draft;

H3.Workflow.Instance.WorkflowInstancewfInstance=this.Request.Engine.WorkflowInstanceManager.GetWorkflowInstance(obj.WorkflowInstanceId);

H3.Workflow.Template.WorkflowTemplatewfTemp=this.Request.Engine.WorkflowTemplateManager.GetDefaultWorkflow(obj.Schema.SchemaCode);

this.Request.Engine.Interactor.OriginateInstance(this.Request.UserContext.UserId,obj.Schema.SchemaCode,wfTemp.WorkflowVersion,obj.ObjectId,obj.WorkflowInstanceId,H3.Workflow.WorkItem.AccessMethod.Web,true,string.Empty,true,outworkItemID,outerrorMsg);

response.ReturnData.Add("Message","数据对象未获取到!");

response.ReturnData.Add("Message","无数据对象ID!");

1.获取公司所有角色H3.Organization.OrgRole[]allRoles=this.Request.Engine.Organization.GetAllRoles();

2.循环这个数组,找到你要的角色

3.获取所有用户string[]userIds=this.Request.Engine.Organization.GetChildren(角色id,H3.Organization.UnitType.Role,true,H3.Organization.State.Active);

protectedoverridevoidOnWorkflowInstanceStateChanged(H3.Workflow.Instance.WorkflowInstanceStateoldState,H3.Workflow.Instance.WorkflowInstanceStatenewState)

//流程审批结束事件(先执行业务规则,在执行该方法)。

if(oldState==H3.Workflow.Instance.WorkflowInstanceState.Running&&newState==H3.Workflow.Instance.WorkflowInstanceState.Finished)

//执行业务代码逻辑

base.OnWorkflowInstanceStateChanged(oldState,newState);

需要注意,如果流程设置的是开始节点直接到结束节点,中间没有审批节点,或者审批节点全部符合自动审批通过逻辑,需要使用如下代码

if((oldState==H3.Workflow.Instance.WorkflowInstanceState.Running||oldState==H3.Workflow.Instance.WorkflowInstanceState.Initiated)&&newState==H3.Workflow.Instance.WorkflowInstanceState.Finished)

排查以下内容

这种情况一般是由于关联了子表,主表leftjoin子表的时候,如果子表是两行,那么join出来的结果会有两行,这样就会出现统计结果翻倍的情况,建议使用sql进行编写

sql报表如何进行权限控制

只要在查询结果中暴露出OwnerId和OwnerDepartId就行,并一定要要求OwnerId对应的字段是拥有者,如果selectmanasOwnerIdfromtable(这里的man是一个人员单选).这样也能达到控制权限的目的

复选框本质就是一个单行文本,他的字数限制是200个字,如果复选框所选择的字加起来超过了总字数就会报错

这种错误只可能有两种情况

1.EngineCode和EngineScrect填错了

2.SchemaCode填错了

注意:记得把EngineCode和EngineScrect写在Header里面

这种情况,一般是由于您的数据是通过业务规则插入的,而且没插数据标题,您虽然看到了数据标题,那是平台帮忙显示的,本质上数据标题(数据库Name值)是空的。这样情况您需要编辑提交一下数据就可以了。最一劳永逸的办法是您再插入业务规则的时候把数据标题也赋值一下

THE END
1.批量操作批量操作批量操作是指同时对多个对象执行相同或类似的动作,以提升效率和减少重复劳动。在计算机应用中,它常用于文件处理、数据库管理以及自动化任务执行等场景,可以显著节省时间和增加生产力。 批量操作通常指的是在计算机系统或软件应用中,对多个对象执行相同操作的过程,这种操作方式可以大幅度提高处理效率,减少重复性劳动,尤其在https://www.kdun.com/ask/735237.html
2.待审核中状态订单怎么恢复到正常状态下订单模块1.如果子账户没有处理待审核异常权限,需要主账户先再订单异常分类下设置好具体异常分类处理人保存,然后子账户可以待审核页面点击处理按钮操作,需要批量处理也可以勾选订单点击批量处理处理 2.如果子账户有对应异常分类处理权限,直接再待审核下具体异常分类点击处理按钮操作,需要批量处理也可以勾选订单点击批量处理处理上https://help.mabangerp.com/kbzx/nested/details?resource_id=1&id=3390
3.生产订单批量维护(计划订单批量拆单转生产订单)计划订单批量维护bstmaTYPEmkal-bstma,"最大批量大小 stlan TYPE mkal-stlan, ewahr TYPE stpo-ewahr, verwe TYPE plko-verwe, menge_bc TYPE menge_d, matnr_top TYPE matnr, number TYPE numc10, number_top TYPE numc10, field_style TYPE lvc_t_styl, "为内表添加设置编辑状态所需的字段 https://blog.csdn.net/twins622/article/details/137789516
4.数据批量处理bin的技术博客数据批量处理 1 问题 修改检索目录为/myload。 将/etc/passwd文件导入db1库的user3表里,并添加行号字段。 将db1库user3表所有记录导出, 存到/myload/user.txt文件里。 2 方案 在mysql50主机完成练习。 3 步骤 实现此案例需要按照如下步骤进行。 https://blog.51cto.com/u_17098655/12875996
5.不愧是阿里内部出厂的“java高分面试指南一次偶然,从朋友那里得到一份“java高分面试指南”,里面涵盖了25个分类的面试题以及详细的解析:JavaOOP、Java集合/泛型、Java中的IO与NIO、Java反射、Java序列化、Java注解、多线程&并发、JVM、Mysql、Redis、Memcached、MongoDB、Spring、Spring Boot、Spring Cloud、RabbitMQ、Dubbo 、MyBatis 、ZooKeeper 、数据结构、https://maimai.cn/article/detail?fid=1738145856&efid=SuNyC6IiGlTjN5JUckPd6g
6.常见问题·国产操作系统麒麟操作系统——麒麟软件官方网站在该文件夹空白处右键,点击从终端打开,输入命令:sudo dpkg -i *, 即可批量安装软件 【注】:部分软件的依赖包存在安装顺序问题,如果安装顺序不对,软件将 不能正确被配置20) 安装软件一直在0% A: 一般后台正在下载,请耐心等待。如果很久没反应的话,建议更新下外网源21) 下载到了软件包,怎么安装 https://www.kylinos.cn/support/problem.html
7.智慧党建数据录入操作教程与党员认证操作流程5.党代表工作动态功能正在开发中,后续会发给大家 (五)组织生活(组织生活,民主评议党员,谈心谈话) 1.点击左栏中“组织生活”-“组织生活” 2.点击“添加” 3.选择“所属栏目”标题选中,进行数据添加, 4.参会人员名单在右侧选择,可单个勾选,也可点击党组织名称前的方框进行全选(只能单个支部批量添加) https://www.yueyang.gov.cn/wl/65004/65011/content_1924976.html
8.大厂实战!B端任务处理系统的体验优化流程总结优设网1. 提供批量处理功能,提高用户任务操作效率:B 端任务处理系统中效率是首要的设计原则,批量处理功能本身就是一种高效的操作方式,可以大大提高用户的效率。在设计批量处理功能时设计师应当探索用户批量操作的行为规律,并体现在设计上,这样才能让功能满足用户习惯和需求。 https://www.uisdc.com/tob-design-4
9.怎么做好仓库管理工作计算人工成本,以找出运营中的最佳成本结构。您是否经常在拣选系统中放置更多的物体?对自动存储系统的投资可以减少您在拣货操作中所需的人数,从而可以员工重新分配到其他地方。 3、批量拣货,如果可以 批量拣货允许一个拣货员访问一次SKU位置的同时履行多个订单或一批订单。这种拣选策略减少到同一拣货位置的行程时间和次https://www.jy135.com/guanli/142118.html
10.利用路由器设置家庭或小型办公室局域网在Windows98/Me操作系统中,可依次点开“开始→运行”,在运行栏中输入“winipcfg”命令,然后“确定”。在打开的“IP配置”界面中先选择“释放”,然后再点“更新”按钮,IP配置便会让该机网卡自动获得和宽带路由器处于同一网段的新的IP地址。 在Windows2000/XP操作系统中,可点击电脑的“开始”→“运行”,在“打开”https://xjxh.xyu.edu.cn/info/1129/1014.htm
11.小米手机批量卸载应用软件的几种常用方法6.在随后弹出的界面中,点击“卸载选中应用”即可。 二、进入安全中心卸载 可通过安全中心批量卸载软件,在进入安全中心对手机进行检测优化的过程中,顺便将各种系统和程序垃圾及多余软件清理掉是很多人常见的习惯性动作,我经常这么做。具体操作过程如下: 方式Ⅰ. 点击进入“安全中心”,将“安全中心”界面朝下拉,找到“http://www.miui.com/thread-8158989-1-1.html
12.跟单工作总结(通用15篇)面临客户、面临定单展开任务的跟单员,正在现今社会合作日趋剧烈的市场经济情况下,紧张性不时突显进去,正在良多公司,跟单员成为了老板们的“出格助理”。跟单员是企业与市场、营业员与客户之间联络的纽带,跟着商品市场的多样化、小批量化和节拍的放慢,跟单员任务品质的黑白间接影响公司的效劳质量以及企业抽象。 https://www.unjs.com/fanwenwang/gzzj/20230107173318_6228043.html
13.品牌的推广策划方案(通用12篇)对于觅你酒店的目标消费者,他们并不是单纯为了解决生理上的需求,也超越了保障与安全的需要,他们来此消费是为了得到一种人性化、细微化、特色化的服务和享受,而在消费的过程中,能够凸显个人的超前生活方式,获得一种满足感。 三、营销方案推荐要点: (1)引进该行业内富有实际操作经验的能人来经营管理。https://www.oh100.com/zhichang/1244084.html