Microsoft Dynamics CRM4.0 创建单据的时候,自动生成单据编号的通用方法
一、新建两个实体,具体如下:
| 单据流水号(new_maxbillcode) | |||||||
| 显示名称 | 名称 | 类型 | 格式 | 最大长度 | 需求级别 | IME模式 | 备注 |
| 名称 | new_name | nvarchar | 文本 | 100 | 业务必需的 | 自动 | 系统自带 |
| 标记 | new_billmark | nvarchar | 文本 | 100 | 无约束 | 自动 | |
| 实体 | new_entity | nvarchar | 文本 | 100 | 无约束 | 自动 | |
| 年 | new_year | nvarchar | 文本 | 100 | 无约束 | 自动 | |
| 月 | new_month | nvarchar | 文本 | 100 | 无约束 | 自动 | |
| 日 | new_day | nvarchar | 文本 | 100 | 无约束 | 自动 | |
| 位数 | new_places | int | 无 | ||||
| 流水号 | new_maxcode | int | 无 | ||||
| 测试(new_test) | |||||||
| 显示名称 | 名称 | 类型 | 格式 | 最大长度 | 需求级别 | IME模式 | 备注 |
| 名称 | new_name | nvarchar | 文本 | 100 | 业务必需的 | 自动 | 系统自带 |
二、在单据流水号实体上添加配置规则,具体如下图:

三、创建存储过程 [dbo].[UP_GetMaxBillCode]
/*--------------------------------------------------------------------------------------------------------
Memo 获取单据最大号 DECLARE @BillMark VARCHAR(20)
DECLARE @BillCode VARCHAR(50)
SET @BillMark='NEW'
EXEC UP_GetMaxBillCode @BillMark,@BillCode OUTPUT
SELECT BillMark=@BillMark,BillCode=@BillCode SELECT * FROM NEW_MaxBillCodeExtensionBase
--------------------------------------------------------------------------------------------------------*/
CREATE PROC [dbo].[UP_GetMaxBillCode]
@Entity VARCHAR(50),
@BillCode VARCHAR(50) OUTPUT
AS
SET NOCOUNT ON
DECLARE @MaxCode VARCHAR(20)
DECLARE @Version ROWVERSION
DECLARE @Times INT SELECT @MaxCode=NEW_MaxCode+1,@Version=[Version]
FROM NEW_MaxBillCodeExtensionBase
WHERE NEW_Entity=@Entity UPDATE NEW_MaxBillCodeExtensionBase SET NEW_MaxCode=NEW_MaxCode+1
WHERE NEW_Entity=@Entity
AND [Version]=@Version WHILE @@ROWCOUNT=0
BEGIN
SET @Times=@Times+1
IF(@Times%100=0)
BEGIN
WAITFOR DELAY '00:00:01'
IF(@Times>500)
BEGIN
RETURN NULL
END
END SELECT @MaxCode=NEW_MaxCode+1,@Version=[Version]
FROM NEW_MaxBillCodeExtensionBase
WHERE NEW_Entity=@Entity UPDATE NEW_MaxBillCodeExtensionBase SET NEW_MaxCode=NEW_MaxCode+1
WHERE NEW_Entity=@Entity
AND [Version]=@Version
END SELECT @BillCode=ISNULL(NEW_BillMark,'')+ISNULL(NEW_Year,'')+ISNULL(NEW_Month,'')+ISNULL(NEW_Day,'')+RIGHT(CONVERT(VARCHAR,@MaxCode),NEW_places)
FROM NEW_MaxBillCodeExtensionBase
WHERE NEW_Entity=@Entity
四、创建测试实体的触发器
--创建测试实体的触发器
CREATE Trigger [dbo].[Company_Insert_new_test]
ON [dbo].[new_testExtensionBase]
AFTER INSERT
AS
BEGIN
SET NOCOUNT ON
IF EXISTS(SELECT * FROM INSERTED WHERE new_name IS NULL)
BEGIN
DECLARE @BillCode VARCHAR(50)
EXEC UP_GetMaxBillCode 'new_test',@BillCode OUTPUT
UPDATE new_testExtensionBase SET new_name=@BillCode
WHERE new_testid IN (SELECT new_testid FROM INSERTED)
END
END
五、新建一个测试实体记录,发现new_name自动生成如下:

