Копировать ссылку на страницу Перейти в предыдущий раздел Перейти в следующий раздел

В системе Directum можно использовать ISBL-событие для управления связями документов с записями справочников и другими документами. Для этого:

1.В справочнике Настройки связей компонент создайте новую запись и заполните поля.
2.Нажмите на кнопку Событие:

Щелкните для увеличения изображения

3.В открывшемся редакторе укажите вычисления.

При этом доступны следующие системные переменные:

Переменная

Тип

Описание

LinkingActionType

TLinkingActionType

Тип действия связывания

SourceObjectInfo

IObjectInfo

Информация о первом объекте

DestObjectInfo

IObjectInfo

Информация о втором объекте

Щелкните для отображения или скрытия подробной информации Пример

Постановка задачи

Необходимо запретить удаление связей с договорным документом, если договор подписан обеими сторонами или расторгнут.

Программный код

 

  IsRaiseExcept = FALSE

 

  // При разрыве связи проверить, есть ли среди объектов документ

  // с ТКЭД Договорной документ и стадией ЖЦ Действующий, Расторгнут, Прекращен

  // или Исполнен. Если документ не найден, удалить связь.

  if LinkingActionType = latDelete

    IsSourceContract = SourceObjectInfo.ComponentType = ctEDocument and

      SourceObjectInfo.ComponentName == "ДГД"

    IsDestContract = DestObjectInfo.ComponentType = ctEDocument and

      DestObjectInfo.ComponentName == "ДГД"

    LifeCycleStages = 'Active|Dissolved|Stopped|Completed'

    if IsSourceContract

      Doc = EDocuments.GetObjectByID(SourceObjectInfo.ID)

      DocLifeCycleStageName = Doc.LifeCycleStage.Name

 

      // Если первый объект соответствует критериям, сгенерировать исключение.

      if FindSubString(DocLifeCycleStageNameLifeCycleStages; '|') > 0

        IsRaiseExcept = TRUE

      endif

      Doc = nil

    endif

 

    // Если второй объект соответствует критериям, сгенерировать исключение.

    if IsDestContract and not IsRaiseExcept

      Doc = EDocuments.GetObjectByID(DestObjectInfo.ID)

      DocLifeCycleStageName = Doc.LifeCycleStage.Name

      if FindSubString(DocLifeCycleStageNameLifeCycleStages; '|') > 0

        IsRaiseExcept = TRUE

      endif

      Doc = nil

    endif

  endif

  if IsRaiseExcept

    Raise(CreateException('EDIRInvalidUserAction';

          LoadString('DIRBA60E07B_4490_4D22_8251_C410B72D313C''CM'); ecWarning))

  endif

© Компания Directum, 2020 Сообщество пользователей Directum
.navbar > a:hover { background: #FFD73B; }