当前位置:网站首页>Dynamics 365 开发协作最佳实践思考
Dynamics 365 开发协作最佳实践思考
2022-07-06 01:35:00 【zcy_wxy】
一、前台开发
1、首先要考虑把常用代码独立成一个公共js,然后在需要用到的时候引入。这样会更便于维护。
2、做请求聚合。如果一个页面中发请求次数太多,且不为异步,就会导致前台卡顿明显。所以为了减少请求次数,做请求聚合,把几次请求整合成一次请求,获取页面需要的数据。
常用的比如说:
锁定和释放窗体属性
/**
* 锁定或解锁属性
* @param {any} attributeName
*/
lockOrUnlockControlByAttributeName: function (attributeName,lock) {
let controls = Xrm.Page.getAttribute(attributeName).controls.getAll();
if (controls) {
for (con of controls) {
con.setDisabled(lock);
}
}
}
获取选项集字段名称
/*
* summary:前端获取选项集字段的名称
* author:
* createTime:
*/
getOptionName:function (context, attributeName, value) {
let val = value;
if (val == null || val == undefined) {
val = context.getAttribute(attributeName).getValue();
}
let attrArray = context.getControl(attributeName).getOptions().filter(t => t.value == val);
if (attrArray.length > 0) {
return attrArray[0].text;
}
return "";
}
判断用户是否为负责人
/*
* summary:判断用户是否为负责人
* author:
* createTime:
* returns:
*/
function currentUserIsOwner() {
let owner = Xrm.Page.getAttribute("ownerid");
if (owner) {
let ownerid = owner.getValue()[0].id;
return Xrm.Page.context.getUserId() == ownerid;
}
return false;
}
判断用户是否包含指定角色
/*
* summary:判断用户是否拥有某些角色
* author:
* createTime:
* returns:
*/
function currentUserContainRoles(roleNames) {
var roleNameArray = roleNames.split(',');
let userRoles = Xrm.Utility.getGlobalContext().userSettings.roles.getAll();
if (roleNameArray.length > 1) {
let nameSet = new Set();
for (let role of userRoles) {
nameSet.add(role.name);
}
for (let roleName of roleNameArray) {
if (nameSet.has(roleName)) {
return true;
}
}
return false;
}
for (var role of userRoles) {
if (role.name == roleNameArray[0]) {
return true;
}
}
return false;
}
等等。
二、插件开发
1、最好是一个实体建一个插件项目,这样既可以避免多人开发时的冲突,也能在解决方案发布时避免多发或者漏发内容。或者根据模块划分插件项目,一个插件项目中只包含单个模块所需的实体。
2、公共模块也最好提取出来,放在共享项目中。按dao、service、controller的分层概念来说,dao层和service层的公共的内容,都放在共享项目中。
边栏推荐
- Folio.ink 免费、快速、易用的图片分享工具
- WGet: command line download tool
- 干货!通过软硬件协同设计加速稀疏神经网络
- Kotlin basics 1
- 3D模型格式汇总
- 电气数据|IEEE118(含风能太阳能)
- Threedposetracker project resolution
- Alibaba-Canal使用详解(排坑版)_MySQL与ES数据同步
- 3D vision - 4 Getting started with gesture recognition - using mediapipe includes single frame and real time video
- Paddle框架:PaddleNLP概述【飞桨自然语言处理开发库】
猜你喜欢
Unity | 实现面部驱动的两种方式
You are using pip version 21.1.1; however, version 22.0.3 is available. You should consider upgradin
Folio.ink 免费、快速、易用的图片分享工具
Alibaba canal usage details (pit draining version)_ MySQL and ES data synchronization
UE4 unreal engine, editor basic application, usage skills (IV)
Blue Bridge Cup embedded stm32g431 - the real topic and code of the eighth provincial competition
【Flask】官方教程(Tutorial)-part1:项目布局、应用程序设置、定义和访问数据库
A Cooperative Approach to Particle Swarm Optimization
国家级非遗传承人高清旺《四大美人》皮影数字藏品惊艳亮相!
基于DVWA的文件上传漏洞测试
随机推荐
[机缘参悟-39]:鬼谷子-第五飞箝篇 - 警示之二:赞美的六种类型,谨防享受赞美快感如同鱼儿享受诱饵。
Basic operations of databases and tables ----- primary key constraints
Unreal browser plug-in
Unity | 实现面部驱动的两种方式
National intangible cultural heritage inheritor HD Wang's shadow digital collection of "Four Beauties" made an amazing debut!
leetcode刷题_验证回文字符串 Ⅱ
2022年广西自治区中职组“网络空间安全”赛题及赛题解析(超详细)
【全網最全】 |MySQL EXPLAIN 完全解讀
Who knows how to modify the data type accuracy of the columns in the database table of Damon
Test de vulnérabilité de téléchargement de fichiers basé sur dvwa
Poj2315 football games
leetcode刷题_平方数之和
General operation method of spot Silver
File upload vulnerability test based on DVWA
[understanding of opportunity-39]: Guiguzi - Chapter 5 flying clamp - warning 2: there are six types of praise. Be careful to enjoy praise as fish enjoy bait.
SPIR-V初窺
竞价推广流程
Hcip---ipv6 experiment
【全网最全】 |MySQL EXPLAIN 完全解读
UE4 unreal engine, editor basic application, usage skills (IV)