微软CRM百科

广告

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

2012-03-23 15:27:42 本文行家:秦高鹏

功能描述:对客户实体实现自动编号功能,1、2、3、4......自动编号存放于属性accountnumber.原理:在mscrm服务器用一个文本文件存放当前最新编号,每当创建客户记录时在PreCreate事件接口做以下步骤:1、锁定文本文件(避免其他人同时读取造成编号重复)2、获取当前最新编号3、当前最新编号+1更新到文本文件4、解除锁定文本文件5、使用当前最新编号+1作为当前客户记录的编号实现步

 功能描述:对客户实体实现自动编号功能,1、2、3、4...... 自动编号存放于属性accountnumber.
原  理:在mscrm服务器用一个文本文件存放当前最新编号,每当创建客户记录时在PreCreate事件接口做以下步骤:
1、锁定文本文件(避免其他人同时读取造成编号重复)
2、获取当前最新编号
3、当前最新编号+1更新到文本文件
4、解除锁定文本文件
5、使用当前最新编号+1作为当前客户记录的编号
实现步骤:
1、客户化把Account实体属性accountnumber设置为只读。
2、在<installdir>Program FilesMicrosoft CRMserverinssembly目录下创建一个文本文件,命名为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
{
publicclass PreCreateAccount : IPlugin
{
#region IPlugin Members

publicvoid 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() +@"ServerinssemblyAccountAutoNumber.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
{
thrownew InvalidPluginExecutionException("自动编号只能由系统产生!");
}
}
}
}

#endregion
}
}
4、注册PlugIn插件,Plugin注册画面:
2008-08-11-2.jpg

分享:
标签: 微软CRm CRM4.0 二次开发 自动编号功能 | 收藏
参考资料:
[1] 微软CRM Batistuta Cai's Blog
百科的文章(含所附图片)系由网友上传,如果涉嫌侵权,请与客服联系,我们将按照法律之相关规定及时进行处理。如需转载,请注明来源于www.baike.com