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

Clarion, Clarion 7

Модератор: Дед Пахом

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Ответить
optron
Активист
Сообщения: 106
Зарегистрирован: 29 Март 2006, 9:53
Откуда: Саранск
Контактная информация:

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

Сообщение optron » 23 Ноябрь 2018, 10:26

С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-а
Что это может быть?
Заранее спасибо.

optron
Активист
Сообщения: 106
Зарегистрирован: 29 Март 2006, 9:53
Откуда: Саранск
Контактная информация:

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

Сообщение optron » 23 Ноябрь 2018, 11:28

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

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

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

Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 3745
Зарегистрирован: 07 Июль 2005, 9:19
Откуда: г. Ростов-на-Дону

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

Сообщение Игорь Столяров » 23 Ноябрь 2018, 11:37

optron писал(а):
23 Ноябрь 2018, 11:28
кнопку не дизейблит.
Окно в момент выполнения Disable(?OK) открыто ?
«V» значит Вендетта !

kreator
Ветеран
Сообщения: 3014
Зарегистрирован: 28 Май 2009, 14:54
Откуда: Москва

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

Сообщение kreator » 23 Ноябрь 2018, 11:41

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

optron
Активист
Сообщения: 106
Зарегистрирован: 29 Март 2006, 9:53
Откуда: Саранск
Контактная информация:

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

Сообщение optron » 23 Ноябрь 2018, 12:42

Игорь Столяров писал(а):
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]

kreator
Ветеран
Сообщения: 3014
Зарегистрирован: 28 Май 2009, 14:54
Откуда: Москва

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

Сообщение kreator » 23 Ноябрь 2018, 14:02

Скорее всего, у Вас в настройках стоит "?OK - None". Поставьте "?OK - Disable" и увидите ниже приведённого Вами текста (в том же самом методе Init) - "DISABLE(?OK)". Я всегда сам контролирую настройки "View Mode", не полагаюсь на стандартный механизм. И, по-моему, в новых версиях (в десятке и т.д.) с этим всё более-менее нормально. А в старых все контролы выставляются в "None" и непонятно зачем.
We are hard at work… for you. :)

Ответить