Microsoft Dynamics CRM4.0 创建单据的时候,自动生成单据编号的通用方法的更多相关文章
- Microsoft Dynamics CRM4.0编程---说明
Introduction(说明) If your organization has customers, you need a software system to help you manage y ...
- Microsoft Dynamics CRM4.0 和 Microsoft Dynamics CRM 2011 JScript 方法对比
CRM 2011 如果需要再IE里面调试,可以按F12在前面加上contentIFrame,比如 contentIFrame.document.getElementById("字段" ...
- Microsoft Dynamics CRM4.0 JScript 过滤lookup 出现 Microsoft Dynamics CRM 窗口无法打开,可能已被弹出窗口阻止程序所阻止。
一.现象:JScript过滤lookup字段,选择lookup字段出现下图的情况: 出现:Microsoft Dynamics CRM 窗口无法打开,可能已被弹出窗口阻止程序所阻止.请将这台Micro ...
- 【SQL-自动生成编号】按规则自动生成单据编号 以及并发问题_使用触发器、函数 等
描述:每种单据新建时,自动生成它的单据编号. 规则如:固定码+日期+流水号 (ABC1603180001) 方法一:触发器 触发器的缺点是,执行了sql之后才看到编码. 测试:流水号不能超过最大数,否 ...
- 新版本ADT创建Android项目无法自动生成R文件解决办法
本人使用的是ADT是Version 23.0.2,支持Android 6.0之后的系统环境,最高版本23,在创建Android项目的时候,每次创建项目选择“Compile With”低于6.0版本的时 ...
- GZFramwork数据库层《二》单据表增删改查(自动生成单据号码)
运行效果: 使用代码生成器(GZCodeGenerate)生成tb_EmpLeave的Model 生成器源代码下载地址: https://github.com/GarsonZhang/GZCodeGe ...
- PHP数字字符串左侧补0、字符串填充和自动补齐的几种方法
一.数字补0. 如果要自动生成学号,自动生成某某编号,就像这样的形式“d0000009”.“d0000027”时,那么就会面临一个问题,怎么把左边用0补齐成这样8位数的编码呢?我想到了两种方法实现这个 ...
- webstorm创建js文件时自动生成js注释
设置webstorm创建js文件时自动生成js注释 settings--Editor--File and Code Temlates 黑色框框里的内容自己填写上去,以下是参考的代码块: /** * @ ...
- Dynamics CRM4.0 和 Dynamics CRM2011 Plugin 实现一样的功能的方法的比较
1.给类型赋值不同 CRM4 plugin给lookup赋值为空 : Lookup lookupnull = new Lookup(); lookupnull.IsNull = true; looku ...
随机推荐
- 如何迭代pandas dataframe的行
from:https://blog.csdn.net/tanzuozhev/article/details/76713387 How to iterate over rows in a DataFra ...
- POJ 3220 位运算+搜索
转载自:http://blog.csdn.net/lyhypacm/article/details/5813634 DES:相邻的两盏灯状态可以互换,给出初始状态.询问是否能在三步之内到达.如果能的话 ...
- webservice-jdk客户端代码
使用wsimport.exe 生成客户端代码 使用JDK的bin文件夹中,有一个wsimport.exe,这个工具依据wsdl文件生成相应的类文件,然后用这些文件就可以像调用本地类一样调用本地的类一样 ...
- 微信H5支付 C#
首先奉上 万能的 官方文档 应用场景(废话) H5支付是指商户在微信客户端外的移动端网页展示商品或服务,用户在前述页面确认使用微信支付时,商户发起本服务呼起微信客户端进行支付. ...
- IntentService的用法,对比Service它会按顺序执行,不会像Service一样并发执行。
package com.lixu.intentservice; import android.app.Activity; import android.content.Intent; import a ...
- Mysql 分区表-分区操作
一.查看MySQL是否支持分区 1.MySQL5.6以及之前版本 show variables like '%partition%'; 2.MySQL5.7 show plugins; 二.分区表的分 ...
- 浅谈:当程序员的N多好处,逆袭高富师
选择一份职业,除了要要分析有没有钱途外(为什么要选择 IT 行业,IT 业有多火爆你造吗?),还要平衡其他方面的利弊.有很多想进入这个行业的小伙伴问我,程序员到底有什么好处.看样子这是很多小伙伴关心的 ...
- Apache 子项目 概述
apache HTTP Server--------Web服务器(多用于静态网页,有负载均衡效果,可承受每天数百万人访问).apache Abdera>>>>>>& ...
- <NET CLR via c# 第4版> 读书笔记--目录
<NET CLR via c# 第4版>个别章节虽读过多次,但始终没有完整读过这本书.即使看过的那些,时间一长,也忘记了大部分.趁着最近不忙,想把这本书好好读一遍,顺便记下笔记,方便随时查 ...
- 2018-2019-2 网络对抗技术 20165202 Exp1 PC平台逆向破解
一.基础知识 掌握NOP, JNE, JE, JMP, CMP汇编指令的机器码. NOP指令为空指令,当运行该指令时CPU不做任何事情,但是会占用一个指令的时间,当指令间需要有延时,可以插入NOP指令 ...