В событиях поисков «Удаление ссылки» и «Вставка ссылки» доступны следующие переменные:
Переменная |
Тип |
Описание |
---|---|---|
Dest |
Список удаляемых/вставляемых элементов |
|
Source |
ИД объекта, если для него был выполнен поиск связанных объектов ISearchForObjectDescription, иначе nil |
Используя переменные Dest и Source, реализовать действие «Связанные документы» в карточке записи справочника. Выполняется с помощью поиска связанных документов. В событии поиска OnPasteLinks через переменную Dest проверить, что будет вставлено, и запретить вставку документов с неподходящими типами карточек. В событии поиска OnCutLinks через переменную Source проверить права доступа к записи справочника. Если нет прав на изменение записи, то запретить удалять ссылки из списка связанных документов.
// Инициализировать поиск. SearchDesc = Searches.Load('BOUND_EDOCUMENT_SEARCH') SearchDesc.InitializeSearch(Object.Info)
// Сформировать событие на вставку ссылок. // Событие разрешает связывать с записью справочника только документы // с типом карточки ДГВ_ДОК. PasteLinksEventText = " AllowedCardTypeCode = 'ДГВ_ДОК' foreach Info in Dest if Info.ComponentType <> ctEDocument Exit('Связывать можно только документы.') endif if Info.CardType.Code <<>> AllowedCardTypeCode Exit(Format('Связывать можно только документы с типом карточки %s.'; ArrayOf(AllowedCardTypeCode))) endif endforeach"
// Код по проверке вставляемых ссылок добавить до стандартной части кода, // который связывает документ с записью справочника. // При неуспешной проверке документ не будет привязан к записи справочника. SearchDesc.OnPasteLinks = Format('%s%s%s'; ArrayOf(PasteLinksEventText; CR; SearchDesc.OnPasteLinks))
// Сформировать событие на удаление ссылок. Событие запрещает удалять // связанные документы, если у пользователя нет прав на изменение // записи справочника. CutLinksEventText = " SourceReferenceRecord = References.ReferenceFactory(Source.ComponentName).GetObjectByID(Source.ID) if not SourceReferenceRecord.AccessInfo.CanUpdate Exit('Недостаточно прав. Для удаления связанных документов нужны права на изменение справочника.') endif"
// Код по проверке прав на удаление ссылок добавить до стандартной части кода, // который разрывает связь документа с записью справочника. // При неуспешной проверке связь между документом и записью справочника не будет // разорвана. SearchDesc.OnCutLinks = Format('%s%s%s'; ArrayOf(CutLinksEventText; CR; SearchDesc.OnCutLinks))
// Отобразить список связанных документов. SearchDesc.Show(ssmBrowse; False) |
© Компания DIRECTUM, 2018 | Сообщество пользователей DIRECTUM |