В системе Directum можно использовать ISBL-событие для управления связями документов с записями справочников и другими документами. Для этого:
1. | В справочнике Настройки связей компонент создайте новую запись и заполните поля. |
2. | Нажмите на кнопку Событие: |
3. | В открывшемся редакторе укажите вычисления. |
При этом доступны следующие системные переменные:
Переменная |
Тип |
Описание |
---|---|---|
LinkingActionType |
Тип действия связывания |
|
SourceObjectInfo |
Информация о первом объекте |
|
DestObjectInfo |
Информация о втором объекте |
Постановка задачи Необходимо запретить удаление связей с договорным документом, если договор подписан обеими сторонами или расторгнут. Программный код
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(DocLifeCycleStageName; LifeCycleStages; '|') > 0 IsRaiseExcept = TRUE endif Doc = nil endif
// Если второй объект соответствует критериям, сгенерировать исключение. if IsDestContract and not IsRaiseExcept Doc = EDocuments.GetObjectByID(DestObjectInfo.ID) DocLifeCycleStageName = Doc.LifeCycleStage.Name if FindSubString(DocLifeCycleStageName; LifeCycleStages; '|') > 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 |