Копировать ссылку на страницу Перейти в предыдущий раздел Перейти в следующий раздел
проверяйте, чтобы при вычислениях на стороне сервера не выводились окна с сообщениями. В этом случае не рекомендуется использовать методы ShowMessage, MessageBox, InputDialog, а также формы объектов Object.Form и др. Иначе задача прекратится с соответствующим предупреждением или обработка кода прервется на время отбражения окна. Закрыть окно можно, если есть доступ к серверу;

Однако использование метода Raise допускается, если после открытия окна задача завершается. В этом случае текст исключения отражается в тексте задачи.

выносите в вычисления на стороне сервера проверку документа на блокировку другим пользователем. Если сгенерировать исключение с именем ESBEdmsComponentLockedError, то задача помещается в таблицу SBWorkflowProcessing в конец очереди до тех пор, пока блокировка не будет снята.

Если сгенерировать исключением с именем ESBRepeatProcessCurrentObject, то служба обработки событий запускает повторную обработку сценария-обработчика.

Примеры исключений, при генерации которых задача не прекращается с ошибкой, а повторно помещается в очередь обработки:

ESBNotEnoughtWorkTimeCalendarData – недостаточно данных в календаре рабочего времени для расчета относительной даты;
ESBEdmsComponentLockedError – объект или объекты, с которыми идет работа в вычислениях маршрута, заблокированы;
ESBInvalidUnlockParam – некорректный параметр разблокировки;
ECantSetRightsForEncodedEDocument – нельзя изменить права на зашифрованный документ;
ERuleFailed – ошибка, которая возникла вследствие взаимной блокировки на SQL-сервере;
EDatabaseError – общая ошибка работы с БД;
ESBRuleNotFound, ESBInvalidRule, ESBDICSAgentProxyWrapperException – ошибки при работе с DICS;
ESBWorkRuleExecutionError – ошибка применения пользовательского правила для задач и заданий. Правило отключается, а его владельцу отправляется уведомление. Текущая задача помещается в конец очереди.

Пример вычисления на сервере – проверка заблокированности документа без прекращения задачи и вывода сообщений:

 

// Проверить, заблокирован документ или нет.

// EDoc – IEDocument.

// Если документ заблокирован другим объектом.

if not EDoc.GlobalLock.LockedByThis

  Exception = CreateException("ESBEdmsComponentLockedError"; <сообщение>; ecWarning)

  Raise(Exception)

endif

на сервере меняйте стадии жизненного цикла документа, чтобы не загружать клиентскую часть этими вычислениями, а также, если для вида документа не разрешено менять стадии ЖЦ вручную:

 

EDoc  IEDocument

// Установить стадию ЖЦ документа в «Устаревшую».

EDoc.SetLifeCycleStageByName("Obsolete")

EDoc.Save

Для изменения стадии ЖЦ еще можно использовать функцию ТМИзменитьСтадиюЖЦВложений;

для работы с записью или группой записей справочника не открывайте целиком весь справочник, чтобы не перегружать сервер. Примеры справочников с большим количеством записей: Регистрационно-контрольные карточки, Поручения, Договоры;
используйте блок «Мониторинг» с типом Список зависимостей. Блок с типом Прочее периодически проверяет условия, заданные в вычислении мониторинга. Если использовать мониторинг типа Прочее, то при выполнении блока сильно нагружается сервер, например, если в блоке сравниваются тысячи задач.

Вместо блока «Мониторинг» можно использовать блок «Подзадача» с заданным свойством Ожидать завершения;

часть вычислений выносите из событий «Задача.Завершение выбора» или «Задача.Возможность старта» в блок типа «Сценарий», чтобы пользователь не ожидал их выполнения. Например, при назначении прав или при создании записей справочников;
используйте события для выполнения действий пользователя: «Задание.До запроса параметров», «Задание.После запроса параметров», «Задача.Начало выбора», «Задача.Завершение выбора», «Задача.Возможность старта»;
вычисление параметров выполняйте в событиях на стороне сервера для разгрузки клиентских частей;
используйте в разработке типовых маршрутов стандартные прикладные блоки. Если их возможностей недостаточно, только тогда разрабатывайте новые прикладные блоки;
если предполагается многократное использование прикладного блока и с разными входными параметрами, то вычисления разрабатывайте в свойства блока типового маршрута, а не в свойствах самого типового маршрута:
изменения в коде подхватываются сразу же после сохранения изменений в блоке;
изменения в блоке действительны сразу для всех задач, в схеме которых они есть.

Способы выполнения кода в событиях блока типового маршрута

1.Код написан в событиях типового маршрута.

Преимущества:

не требует создания новых или изменения существующих элементов разработки, кроме схемы типового маршрута;
удобен в использовании, если к прикладному блоку нужно добавить дополнительную функциональность и не изменять сам блок;

Недостатки:

исправление ошибок в коде возможно только при распространении схемы типового маршрута, что не всегда работает. Например, если изменился не только код, но и сама схема;
код индивидуален для типового маршрута и его редко можно использовать в других типовых маршрутах и блоках;
для распространения схем на многочисленное количество задач нужны большие ресурсы.
2.Код написан в событиях прикладного блока типового маршрута:

Преимущества:

легко настраивать для разных задач благодаря свойствам блока на схеме типового маршрута;
является элементом разработки, может входить в пакет разработки, в конвертер, проверяться на изменение при принятии разработки;
изменения блока подхватываются автоматически, даже если типовой маршрут еще не дошел до него;
можно использовать многократно.

Недостатки:

универсальный блок сложно настраивать, а простой приводит к неоправданно большому количеству блоков;
даже при распространении схемы типового маршрута нет возможности изменения событий блоков, по которым уже началась работа в маршруте, например, создались задания;
если требуется поддержка версионности типовых маршрутов, чтобы при изменении блока не ломались уже стартованные задач, нужно предусматривать работу блока со старыми данными либо делать для новой версии типового маршрута новую копию блока;
3.Код написан в функции, которая вызывается в событии блока на схеме типового маршрута.

Преимущества:

можно использовать многократно;
можно изменить код в уже сформированном задании через событие на клиенте;
не требуется распространение схемы для изменения кода.

Недостатки:

создается большое количество функций по сравнению с количеством прикладных блоков;
сложная настройка, надо передавать параметры в функцию кодом на ISBL, а не настраивать блок графически.
© Компания DIRECTUM, 2018 Сообщество пользователей DIRECTUM
.navbar > a:hover { background: #FFD73B; }