Имя: Пароль:
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
Если в коде не прописано, что если нет прав, то менять реквизит формы нельзя, то надо менять код. Имхо настройками свойств не обойдешься
Компьютеры — прекрасное средство для решения проблем, которых до их появления не было.