Усовершенствованный механизм "Связанные документы"

9 4

Механизм связывания документов с записями справочников активно используется в системе, но у этого механизма есть одна маленькая особенность - связывание не контролируется правами. Другими словами, пользователь с правами на просмотр справочника может удалять связи записей этого справочника с эл. документами. Обойти эту особенность можно на прикладном уровне.

Алгоритм работы усовершенствованного механизма следующий:
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. Сохраните все изменения.

 

9
Авторизуйтесь, чтобы оценить материал.
1
Артем Пыхалов

В Версии 4,7 это не  исправлено?   можно ли изменять?

Артем Пыхалов

В Версии 4,7 это не  исправлено?   можно ли изменять?

Иван Середкин

В 4.7 изменений на этот счет нет.

Артем Пыхалов

т.е.  можно воспользоваться доработочкой  :) бум пробовать

Авторизуйтесь, чтобы написать комментарий