ds.select(ds.id,ds.性别==Dict.性别.男,["部门","-id"],2,10):获取性别为男的用户id,先按部门排序,部门相同的按id反向排序,从第3条开始,获取10条数据

    ifv(it.性别==null || it.性别=="",@xingbie,it.性别):是如果用户记录it的性别字段是空的,那么返回参数xingbie的值,否则返回 性别字段的值

    http://localhost/misshop/index.jsp?query.ds.%E6%80%A7%E5%88%AB=1#cGFnZS_ns7vnu5_nrqHnkIYv55So5oi3566h55CG : 在原网址中加入?query.ds.性别=1,查看都是男性的用户。或者在链接的控件属性中,普通参数项,加上参数名query.ds.性别,参数值Dict.性别.男

    ?query.ds.性别=1&query.ds.部门.名称=业务部 :两个参数的情况,性别是男,并且属于业务部。

    query.ds.id.ngt=3 或者 query.ds.id.小于=3 :id大于等于3(不大于)

    query.ds.id.lt=3 或者 query.ds.id.小于=3 :id小于3

    query.ds.名称.like=张三 :名称 包含 张三

    query.ds.id.in=[1,3,4] :id 在某数组中 [1,3,4]

    query.ds.部门.名称.like=业务 :部门的名称包含 业务

    query.ds.部门.部长.名称=admin :部门的部长的名称是admin

    query.ds.部门.部长.名称.like=张 :部门的部长的名称包含 张

    simpleauth=false: 项目文件夹下的project.mis文件中,找到simpleauth这一行,把simpleauth=true改为simpleauth=false,改完后重启设计器,打开按钮级权限。

    =query.ds.部门.主管 : 选择一个用户,列出该用户管理的部门的用户。

    =query.ds.OM_主管^部门 : 按照选择的部门,去找这个部门的主管

    =ds.OM_主管^部门.名称 : 列表项里的单元格中写,表示这个用户管理的部门的名称,一对多

    单元格值为Dict.性别.男(无等号),保存至 属性里为=query.ds.性别 : 查询区的这个格子初始有值是Dict.性别.男,这样初期进去就仅显示男性用户。

    Web.Query.innerQuery(@mis_queries) : 立即查询,控件属性高级的值改变事件加这一句

    =ifv(dynamic(C2)==1,Date.today().addDay(-1*dynamic(B2)),C2==2,Date.today().addMonth(-1*dynamic(B2)), Date.today().addYear(-1*dynamic(B2)) ),保存至 为 query.ds.生日.大于等于 : 如果C21,那么当前日期减去B2的值的周,如果C22,当前日期减去B2的值的月,否则当前日期减去B2的值的年。通过dynamic,当C2和B2的值变动时,G2的值计算为开始日期,通过生日的大于等于关系进行查询。显示这一段周期内生日的人。

    = dynamic(A2)+B2:A2是输入框,就可以实现A2变化,C2的值跟着变化的效果。

    ifv(dynamic(D4)==Dict.性别.男,-16777000,-16720356) :B4的前景色属性公式中录入动态颜色公式,如果D4值为 字典项男性(也就是1),那么是蓝色,否则是绿色)。页面属性要为可编辑,可编辑会影响生成什么样的控件,不影响保存!

    dynamic(it.部门)==1 : 可视属性里填入,部门是 业务部(id为1)的时候,相片和描述可见,其他时候不可见。

    ifv(dynamic(it.性别)==Dict.性别.男,Validate.长度校验(value(),5,10),Validate.长度校验(value(),10,20)) : 如果是男性,长度允许5到10,否则长度允许10到20。value()是当前单元格的动态值,跟dynamic一样

    save.onlyInsert(it) : 表示it 在新增的时候才保存,可以在任意一个格子的保存至表达式里写

    save.onlyUpdate : 如果是更新,执行。如果是插入,不执行。

    save.abandon(it) : 表示 it 记录符合条件则不保存。把条件的公式写在一个格子里,保存至 属性里写这个函数。如果这个格子计算结果是 true,那么保存会放弃执行。

    it.商品:it.商品 | it_库存.商品。it.仓库:it.仓库 | it_库存.仓库 : 同步保存,联合确定记录,这里没有id,由联合主键的字段商品和仓库共同决定。有id时写一个id就够了。
    it.入库数量:it.入库数量 | save.dbIncrement(it_库存.数量) : 表示同时把这个数值作为增量存储到库存表的对应记录的数量里。

    table.商品.findOne(table.商品.id==dynamic(It.商品)).单价 * dynamic(it.数量):根据动态商品查找单价,再乘以 动态的 数量,可以写到保存至的 总价。

    单元格的值为 =me.id ,保存至 的公式填入 it.联系人 : 表示客户编辑页面中, 联系人 的初值应该是当前用户。

    Mis.Formater.toJson(bumen) : 生成Json数据。提供数据给其他地方使用的时候,在页面配置中把页面类型设置为 数据 ,访问这个页面的时候,得到会是JSON格式的页面数据。

    DataSet.createByCells(Cl.A1,Cl.C2):用页面单元格构造数据集,第一行是列头,其他行是数据,支持扩展行列,第一个参数是起始格,第二个参数是终止格

    http://localhost/misshop/cGFnZS_ns7vnu5_nrqHnkIYvYWE=.raq?mis_request_datas=juese,ds : 前端请求的URL里添加参数mis_request_datas=juese,ds,将仅返回juese和ds这两个数据。

    把 ds.xx 改为 table.客户.xx : 查询的时候需要,就不再表示页面数据的关联列,而是数据表的关联列
    =table.用户.sum(table.用户.id) : 不分页求和
    =ds.sum(ds.id) : 分页的求和,如当ds记录条数超过20条,分成多页显示,则只对当前页的数据求和

    table.客户.find(table.客户.联系人.手机号=="15010002000") :查找联系人手机号是15010002000的客户。

    table.客户.find(table.客户.联系人.部门==me.部门):查找联系人和当前用户相同部门的客户。

    table.客户.find(table.客户.联系人.部门.主管==me.id):查找当前用户负责的部门的客户。

    table.客户.find(table.客户.联系人.部门.主管==me.id || table.客户.联系人==me.id):查找当前用户负责的部门的客户,以及当前用户的客户。

    ds.联系人.手机号: 客户联系人的手机号。
    ds.联系人.角色: 客户联系人的角色。
    ds.联系人.部门:客户联系人所在的部门 (这里是部门id,但可能显示为部门名称)
    ds.联系人.部门.名称:客户联系人所在的部门的名称。
    ds.联系人.部门.主管:客户联系人所在的部门的主管(主管id)。
    ds.联系人.部门.主管.名称:客户联系人所在的部门的主管。
    ds.联系人.部门.主管.手机号:客户联系人所在的部门的主管的手机号。

    query.ds.名称 :输入文本,查找名称包含输入文本的客户 。
    query.ds.名称.eq :输入文本,按照名称完全相等查询
    query.ds.性别 :选择一个性别,查找性别为选中项的客户。
    query.ds.联系人 :选择一个用户,查找联系人是该用户的客户。
    query.ds.生日 :选择一个日期,查找生日在该天的客户。
    query.ds.生日.大于等于 :选择一个日期,查找生日大于等于该天的客户
    query.ds.生日.小于 :选择一个日期,查找生日小于该天的客户

    query.ds.联系人.名称 : 按照名称查询,查找联系人名称包含输入文本的客户。
    query.ds.联系人.名称.eq : 按照名称查询,查找联系人名称和输入文本完全相同的客户。
    query.ds.联系人.部门 : 选择一个部门,查找联系人的部门为选择的部门的客户。
    query.ds.联系人.部门.名称 : 输入部门名称,查找联系人的部门名称包含输入文本的客户。
    query.ds.联系人.部门.主管 : 选择一个用户,查找联系人的部门主管是选中用户的客户。

    =ds.联系人.OM_主管^部门.名称:客户的联系人管理的所有部门的名称的列表 [业务部,财务部] 。多对一关联,直接用小圆点接,这是一对多关联

    ifv(ds.重要度==Dict.重要度.非常重要,"btn-outline-warning","btn-secondary") : 动态控制显示样式,样式名把鼠标浮在“默认样式”上的黄色框中有
    ifv(ds.性别==Dict.性别.男,"fa fa-chevron-up ","fa fa-chevron-down ") :如果客户是男性,那么客户名显示 使用 向上 的图标,如果是女性,那么客户名 使用 向下 的图标

    =ds.group(ds.学生.班级.名称):将数据按照班级分组
    =avg(E3):统计E3格扩展后所有格的平均值
    =ds.count(ds.学历==A7):统计学历等于A7格中值的数量

    =table.简历信息.max(table.简历信息.期望薪水下限):求期望薪水下限的最大值
    =table.简历信息.sum(table.简历信息.期望薪水下限,table.简历信息.求职人.学历=="本科"):求期望薪水本科级别薪水的和=table.简历信息.count(table.简历信息.求职人.学历==”本科”)`:求本科求职人的数量

    常见的函数空间:
    Date:日期函数
    Math:数学函数
    Str:文本函数(字符串函数)
    List:数组函数
    Map:键值对函数

    =A1.addYear(1).addMonth(1).addDay(1).addHour(1).addMinute(1).addSecond(1) : A1的日期往后推1年,1月,1日,1时,1分,1秒之后的日期。

    =Date.now().setHour(0).setMinute(0).setSencond(0).setMilliSecond(0) : 当前时间的时分秒毫秒都设置为0,也是Date.today()
    =Date.now().year:当前年数
    =Date.now().hour:当前小时数
    =Date.now().second :当前秒数

    Date.today() : 返回表示今天零点的日期对象。
    Date.now() : 返回表示当前时间的日期对象。
    Date.parseDate("2014-10-13") : 返回表示2014年10月13日的日期对象。

    Date.today().addDay(1) : 返回昨天的日期对象。
    Date.today().setDay(1).addHour(1) : 返回当月1号,1点的日期对象。

    table.客户.提交时间 > = Date.today() && table.客户.提交时间 < Date.today().addDay(1) : 表示提交时间大于等于当前日期(0点),小于明天(0点)。

    value()>=dynamic(it.单价)*dynamic(it.数量) :订单的校验类型里直接写公式
    Validate.validRegex(value(),"/^1[3-578]\d{9}$/") : 手机号的正则校验

    =table.学生.saveRecord({"id":ds.id,"是否通过":true});null :将学生表的是否通过字段设置为true,并且该单元格不返回任何值。

    =ifv(it.学历证书编号==null&&(it毕业状态.名称=="毕业"||it毕业状态.名称=="结业"||it毕业状态.名称=="双学位"),it宏.学历编码前缀+str(Sequence.increment(it宏.学历编码前缀),"#000000"),it.学历证书编号):根据状态自动生成流水证书编号
    注意,ifv函数可以对多个表达式进行判断,如ifv(A1,x1,A2,x2,A3,x3,x4),表示如果条件为A1则返回x1,其余的如果条件为A2则返回x2,其余的如果条件为A3则返回x3,都不满足则返回x4。