Имя: Пароль:
1C
 
Права "Изменение" и программное изменение на клиенте
0 Kateryne
 
08.01.15
19:32
Коллеги, добрый вечер!
Я раньше думала, что права на изменение тем и отличаются от прав на редактирование, что позволяют ЛЮБЫЕ программные изменения сущности.

К примеру, есть документ МойДокумент.
У него есть реквизит МоеПоле.
У роли пользователя есть все неинтерактивные права.

Есть следующий код (вызывается ПриОткрытии, на клиенте):

Объект.МоеПоле = "БлаБла";

Если у пользователя нет прав на редактирование документа, получаем ошибку доступа.
Если право на редактирование реквизита есть - ошибки нет.

Можете пояснить? Действительно ли программное изменение типа ДанныеФормыСтруктура на клиенте считается интерактивным редактированием объекта? Или тут где-то еще собака порылась...

ЗЫ: только не предлагайте перенести или исправить код :)
1 Defender aka LINN
 
08.01.15
19:43
(0) Изменение в форме - это интерактивное изменение?
Вот это поворот!
2 Dmitry1c
 
08.01.15
19:44
А где фото?
3 Kateryne
 
08.01.15
19:48
(1) Не, я то как раз и утверждаю, что это программное изменение.
Хорошо, допустим на клиенте просто так:
Объект.Поле = Что-то там;
нельзя, так как это ДанныеФормыСтруктура, а согласно синтакс-помощнику, такое свойство будет доступно только для чтения.

Это у меня бы уложилось в голове влегкую :)

Но ведь стоит дать полные права на документ - и ошибки нет.
Можете пояснить, почему?
4 Defender aka LINN
 
08.01.15
20:09
(3) "Не, я то как раз и утверждаю, что это программное изменение." - а я-то как раз над этим и стебусь
5 Kateryne
 
08.01.15
20:16
(4) Принято, ок. Т.е.вы хотите сказать, что действительно "интерактивно" = "на клиенте"? Независимо от того, делается ли это посредством кода в форме, или же посредством прямого изменения полей формы пользователем?

Честно говоря, если так, то для меня это неожиданность. Все же считала, что интерактивно - это только то изменение, которое напрямую вызывает обработчик поля в форме, а вся последующая цепочка вызовов на совести программиста. Ведь если в форме вызвать процедуру на сервере, то этот вызов уже не считается интерактивным, что логично. Так чем клиентский метод хуже :)

Но если так, понятно, буду знать.
6 Kateryne
 
08.01.15
20:23
Короче, если все действительно так и есть, то 1С, считаю, не совсем корректно назвала свои права.
Надо было делить их на "права на объект базы данных" и "права на изменение в интерфейсе". А второе уже может быть и программным, и интерактивным...
7 Reaper_1c
 
08.01.15
23:05
А теперь для тех, кто в танке:
Некорректно - это когда при открытии существующего объекта форма получает признак модифицированности.
Некорректно - это когда на клиенте изменение данных информационной базы происходит без ведома пользователя.

Если пользователь открыл форму объекта и содержимое объекта в форме стало отличным от того, что есть в базе - это именно пользователь отредактировал данные. А если это не пользователь, а "оно само", значит ваше приложение изрядное ?овно. Кроме того, в условиях когда действительно "оно само" - пользователь может с полным правом иметь "разработчика" в любые технологические отверстия какими угодно предметами. Ведь в этом случае совершенно нельзя достоверно утверждать, что в косяках, сокрытии воровства и убытках предприятия виноват конкретный пользователь, когда в программе "оно само" косячит, ворует и наносит убытки. Это "разработчик" виноват, а пользователь все делал правильно.
8 Kateryne
 
09.01.15
07:11
(7) А это см. (0), вот эту фразу:
ЗЫ: только не предлагайте перенести или исправить код :)

То что такое поведение в принципе неверно - и сама знаю. Поэтому, так как раньше не сталкивалась с подобным, и не знаю, как права отрабатывают при изменении полей документа на клиенте.

Но мы имеем отраслевую конфигурацию, купленную за немаленькие деньги. Или, что более точно, она нас имеет.
В этой конфигурации не было предусмотрено прав "Только просмотр" как класс. Решили создать - но получили то, что получили.

По всей видимости, для начала придется подправить директиву с "на клиенте" на "на сервере", так как если убрать установку данных полей, мы пока не знаем, на что это может повлиять в дальнейшем, надо разбираться. Все что делает та процедура - это меняет видимость ряда полей в зависимости от выбранного пользователем другого поля. Но эта процедура отрабатывает еще и при открытии. И по умолчанию заполняет некоторые реквизиты. Поведение, действительно, мягко говоря, странное.
9 Kateryne
 
09.01.15
07:14
Модифицированность формы, кстати, не меняется.
10 Рэйв
 
09.01.15
07:19
(9)Если это не реквизиты объекта, а реквизиты формы она и не должна становиться модифицированной, т.к. реквизиты формы живут только пока живет форма и смысла нет их отслеживать
11 Рэйв
 
09.01.15
07:20
(9)Вроде такой фигни было сделано в ПКО и РКО.
Там если одна строка в РасшифровкеПлатежа, то таб часть скрывалась и заполнялись реквизиты формы из строки. Хрень конечно та еще:-)
12 Kateryne
 
09.01.15
07:23
(11) И как там выкручивались с правами на чтение?
13 Рэйв
 
09.01.15
07:24
(12)На чтение чего?
14 Kateryne
 
09.01.15
07:28
(13) Точнее, с правами "Только просмотр". Если было нужно дать права на ПКО только на просмотр.
Или там изменение реквизитов формы не при открытии делалось?
15 Рэйв
 
09.01.15
07:29
(14)Я не помню уже как там рулилось, но даже если никак, то при записи тормознет с матерным сообщением о недостатке прав доступа.
16 Рэйв
 
09.01.15
07:31
Если менялись реквизиты объекта конечно
17 Kateryne
 
09.01.15
07:38
У нас не так.
У меня же в чем проблема - не могу сделать права "Только просмотр", так как при таких правах ругается на изменение поля объекта из структуры ДанныеФормыСтруктура на клиенте, которое делается при открытии.
Т.е. нам надо наоборот - разрешить такое изменение, но запретить изменения полей на форме вручную.
18 Рэйв
 
09.01.15
07:42
Если в коде не прописано, что если нет прав, то менять реквизит формы нельзя, то надо менять код. Имхо настройками свойств не обойдешься
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший