Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
APopov
Зарегистрирован: 19.06.2006 Сообщения: 347 Откуда: Самара
|
Добавлено: Пт 13 Ноя 2009 11:52 Заголовок сообщения: Организация разграничения доступа исходя из данных объекта |
|
|
Здраствуйте!
У нас возникла задача о запрещении редактирования некоторых свойств класса исходя из некоторой програмной логики
(есть ли у данного объекта дочерние объекты которые "принадлежат" текущему пользователю, есть ли родительские объекты, которые "принадлежат" начальнику текущего пользователя; "принадлежат" значит некое поле имеет ИД объекта "Сотрудник", которому сопоставлен доменный аккаунт )
Системой разграничения прав, присутствующей в Инмете, мы не смогли реализовать такую логику.
Пытаемся делать программно.
Идея такова - на форме, при показе, выполняется скрипт, который выясняет : "таки можно или нет?!" и пытается у PropertyEditor-ов установить Enabled. Но Получаем такую ошибку
---------------------------
Windows Internet Explorer
---------------------------
Ошибка: Устанавливать редактируемость свойства можно только в автосозданной форме.
[SetPropertyEnabled]
---------------------------
ОК
---------------------------
Да форма редактирования не автосозаваемая, а кустомизированная HTML-ная.
Как нам лучше поступить в данной ситуации? и почему таки существует такой запрет на использования простого казалось бы свойства Enabled? _________________ ОАО "Самара-Информспутник",
инженер-программист Попов Артем |
|
Вернуться к началу |
|
 |
BSoft
Зарегистрирован: 18.11.2009 Сообщения: 2
|
Добавлено: Ср 18 Ноя 2009 10:28 Заголовок сообщения: |
|
|
Прошу прощения за оффтоп. А как вы доступаетесь до PropertyEditor-ов? Просто тоже пытаюсь решить такую задачу. |
|
Вернуться к началу |
|
 |
Михаил Власов

Зарегистрирован: 14.02.2005 Сообщения: 580 Откуда: ИНТЕГРО
|
Добавлено: Ср 18 Ноя 2009 16:24 Заголовок сообщения: |
|
|
В следующей версии добавим поддержку свойства "Enabled" для custom-форм.
Получить редактор свойства можно через DetailsBox:
Код: |
...
MsgBox DetailsBox.PropEditors("LastName").Enabled
...
|
_________________ С уважением, Михаил Власов. |
|
Вернуться к началу |
|
 |
APopov
Зарегистрирован: 19.06.2006 Сообщения: 347 Откуда: Самара
|
Добавлено: Ср 25 Ноя 2009 13:35 Заголовок сообщения: |
|
|
Цитата: | В следующей версии добавим поддержку свойства "Enabled" для custom-форм.
|
хорошо )
а как быть в текущей ситуации?
мы пока сделали следующее : на каждое свойство повесили событие OnChange, в котором происходит проверка, может ли пользователь его менять и если не может возвращает значение и устанавливает ошибку.
Код: | function CanChange_ExecutorPropGR2(byref DetailsBox, PropName)
CanChange_ExecutorPropGR2 = true
with DetailsBox.PropEditors(PropName)
if .IsModified then
if not DetailsBox.Variables("canEditGR2") then
.CurValue = .OriginalValue
OnError DetailsBox.Variables("denyReason2")
CanChange_ExecutorPropGR2 = false
end if
end if
End With
end function |
Вопрос: Это единственный способ решения данной ситуации? _________________ ОАО "Самара-Информспутник",
инженер-программист Попов Артем |
|
Вернуться к началу |
|
 |
Михаил Власов

Зарегистрирован: 14.02.2005 Сообщения: 580 Откуда: ИНТЕГРО
|
Добавлено: Чт 26 Ноя 2009 12:06 Заголовок сообщения: |
|
|
Вот так ИнМета устанавливает признак Enabled:
Код: | sub SetPropertyEnabled(byval aDetailsBox, byval aPropName, byval anEnabled)
dim anHtmlUtils, anElem
set anHtmlUtils = CreateObject("InMetaUtils.InMetaHtmlUtils")
if aDetailsBox.IsAutoCreatedForm then
set anElem = anHtmlUtils.NeedChildElem(aDetailsBox.FormElem, aPropName & "WholeElement")
else
set anElem = anHtmlUtils.NeedChildElem(aDetailsBox.FormElem, aPropName & "Element")
end if
anHtmlUtils.SetElemDisabled anElem, not anEnabled
end sub |
В текущих версиях можно применять этот подход. _________________ С уважением, Михаил Власов. |
|
Вернуться к началу |
|
 |
|