MSCRM二次开发实现自动编号功能

功能描述:对客户实体实现自动编号功能,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安全属性,如下图:
      2008-08-11-1.jpg
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注册画面:
2008-08-11-2.jpg


完整代码下载

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/386487.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

这篇文章可以满足你80%日常工作!成功入职腾讯

什么是中年危机 根据权威数据显示&#xff0c;国内IT程序员鼎盛时期是在25-27岁左右&#xff0c;30岁对于程序员而言完全是一个38线&#xff0c;接着就是转业转岗的事情&#xff0c;这一点在业界也算是一个共识了。 大学毕业步入IT行业普遍年龄也是在22岁左右&#xff0c;然而…

java并发synchronized 锁的膨胀过程(锁的升级过程)深入剖析(2)

接下来我们分析两个批量偏向撤销的相关案例&#xff08;禁止偏向锁延迟的情况下&#xff1a;-XX:UseBiasedLocking -XX:BiasedLockingStartupDelay0&#xff09;&#xff1a; 案例一&#xff1a; 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28…

System.Configuration命名空间下的关键类

1.ConfigurationManager和 WebConfigurationManager类&#xff1a; 使用 ConfigurationManager 类&#xff0c;可以访问计算机和应用程序的配置信息。ConfigurationManager 是处理客户端应用程序配置文件的首选方法&#xff1b;不推荐使用任何其他方法。对于 Web 应用程序&…

连续四年百度Android岗必问面试题!Android校招面试指南

前言 刚从阿里面试回来&#xff0c;想和大家分享一些我的面试经验&#xff0c;以及面试题目。 这篇文章将会更加聚焦在面试前需要看哪些资料&#xff0c;一些面试技巧以及一些这次的面试考题。 面试经历 7月确定想走后开始看各种面经&#xff0c;复习基础知识&#xff0c;月…

Spring Boot教程(11) – 理解注解@ControllerAdvice

之前&#xff0c;我们介绍过ModelAttribute和ExceptionHandler,前者可以往请求的Model里加数据&#xff0c;后者可以接受请求处理方法抛出的异常。但是他们放在控制器(Controller)里的时候&#xff0c;作用范围是有限的&#xff0c;只管当前控制器里的方法。如果你有几百个控制…

透彻解析!字节跳动Android实习面试凉凉经,年薪超过80万!

什么是Kotlin? Kotlin&#xff0c;如前面所说&#xff0c;它是JetBrains开发的基于JVM的语言。JetBrains因为创造了一个强大的Java开发IDE被大家所熟知。Android Studio&#xff0c;官方的Android IDE&#xff0c;就是基于Intellij&#xff0c;作为一个该平台的插件。 Kotli…

synchronized 底层如何实现?什么是锁升级、降级?

synchronized 底层如何实现&#xff1f;什么是锁升级、降级&#xff1f; synchronized 代码块是由一对 monitorenter/monitorexit 指令实现的&#xff0c;Monitor 对象是同步的基本实现单元。 https://docs.oracle.com/javase/specs/jls/se10/html/jls-8.html#d5e13622 在Jav…

Spring主要用到两种设计模式

Spring主要用到两种设计模式 1、工厂模式 Spring容器就是实例化和管理全部Bean的工厂。 工厂模式可以将Java对象的调用者从被调用者的实现逻辑中分离出来。 调用者只关心被调用者必须满足的某种规则&#xff0c;这里的规则我们可以看做是接口&#xff0c;而不必关心实例的具体实…

意外收获字节跳动内部资料,已开源

前言 每年的3、4月份是各大企业为明年拓展业务大量吸纳人才的关键时期&#xff0c;招聘需求集中、空缺岗位多&#xff0c;用人单位也习惯在初秋进行大规模招聘。 金九银十&#xff0c;招聘旺季&#xff0c;也是一个求职旺季。 不打无准备的仗&#xff0c;在这种关键时期&…

OpenJDK研究

这里以32位Windows 7为例 安装必须的软件 JDK1.8CygwinMicrosoft Visual Studio 2010 (请下载英文版) 这里就不介绍怎么安装这些软件了&#xff0c;假设安装后的目录名分别是: (请根据你的实际情况调整这些目录名&#xff09; D:\JavaSE1.8 D:\Cygwin D:\VS2010 增加环境变…

