Как настроить работу редактора отметок
<< Click to Display Table of Contents >> Разработка > Примеры разработки > Документы Как настроить работу редактора отметок |
![]() ![]() |
В среде разработки можно адаптировать работу с редактором отметок под потребности компании, например:
•добавить возможность использовать в редакторе отметку, созданную в среде разработки;
•запретить открытие редактора для определенного типа документа;
•изменить логику проверки документа перед открытием редактора.
ВАЖНО. Редактор отметок не поддерживает работу со следующими отметками: с поворотом, постраничными и у которых в записи справочника «Виды отметок» установлен флажок На пустой странице. Для типов документов, в которых они используются, необходимо запретить открытие редактора.
Рекомендуется тестировать работу отметок в редакторе на всех поддерживаемых браузерах.
Отметки, созданные в среде разработки, можно использовать в редакторе отметок. Для этого перекройте разделяемую функцию GetAvailableMarkKindsSids() типа документа «Официальный документ» (OfficialDocument).
Пример для отметки об оплате входящих счетов:
public override List<string> GetAvailableMarkKindsSids()
{
var marksKinds = base.GetAvailableMarkKindsSids();
if (_obj.LifeCycleState == Sungero.Contracts.IncomingInvoice.LifeCycleState.Paid)
marksKinds.Add(Sungero.Examples.Constants.Contracts.IncomingInvoice.PaymentMarkKindSid);
return marksKinds;
}
Если работа с отметкой не поддерживается в редакторе, то необходимо запретить его открытие для типа документа, в который добавляется отметка. Для этого добавьте разделяемую функцию AllowedToAddMarksManually() типа документа «Официальный документ» (OfficialDocument):
public override bool AllowedToAddMarksManually()
{
return false;
}
Изменение логики проверки перед открытием редактора
Перед работой в редакторе необходимо проверить, выполнены ли условия для его открытия. Например, чтобы добавить во входящий счет отметку об оплате, необходимо убедиться, что у него в поле Состояние указано значение Оплачен.
Чтобы изменить логику проверки, переопределите серверную функцию ValidateMarksDataBeforeOpenMarkEditor() типа документа «Официальный документ» (OfficialDocument).
Пример для отметки об оплате входящих счетов:
/// <summary>
/// Перед открытием редактора отметок проверить свойства документа, необходимые для добавления отметок.
/// </summary>
/// <param name="versionId">ИД версии документа.</param>
/// <returns>Текст ошибки, если она есть. Иначе пустая строка.</returns>
[Remote]
public override string ValidateMarksDataBeforeOpenMarkEditor(long versionId)
{
var signature = Docflow.PublicFunctions.OfficialDocument.GetSignatureForMark(_obj, _obj.LastVersion.Id);
var isPaid = _obj.LifeCycleState == LifeCycleState.Paid;
if (signature == null && !isPaid)
return IncomingInvoices.Resources.DocumentShouldBeApprovedOrPaidToOpenMarkEditor;
if (signature != null)
{
var separator = ". ";
var validationErrors = Docflow.PublicFunctions.Module.GetSignatureValidationErrorsAsString(signature, separator);
if (!string.IsNullOrEmpty(validationErrors))
{
return Docflow.OfficialDocuments.Resources.SignatureNotValidErrorForMarkEditorFormat(validationErrors);
}
}
return string.Empty;
}
© Компания Directum, 2025 |