MSCRM二次开发实现自动编号功能
2010-08-02 15:32
260 查看
功能描述:对客户实体实现自动编号功能,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注册画面:
Techsun(天正计算机服务限公司 techsun.com)致力微软商务解决方案及电子商务的研究与开发。Techsun作为微软CRM金牌认证合作伙伴,并且拥有中国区域2位微软CRM MVP(微软最有价值专家),代表了我们在微软CRM技术应用的深度及对客户提供方案实施能力的承诺。
业务咨询或服务建议,请拔打全国免费服务热线:800-830-9740。
原 理:在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注册画面:
Techsun(天正计算机服务限公司 techsun.com)致力微软商务解决方案及电子商务的研究与开发。Techsun作为微软CRM金牌认证合作伙伴,并且拥有中国区域2位微软CRM MVP(微软最有价值专家),代表了我们在微软CRM技术应用的深度及对客户提供方案实施能力的承诺。
业务咨询或服务建议,请拔打全国免费服务热线:800-830-9740。
相关文章推荐
- MSCRM二次开发实现自动编号功能
- Asp.net 2.0 自定义控件开发[实现自动计算功能(AutoComputeControl)][示例代码下载]
- Android开发(14)-- 多线程中实现利用自定义控件绘制小球并完成小球自动下落的功能
- Asp.net 2.0 自定义控件开发[实现自动计算功能(AutoComputeControl)][示例代码下载]
- Asp.net 2.0 自定义控件开发[实现自动计算功能(AutoComputeControl)][示例代码下载]
- Asp.net 2.0 自定义控件开发[实现自动计算功能(AutoComputeControl)][示例代码下载]
- unity3d开发android小游戏版本版本更新后自动安装功能的实现
- EhLib实现自动编号功能
- 通过 spring 容器内建的 profile 功能实现开发环境、测试环境、生产环境配置自动切换
- android开发游记:APP自动更新功能的快速集成和实现方法讲解
- Asp.net 2.0 自定义控件开发[实现自动计算功能(AutoComputeControl)][示例代码下载]
- Asp.net 2.0 自定义控件开发[实现自动计算功能(AutoComputeControl)][示例代码下载续][重点推荐控件]
- 通过 spring 容器内建的 profile 功能实现开发环境、测试环境、生产环境配置自动切换
- 通过 spring 容器内建的 profile 功能实现开发环境、测试环境、生产环境配置自动切换
- 在Oracle Form中,如何实现自动编号(行号)的功能
- 通过 spring 容器内建的 profile 功能实现开发环境、测试环境、生产环境配置自动切换
- Android开发:实现APP自动填写注册验证码功能
- Asp.net 2.0 自定义控件开发[实现自动计算功能(AutoComputeControl)][示例代码下载]
- Asp.net 2.0 自定义控件开发[实现自动计算功能(AutoComputeControl)][示例代码下载]
- 通过 spring 容器内建的 profile 功能实现开发环境、测试环境、生产环境配置自动切换