功能描述:对客户实体实现自动编号功能,1、2、3、4......  自动编号存放于属性accountnumber.
原  理:在mscrm服务器用一个文本文件存放当前最新编号,每当创建客户记录时在PreCreate事件接口做以下步骤:
1、锁定文本文件(避免其他人同时读取造成编号重复)
2、获取当前最新编号
3、当前最新编号+1更新到文本文件
4、解除锁定文本文件
5、使用当前最新编号+1作为当前客户记录的编号
实现步骤:
1、客户化把Account实体属性accountnumber设置为只读。
2、在<installdir>\Program Files\Microsoft CRM\server\bin\assembly\目录下创建一个文本文件,命名为AccountAutoNumber.txt,打开AccountAutoNumber.txt,输入初始化值为0。
      设置文件AccountAutoNumber.txt安全属性,如下图:
     
3、写PlugIn接口处理函数,代码如下:
using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
using Microsoft.Win32;
using Microsoft.Crm.Sdk;
using Microsoft.Crm.SdkTypeProxy;

namespace AutoNumber
{
    public class PreCreateAccount : IPlugin
    {
        #region IPlugin Members

public void Execute(IPluginExecutionContext context)
        {
            if (context.InputParameters.Properties.Contains("Target") && context.InputParameters.Properties["Target"] is DynamicEntity)
            {
                DynamicEntity entity = (DynamicEntity)context.InputParameters.Properties["Target"];
                string CurrentAutoNumber;

if (entity.Name == EntityName.account.ToString())
                {
                    if (entity.Properties.Contains("accountnumber") == false)
                    {
                        lock (this)
                        {
                            RegistryKey regkey = Registry.LocalMachine.OpenSubKey("SOFTWARE\\Microsoft\\MSCRM");
                            string InstallDir = regkey.GetValue("CRM_Server_InstallDir").ToString() + @"\Server\bin\assembly\AccountAutoNumber.txt";

TextReader textReader = File.OpenText(InstallDir);
                            CurrentAutoNumber = textReader.ReadLine();
                            textReader.Close();
                            CurrentAutoNumber = (long.Parse(CurrentAutoNumber) + 1).ToString();
                            TextWriter textWriter = File.CreateText(InstallDir);
                            textWriter.WriteLine(CurrentAutoNumber);
                            textWriter.Close();
                        }

StringProperty accountNumber = new StringProperty("accountnumber", CurrentAutoNumber);
                        entity.Properties.Add(accountNumber);
                    }
                    else
                    {
                        throw new InvalidPluginExecutionException("自动编号只能由系统产生!");
                    }
                }
            }
        }

#endregion
    }
}
4、注册PlugIn插件,Plugin注册画面:

完整代码下载

转载于:https://www.cnblogs.com/caims/archive/2008/08/11/1265527.html

