Страница 1 из 1

Почему некорректно работает ViewRecord?

Добавлено: 23 Ноябрь 2018, 10:26
optron
С5.5 ABC
Доброго дня всем.
Давно уже работает программа, где реализованы права пользователя на Добавление/Изменение/Удаление записи следующим образом:
В Browse прописываем примерно следующее:
If Pr_ins=0 then SELF.InsertControl=0.
If Pr_ch=0 then SELF.ChangeControl=0.
If Pr_del=0 then SELF.DeleteControl=0.

Недавно обнаружен следующий глюк:
У пользователя запрет на изменение записи, права только на просмотр.
Таким образом, SELF.InsertControl=0, SELF.ChangeControl=0, SELF.DeleteControl=0.
Доступна только лишь кнопка "Просмотр", которая открывает Update в режиме ViewRecord.
При проверке VM.Reguest = ViewRecord=6

Но в итоге получается так, что "Вьюшка" позволяет пользователю отредактировать поля и, что самое неприятное, эти изменения сохраняются при выходе из Update-а
Что это может быть?
Заранее спасибо.

Почему некорректно работает ViewRecord?

Добавлено: 23 Ноябрь 2018, 11:28
optron
Еще трабл - в режиме ViewRecord стандартная кнопка ?ОК должна быть Disable. У меня же она доступна.
И конструкция:
if WM.Request = ViewRecord
Message('ViewRecord') !Для проверки
Disable(?OK)
END

кнопку не дизейблит.

Может где то есть настройка режима ViewRecord?

Почему некорректно работает ViewRecord?

Добавлено: 23 Ноябрь 2018, 11:37
Игорь Столяров
optron писал(а): 23 Ноябрь 2018, 11:28кнопку не дизейблит.
Окно в момент выполнения Disable(?OK) открыто ?

Почему некорректно работает ViewRecord?

Добавлено: 23 Ноябрь 2018, 11:41
kreator
optron писал(а): 23 Ноябрь 2018, 11:28 Может где то есть настройка режима ViewRecord?
Да. Для начала надо посмотреть эти настройки. В Extensions процедуры это называется "Configure View Only form mode". Это для десятки. Для C55 не помню. Возможно там и нет. В какой версии реквест ViewRecord введён?

Почему некорректно работает ViewRecord?

Добавлено: 23 Ноябрь 2018, 12:42
optron
Игорь Столяров писал(а): 23 Ноябрь 2018, 11:37
optron писал(а): 23 Ноябрь 2018, 11:28кнопку не дизейблит.
Окно в момент выполнения Disable(?OK) открыто ?
Так то разобрался...
Нашел где его всё таки дизейлбнуть, но непонятно почему не отрабатывает шаблонно. Есть же там:

Код: Выделить всё

  ! Open Files
  Relate:Opechat.Open
  Relate:OtvOpechat.Open
  Relate:Podr.Open
  Relate:SprDeb.Open
  Relate:SprEI.Open
  Relate:SprKom.Open
  SELF.FilesOpened = True
  SELF.Primary &= Relate:PrihMBP
  IF SELF.Request = ViewRecord
    SELF.InsertAction = Insert:None
    SELF.DeleteAction = Delete:None
    SELF.ChangeAction = 0
    SELF.CancelAction = Cancel:Cancel
    SELF.OkControl = 0
  ELSE
    SELF.OkControl = ?OK
    IF SELF.PrimeUpdate() THEN RETURN Level:Notify.
  END
  ! [Priority 7600]

Почему некорректно работает ViewRecord?

Добавлено: 23 Ноябрь 2018, 14:02
kreator
Скорее всего, у Вас в настройках стоит "?OK - None". Поставьте "?OK - Disable" и увидите ниже приведённого Вами текста (в том же самом методе Init) - "DISABLE(?OK)". Я всегда сам контролирую настройки "View Mode", не полагаюсь на стандартный механизм. И, по-моему, в новых версиях (в десятке и т.д.) с этим всё более-менее нормально. А в старых все контролы выставляются в "None" и непонятно зачем.