Обработка исходящего Договора с физ. лицом В веб дизайнере ELMA4 (в ELMA3 обычном дизайнере) реализуем Глобальный модуль, где определяем нужную точку расширения, например, SendableRNMOutContractInd . Реализация: using System; using EleWise.ELMA.ComponentModel; using EleWise.ELMA.ConfigurationModel; using EleWise.ELMA.Documents.Models; using EleWise.ELMA.CRM.Models; using EleWise.ELMA.Model.Services; using EleWise.ELMA.Services; using ITino.ELMA.Documents.Diadoc.Components; using ITino.ELMA.Documents.Diadoc.Exceptions; using ITino.ELMA.Documents.Diadoc.Managers; using ITino.ELMA.Documents.Diadoc.Models; using ITino.ELMA.Documents.Diadoc.Services; namespace HMS.Configuration { /// [Component] public class SendableRNMOutContractInd : SendableDiadocDocument { /// public override bool Enabled { // Точка расширения включена и обрабатывается get { return true; } } /// public override DiadocDocumentType DocumentType { // Какой тип документа Диадока обрабатываем get { return DiadocDocumentType.Contract; } } /// public override Guid TypeUid { // К какому типу документа в ELMA привязываем get { return InterfaceActivator.UID(); } } public override IContractor GetSender(IDocument doc) { // Получить отправителя документа var contract = doc as RNMOutContractInd; return contract != null ? contract.Contractor : null; } /// public override EODiadocCanSendStatus CanSendDocument(IDocument doc) { // Проверить, можно ли отправить документ в Диадок if (doc == null) return EODiadocCanSendStatus.DocIsNull; var service = Locator.GetServiceNotNull(); var contract = doc as RNMOutContractInd; if (contract != null) return service.CanSendDocument(contract.Contractor, contract.Executor); return base.CanSendDocument(doc); } /// public override ICODiadocDocument Send(IDocument doc, Guid? departmentId, Guid? userId, string comment = null) { // Отправить документв Диадок на подписание нами var contract = doc as RNMOutContractInd; if (contract == null) throw new DiadocException("Договор не может быть null"); var edata = DiadocDocumentManager.Instance.CheckContractors(contract.Contractor, contract.Executor, null, null); var result = edata.Service.SendContract(edata.FormBoxId, edata.ToBoxId, doc, contract.Number, contract.ContractDate.Value, "ГПХ/Физ.лицо/Самозанятый", null, departmentId, userId, comment); return DiadocDocumentManager.Instance.SendDocHistory(result, doc, contract.Contractor, contract.Executor, contract.Number, contract.ContractDate); } } } Атрибут [Component] обязателен.