Механизм связывания документов с записями справочников активно используется в системе, но у этого механизма есть одна маленькая особенность - связывание не контролируется правами. Другими словами, пользователь с правами на просмотр справочника может удалять связи записей этого справочника с эл. документами. Обойти эту особенность можно на прикладном уровне.
Алгоритм работы усовершенствованного механизма следующий:
1. При открытии справочника определяется возможность редактирования записей текущим пользователем.
2. Если пользователь обладает правами только на чтение записей, то действие "Связанные документы" блокируется:
Остается единственный способ для просмотра связанных документов - это кнопка на карточке записи.
3. При нажатии на кнопку на карточке снова проверяются права пользователя. Если пользователь обладает правами только на чтение записей, то связанные документы отображаются в окне, аналогичном тому, которое получается при обычном поиске документов. Удалить ссылку
в таком окне невозможно:
Для внесения изменений в вашу систему выполните следующее (на примере справочника "Договоры"):
1. Запустите "Компоненты \ Утилиты разработчика \ Типы справочников".
2. Откройте карточку записи с заголовком "Договоры".
3. Перейдите на закладку "Действия".
4. Откройте вычисления записи с заголовком "&Эл. документы". Для этого установите курсор в колонке "Вычисление" и нажмите на кнопку "...".
5. В открывшемся редакторе полностью замените текущий текст на этот:
// Сохранить код записи в контекст модуля
ContractCode = Object.Requisites(SYSREQ_CODE).AsString
Application.DepartmentContext = ContractCode
// Определить возможность редактирования записей справочника пользователем
CanUpdate = Object.AccessInfo.CanUpdate
if CanUpdate
// Текущий пользователь обладает правами на изменение записи справочника
// Запустить стандартный механизм отображения связанных документов
BoundEDocumentsSearchDescr = Searches.Load("BOUND_EDOCUMENT_SEARCH")
BoundEDocumentsSearchDescr.InitializeSearch(Object.Info)
Searches.Show(BoundEDocumentsSearchDescr)
else
// Текущий пользователь не обладает правами на изменение записи справочника
// Запустить альтернативный вариант отображения связанных документов
// Временно разблокировать действие "Связанные документы" (необходимо для корректной работы механизма)
Object.View.Forms(FORMLIST_NAME).Actions.FindAction("LinkedEDocumentsAction").Enabled = TRUE
// Выполнить поиск связанных документов
BoundEDocumentsSearchDescr = Searches.Load("BOUND_EDOCUMENT_SEARCH")
BoundEDocumentsSearchDescr.InitializeSearch(Object.Info)
// Сохранить результаты поиска в переменную
Contents = Searches.Execute(BoundEDocumentsSearchDescr)
// Заблокировать действие "Связанные документы"
Object.View.Forms(FORMLIST_NAME).Actions.FindAction("LinkedEDocumentsAction").Enabled = FALSE
// Создать окно проводника и передать ему результаты поиска
Explorer = Servicefactory.GetExplorer(False)
Explorer.ListContents = Contents
// Навести красоту
Explorer.ShowList = True
Explorer.ShowMainMenu = False
Explorer.ShowToolbar = False
Explorer.ShowTree = isHide
Explorer.Title = 'Запись справочника "' & Object.Наименование & '" связана с электронными документами'
Explorer.Show
endif
6. Перейти в события справочника в раздел "Набор данных \ Открытия".
7. В открывшемся редакторе добавить следующие вычисления:
View = Sender.Component.View
if not VarIsClear(View)
CanUpdate = Object.AccessInfo.CanUpdate
if not CanUpdate
// Текущий пользователь не обладает правами на изменение записи справочника
// Заблокировать действие "Связанные документы"
View.Forms(FORMLIST_NAME).Actions.FindAction("LinkedEDocumentsAction").Enabled = FALSE
endif
endif
8. Сохраните все изменения.
В Версии 4,7 это не исправлено? можно ли изменять?
В Версии 4,7 это не исправлено? можно ли изменять?
В 4.7 изменений на этот счет нет.
т.е. можно воспользоваться доработочкой :) бум пробовать
Авторизуйтесь, чтобы написать комментарий