MSCRM二次开发实现自动编号功能相关推荐

  1. 在Word中为标题样式添加自动编号功能

    转自:http://blog.sina.com.cn/s/blog_6238dcdb0100qz8j.html 摘要: 本文可以帮助你在Office 2007中为Word标题样式添加和设置自动编号功能 ...

  2. 火山安卓开发支付宝自动转账功能

    火山安卓开发支付宝自动转账功能 首先你们需要准备火山安卓的无障碍和Root开发框架 点击下载无障碍和Root开发框架 下载完成后,需要更改里面的Root模拟点击坐标的位置 更改位置后,点击编译(注意: ...

  3. UG/NX 二次开发(C#)自动出2D零件图(标准件配置Bata版)

    一.前言 昨天分享了自动出2D零件图的思路(UG/NX 二次开发(C#)自动出2D零件图思路),今天整理了Q群里各位大佬的意见,结合当前实际项目情况,做了一个可配置的半自动出图版本,暂且称之为标准件配 ...

  4. word中 图、表、公式的自动编号功能

    话外篇:word 中 自己常用的 快捷键 Ctrl + A : 全选 Ctrl + F: 查找 Ctrl + b: 加粗 Ctrl + i : 倾斜 写文档时会涉及图.表.公式的顺序调整.增加或删除, ...

  5. C# 实现Word图片自动编号功能

    有时候创建一个比较大的文档,需要用到大量图片时,我们一般都会对图片进行编号.这时,若采用手动为图片编号的方法,耗时耗力而且容易出错.其实使用Word的题注功能,可以轻松搞定图片自动编号.这篇文章将介绍 ...

  6. 如何高效使用WORD的自动编号功能

    文章正文的自动编号 首先应该选择"格式-格式与样式",在右侧栏中把要使用的编号样式编辑好并和大纲级别关联起来,方便下一步的使用,然后在"格式-项目符号和编号"中 ...

  7. 微信公众号二次开发可以做哪些功能?

    微信公众平台现在很多商家企业都在使用,但如何通过微信公众平台展现自己企业的特色和优势,给客户提供更多便利功能,进而通过微信公众平台为企业带来更多的益处呢? 这是众多使用微信公众平台的商家企业需要深入思 ...

  8. AE二次开发中几个功能速成归纳(符号设计器、创建要素、图形编辑、属性表编辑、缓冲区分析)...

    /** 实习课上讲进阶功能所用文档,因为赶时间从网上抄抄改改,凑合能用,记录一下以备个人后用.** -------------------------------------------------- ...

  9. 微信公众号二次开发可以做哪些功能

    微信公众平台现在很多商家企业都在使用,但如何通过微信公众平台展现自己企业的特色和优势,给客户提供更多便利功能,进而通过微信公众平台为企业带来更多的益处呢? 这是众多使用微信公众平台的商家企业需要深入思 ...

最新文章

  1. 如何将半页纸论文写到十页?
  2. Android的activity的生命周期
  3. mysql技术分享--表分区实现
  4. c语言课全部由字母,C语言程序设计课程期末练习试题.doc
  5. 有问有答 | 算法和数据结构精华问答
  6. django-如何让首页不要报错
  7. Centos7.6环境Docker安装Oracle19c企业版
  8. git pull git add git commit git branch git更新代码git提交git分支管理
  9. swift中变量的几种类型
  10. cad截图软件_AutoCAD电气制图协会线上CAD学习打卡活动结束
  11. 文件上传功能如何测试
  12. python井字棋如何判断输赢_python 井字棋游戏 简单版,不知道为什么不判断,用Tkinter做的界面...
  13. 在vue中实现父组件调用子组件以及传值
  14. 数据库版本管理框架-Flyway
  15. LeetCode-Python-875. 爱吃香蕉的珂珂
  16. 【OpenCV】cv::Mat位深和通道,CV_8UC1等
  17. 离线数仓-01-项目介绍和用户行为数据采集
  18. 【244】Python 说出下面list1,list2,list3的输出值(新的默认列表仅仅只在函数被定义时创建一次)...
  19. 传奇服务器的爆率文件在哪里,传奇私服爆率文件,基础经验,解析!!!!
  20. 小学计算机社团活动教案,小学信息技术兴趣小组(电子小报)教学计划

热门文章

  1. 查询分析器下如何备份数据库
  2. php试卷A高质量含答案,php试卷A高质量含答案
  3. java没有打印mysql日志_0216 aop和打印数据库执行日志
  4. golang jwt设置过期_听说你的JWT库用起来特别扭,推荐这款贼好用的!
  5. file 选择的文件胖多有多大_如何删除 macOS 压缩包中的隐藏文件?
  6. cdrom是多媒体微型计算机,全国计算机二级题库第三章
  7. java 线程强制停止线程_java多线程之停止线程
  8. 《搜索算法——DFS、BFS、回溯》
  9. java 字谜_计算字谜的出现次数
  10. 合并排序算法排序过程_合并排序| 用于大型输入的最佳排序算法之一