猎头文章(一)

&#xff08;一&#xff09;从来没有想过自己会加入这一行&#xff0c; 从开始自己喜欢的专业通讯&#xff0c; 到后来喜欢的管理&#xff0c;&#xff0c;幻想过是专业高手&#xff0c; 幻想过管理专家&#xff0c; 却从来没有想过进入这一行&#xff0c;但 真的在我刚刚离开校…

成功跳槽百度工资从15K涨到28K,威力加强版

前言 看到一篇文章中提到“最近几年国内的初级Android程序员已经很多了&#xff0c;但是中高级的Android技术人才仍然稀缺“&#xff0c;这的确不假&#xff0c;从我在百度所进行的一些面试来看&#xff0c;找一个适合的高级Android工程师的确不容易&#xff0c;一般需要进行大…

Redis下载及安装(windows版)

下载地址 1、Github下载地址&#xff1a;https://github.com/MicrosoftArchive/redis/releases 2、百度网盘下载地址 https://pan.baidu.com/s/1z1_OdNVbtgyEjiktqgB83g 密码&#xff1a;kdfq 安装过程 1.首先先把下载的压缩包解压到一个文件夹中 2.打开cmd指令窗口 3.输入你刚…

成功跳槽百度工资从15K涨到28K,跳槽薪资翻倍

前言 这篇文章主要是分享今年上半年的面试心得&#xff0c;现已就职于某大厂有三个月了&#xff0c;近期有很多公司均已启动秋招&#xff0c;也祝大家在 2020 的下半年面试顺利&#xff0c;获得理想的offer&#xff01; 之前找工作的那段时间感想颇多&#xff0c;总结一点面试…

分布式锁RedLock的java实现Redisson

1. 概述Redisson是一个在Redis的基础上实现的Java驻内存数据网格&#xff08;In-Memory Data Grid&#xff09;。它不仅提供了一系列的分布式的Java常用对象&#xff0c;还提供了许多分布式服务。其中包括(BitSet, Set, Multimap, SortedSet, Map, List, Queue, BlockingQueue,…

我三年开发经验,从字节跳动抖音离职后,看看这篇文章吧!

最新BAT大厂面试者整理的Android面试题目&#xff01; 近期根据网友分享大厂面试题目&#xff0c;今天我将网友面试的BAT等大厂Android面试题目整理出来&#xff0c;希望能够帮助大家&#xff01; 珍藏版&#xff08;1&#xff09;——高级 UI 晋升 第一节、触摸事件分发机制…

arthas命令redefine实现Java热更新

Arthas非常重要的命令redefine&#xff0c;主要作用是加载外部的.class文件&#xff0c;用来替换JVM已经加载的类&#xff0c;总结起来就是实现了Java的热更新。 redefine在一下几种情况中会失败&#xff1a;1、增加了field&#xff1b;2、增加了method&#xff1b;3、替换正在…

安装 ZendServer-CE 可能遇到的问题

安装后,打开http://localhost:10081/ZendServer 出现如下页面. Internal Server Error The server encountered an internal error or misconfiguration and was unable to complete your request. Please contact the server administrator, adminexample.com and inform them…

Elk7.2 Docker

正如官方所说的那样 https://www.elastic.co/guide/en/elasticsearch/reference/current/vm-max-map-count.html&#xff0c;Elasticsearch默认使用mmapfs目录来存储索引。操作系统默认的mmap计数太低可能导致内存不足&#xff0c;我们可以使用下面这条命令来增加内存 为了防止…

我了解到的面试的一些小内幕!附面试题答案

背景 首先我是个菜鸡&#xff0c;工资也低的一笔。 刚毕业时候在一家国企上班干 app 开发&#xff0c;干了快两年的时候&#xff0c;跳槽到了一家伪大厂干安全。投了不少简历都没有回音&#xff0c;只有这加伪大厂要我就来了。当时说好了会接触一些底层的东西&#xff0c;然而…