Точки расширения Реализация точек расширения для обработки входящих и исходящих документов для Диадока ReceivableDiadocDocument Данная точка расширения позволяет настроить поведение обработчика входящих из Диадока документов. Наследование необходимо делать именно от класса ReceivableDiadocDocument, а не от интерфейса IReceivableDiadocDocument. namespace ITino.ELMA.Documents.Diadoc.Components /// /// Точка расширения для документов, которые можно отправить в Диадок /// public class ReceivableDiadocDocument : IReceivableDiadocDocument { /// /// Обработчик включен /// public virtual bool Enabled { get; } /// /// Тип документа Диадок /// public virtual DiadocDocumentType DocumentType { get; } /// /// Тип документа в системе /// public virtual Guid TypeUid { get; } /// /// Типы документа в системе /// public virtual IEnumerable TypeUids { get; } /// /// Обработать кастомные поля (если есть) /// /// Документ Диадока (справочник в ELMA) /// Кастомные поля Диадока public virtual void ProcessCustomData(ICODiadocDocument doc, IEnumerable items); } Пример реализации: Обработка входящего Договора SendableDiadocDocument Данная точка расширения позволяет настроить поведение обработчика исходящих в Диадок документов. Наследование необходимо делать именно от класса SendableDiadocDocument, а не от интерфейса ISendableDiadocDocument. namespace ITino.ELMA.Documents.Diadoc.Components /// /// Точка расширения для документов, которые можно отправить в Диадок /// public class SendableDiadocDocument : ISendableDiadocDocument { /// /// Обработчик включен /// public virtual bool Enabled { get; } /// /// Тип документа Диадок /// public virtual DiadocDocumentType DocumentType { get; } /// /// Тип документа в системе /// public virtual Guid TypeUid { get; } /// /// Типы документа в системе /// public virtual IEnumerable TypeUids { get; } /// /// Можно ли отправить документ /// /// Документ public virtual EODiadocCanSendStatus CanSendDocument(IDocument doc); /// /// Получить отправителя (наша организация) /// /// Документ public virtual IContractor GetSender(IDocument doc); /// /// Отправить документ в Диадок в Головное подразделение /// /// Документ /// Комментарий (опционально) public virtual ICODiadocDocument Send(IDocument doc, string comment = null); /// /// Отправить документ в Диадок в подразделении любому с правом подписи /// /// Документ /// Подразделение в Диадоке /// Комментарий (опционально) public virtual ICODiadocDocument Send(IDocument doc, Guid? departmentId, string comment = null); /// /// Отправить документ в Диадок /// /// Документ /// Подразделение в Диадоке /// Сотрудник в Диадоке /// Комментарий (опционально) public virtual ICODiadocDocument Send(IDocument doc, Guid? departmentId, Guid? userId, string comment = null); } Пример реализации: Обработка исходящего Договора с физ. лицом