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

Clarion, Clarion 7

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

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

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

Сообщение 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-а
Что это может быть?
Заранее спасибо.
optron
Активист
Сообщения: 114
Зарегистрирован: 29 Март 2006, 10:53
Откуда: Саранск
Контактная информация:

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

Сообщение optron »

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

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

Может где то есть настройка режима ViewRecord?
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7330
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

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

Сообщение Игорь Столяров »

optron писал(а): 23 Ноябрь 2018, 11:28кнопку не дизейблит.
Окно в момент выполнения Disable(?OK) открыто ?
За теми кто отстал - не возвращаться. (С) Кодекс
kreator
✯ Ветеран ✯
Сообщения: 4960
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 6 раз
Поблагодарили: 19 раз

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

Сообщение kreator »

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

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

Сообщение 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]
kreator
✯ Ветеран ✯
Сообщения: 4960
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 6 раз
Поблагодарили: 19 раз

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

Сообщение kreator »

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