电脑桌面
添加蚂蚁七词文库到电脑桌面
安装后可以在桌面快捷访问

发送邮件操作.二开案例.按列表选中行加载收件人

来源:金蝶云社区作者:金蝶2024-09-236

发送邮件操作.二开案例.按列表选中行加载收件人

【场景】按列表选中行加载收件人 【案例】采购申请单,使用明细的建议供应商发送邮件; 发送时使用选中行的供应商邮箱作为收件人 ```csharp using Kingdee.BOS.Core; using Kingdee.BOS.Core.Bill; using Kingdee.BOS.Core.CommonFilter; using Kingdee.BOS.Core.DynamicForm; using Kingdee.BOS.Core.DynamicForm.PlugIn; using Kingdee.BOS.Core.DynamicForm.PlugIn.Args; using Kingdee.BOS.Core.Enums; using Kingdee.BOS.Core.List; using Kingdee.BOS.Core.Metadata; using Kingdee.BOS.Core.Metadata.EntityElement; using Kingdee.BOS.Core.Metadata.FieldElement; using Kingdee.BOS.Core.Metadata.FormElement; using Kingdee.BOS.Core.Metadata.Operation; using Kingdee.BOS.Core.SqlBuilder; using Kingdee.BOS.Orm.DataEntity; using Kingdee.BOS.ServiceHelper; using Kingdee.BOS.Util; using System; using System.Collections.Generic; using System.Linq; namespace DynamicFormPlugIn.Mail { [Kingdee.BOS.Util.HotUpdate] [System.ComponentModel.Description("发送邮件,针对列表,取选中行收件人逻辑")] public class MailFormPlugIn_Extend : AbstractDynamicFormPlugIn { /* * 针对特定单据,按照选中行数据加载默认收件人 */ /// <summary> /// 指定的业务对象标识 /// </summary> string specFormId = "PUR_Requisition"; private string[] selectIds; private SendMailParameter sendMailParam; public override void OnInitialize(InitializeEventArgs e) { if (this.View.ParentFormView == null) return; //是否特定表单 if (!string.Equals(this.View.ParentFormView.BillBusinessInfo.GetForm().Id, specFormId, StringComparison.OrdinalIgnoreCase)) return; selectIds = (e.Paramter.GetCustomParameter("Ids") as string[]) ?? new string[] { }; //加载操作的发送邮件参数 var formOp = this.View.ParentFormView.BillBusinessInfo.GetForm().GetOperation("SendMail"); if (formOp == null) return; sendMailParam = formOp.Parmeter as SendMailParameter; } public override void AfterBindData(EventArgs e) { if (sendMailParam == null) return; const string mailAddress = "FMailAddress"; Entity entity = this.View.BillBusinessInfo.GetEntity(mailAddress); DynamicObjectCollection entityObjs = this.View.Model.GetEntityDataObject(entity); //<0>清掉前面加载的收件人逻辑 entityObjs.Clear(); //<1>根据既定逻辑加载自己的收件人 AppendSupplierMail(entityObjs); this.View.UpdateView(mailAddress); } private void AppendSupplierMail(DynamicObjectCollection entityObjs) { List<int> pkIds = GetBillSupplierId(); var supplilerObjs = GetSupplierById(pkIds, 1); for (int i = 0; i < supplilerObjs.Count; ++i) { DynamicObject rowObj = new DynamicObject(entityObjs.DynamicCollectionItemPropertyType); entityObjs.Add(rowObj); rowObj["FSendeeType"] = "supplier"; rowObj["FSendeeKey"] = supplilerObjs[i]["FSUPPLIERID"]; rowObj["FSendee"] = supplilerObjs[i]["FName"]; rowObj["FUser"] = supplilerObjs[i]["FCONTACT"]; rowObj["FToAddress"] = supplilerObjs[i]["FEmail"]; this.View.StyleManager.SetEnabled("FUser", rowObj, "LockFieldService", true); this.View.StyleManager.SetEnabled("FToAddress", rowObj, "LockFieldService", false); } } /// <summary> /// 获取单据关联的供应商内码 /// </summary> /// <returns></returns> private List<int> GetBillSupplierId() { List<int> result = new List<int>(); IDynamicFormView parentView = this.View.ParentFormView; if (parentView == null) return result; BaseDataField loadField = parentView.BillBusinessInfo.GetField(sendMailParam.SupplierFieldKey) as BaseDataField; Form form = parentView.BillBusinessInfo.GetForm(); string billPk = form.PkFieldName; string baseField = loadField.FieldName; QueryBuilderParemeter queryParameter = new QueryBuilderParemeter(); queryParameter.RequiresDataPermission = true; queryParameter.FormId = parentView.BillBusinessInfo.GetForm().Id; queryParameter.SelectItems = SelectorItemInfo.CreateItems(string.Format("{0},{1}", billPk, baseField)); if (parentView is IBillView) { //针对单据界面的特殊处理 queryParameter.FilterClauseWihtKey = string.Format("{0} in ('{1}')", billPk, string.Join("','", this.selectIds)); } else if(parentView is IListView) { if(loadField.Entity.EntityType != (int)Entity.ENTRY_TYPE) { queryParameter.FilterClauseWihtKey = string.Format("{0} in ('{1}')", billPk, string.Join("','", this.selectIds)); } else { //针对列表界面的特殊处理,加载选中行的供应商 IListView listView = parentView as IListView; //获取对应的实体标识 List<FilterEntity> selectEntitnes = listView.Model.FilterParameter.SelectedEntities;

发送邮件操作.二开案例.按列表选中行加载收件人

【场景】按列表选中行加载收件人【案例】采购申请单,使用明细的建议供应商发送邮件;发送时使用选中行的供应商邮箱作为收件人```csharpusi...
点击下载文档文档为doc格式

声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。

已经是第一篇
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息
QQ群
  • 答案:my7c点击这里加入QQ群
支持邮箱
微信
  • 微信