Имя: Пароль:
1C
1С v8
Запись документа без наличия прав
0 moonlight
 
18.10.22
10:09
Добрый день.

1С УТ (обычные формы)
Каким образом программно (модуль формы) можно дать возможность пользователю записывать документ, если у него права только на просмотр этого документа? Доступ к кнопкам Запись и ОК предоставил установив Свойство "Только просмотр" = Ложь. Пытался поиграть методом УстановитьПривилегированныйРежим - не получилось.

Спасибо.
1 Fish
 
18.10.22
10:12
А зачем такой изврат? Если пользователю надо записывать документ - дайте права на запись.
2 Гений 1С
 
гуру
18.10.22
10:15
(0) в привилегированном модуле попробуй, ггг.. хотя это программно.
а так создай кнопку без галочки Изменяет данные и по ней копируй данные формы в объект и его записывай. Сама форма не даст записать.
3 YFedor
 
18.10.22
10:22
(2) После записи в эту форму же не запихать данные вновь созданного объекта?

Тогда, наверное, лучше открывать какую-то другую форму, которая будет выглядеть как форма документа, но ей не будет являться ...
4 moonlight
 
18.10.22
10:24
(1) Да вот такое задание)
5 moonlight
 
18.10.22
10:26
(2) Надо по кнопке формы "ОК".
6 Asmody
 
18.10.22
10:29
(0) Если вы хотите делать из формы документа, значит у вас что-то не так с архитектурой и/или с назначением ролей/прав.
7 Гений 1С
 
гуру
18.10.22
11:24
(5) скройте типовую кнопку ОК, создайте свою, гггг
8 1Сергей
 
18.10.22
11:30
(4) Ваша задача убедить постановщика что так делать не надо
9 vicof
 
18.10.22
11:36
(8) +100500
10 PR
 
18.10.22
11:39
(4) — Как насрать в горшок, не снимая штанов?
— А зачем такой изврат?
— Да вот такое задание

Если ты думаешь, что ты этой фразой сказал, что это не ты идиот, а тот, кто тебе дал такое задание, то нет
11 Гений 1С
 
гуру
18.10.22
12:32
(10) надо быть открытым для пожеланий клиента и помнить что
а) клиент всегда прав
б) любой каприз за ваши деньги
в) я то сделаю, но жить с этим вам.
12 PR
 
18.10.22
12:35
(11) Геня, это твои принципы
Ты, я так понимаю, по таким принципам за деньги и в попу дашь и в рот возьмешь
А нормальные люди во всякий блудняк не ввязываются, потому что говно, подброшенное на лопате, все-равно упадет тебе же на голову
13 moonlight
 
18.10.22
15:50
Это вопрос на одном из собеседований как мне сказали!)) Необходимо реализовать вот такую задачу.)
14 Fish
 
18.10.22
15:53
(13) И правильный ответ на него в (8) :)
15 ptiz
 
18.10.22
15:56
(0) Фраза "у него права только на просмотр" может означать разные вещи.
Если у пользователя в роли есть право на "Запись", но нет права на "Редактирование", то обходится программной записью. А если нет права на "Запись", то только сильным извратом.
16 Фрэнки
 
18.10.22
16:04
помню был какой-то прикол, что нельзя давать пользователям право запуска внешних обработок из файлов.
Потому что в тексте внешней обработки может быть код, который позволит перезаписать документы,
даже если у юзера права только на просмотр.

Но как там была организована такая хакерская подляна - не помню.
17 Фрэнки
 
18.10.22
16:06
Собственно, использование контекста, что это модуль у обычной формы, подразумевает, что нет разделения на контекст Клиента и Сервера, что это толстый клиент и т.д.
18 vde69
 
18.10.22
16:09
в форме в процедуре "на сервере"

1. установить привелегированный режим
2. выполнить любую типовую команду у которой параметров выступает объект или ссылка (например печать)
19 moonlight
 
18.10.22
16:13
Формы обычные! Даже если я устанавливаю прив. режим в событиях формы или модуля ПередЗаписью, 1С где то под капотом проверяет наличие прав на запись и соответственно я не попадаю в указанный обработчик события )
20 Fish
 
18.10.22
16:15
(19) Надо делать свою кнопку. И уже там устанавливать привилегированный режим и вызывать запись.
21 moonlight
 
18.10.22
17:20
Вот полный текст задания:

Для роли Полные права; на документ Заказ покупателя оставить право
Просмотр. Создать возможность записи документа (фактически обход ограничения
Роли) по кнопке «ОК» формы. (Непосредственное редактирование формы
запрещено, только модуль формы).
22 YFedor
 
18.10.22
17:22
(21) А кто сказал, что это типовая кнопка?
23 moonlight
 
18.10.22
17:22
Пишу потому что понимаю, что такой возможности нет. Но может, что то не так понял.
24 moonlight
 
18.10.22
17:23
непосредственное редактирование формы запрещено. Тогда вариант создавать программно кнопку из модуля формы.
25 YFedor
 
18.10.22
17:24
(24) ага
26 Мимохожий Однако
 
18.10.22
17:25
При создании на сервере добавь программно в модуле формы свою кнопку ОК и пиши туда, что тебе хочется.
27 YFedor
 
18.10.22
17:25
Я так понимаю, что это не реальная бизнес-задача, а какая-то задротно-тренировочная
28 Мультук
 
гуру
18.10.22
17:26
(23)
Вопрос 1. Зачем тебе сейчас обычные формы ?
Вопрос 2. Зачем тебе такие люди, которые уже на этапе приема на работу хотят странного?

Я обычно не ленюсь глянуть "а как так можно", но смотреть данную задачу -- фи.

P.S.

А у стандартной кнопки "ОК" можно переопределить обработчик ?

Ну или что-нибудь типа:

В ПередЗаписью

УстановитьПривРежим(Истина);
Записать()
Отказ = Истина;
29 moonlight
 
18.10.22
17:33
(28) Да мне они не нужны. Это задание необходимо выполнить на конфигурации УТ 2.3 )
30 ptiz
 
18.10.22
17:44
(21) Назначь для кнопки "ОК" свою процедуру, и в процедуре делай "Записать()".
31 moonlight
 
18.10.22
17:47
Такой вариант предполагал. Думал, может как то можно использовать метод УстановитьПривРежим можно как то заюзать при нажатии родной кнопки ОК.
32 Фрэнки
 
18.10.22
17:51
---
Вот полный текст задания:

Для роли Полные права; на документ Заказ покупателя оставить право
Просмотр. Создать возможность записи документа (фактически обход ограничения
Роли) по кнопке «ОК» формы. (Непосредственное редактирование формы
запрещено, только модуль формы).
---
Т.е. получается, что нужно иметь скопированную роль Полные права и в ней убрать права с документа
а затем каким-то образом программно вернуть права на документ, которые были выключены до того как?!
33 moonlight
 
18.10.22
17:54
Нет. В самой роли изначально на этот документ оставляем только право Просмотр. А процессе записи мы расширяем права, чтобы произвести запись
34 Фрэнки
 
18.10.22
17:56
и вообще странно, если форма документа заполнена и в наличии роль "только просмотр", то открытие формы будет "Только просмотр = истина"
Ну даже если на конкретной кнопке будет указано, что Только просмотр = ложь
Все остальные данные формы не изменятся и перезапись документа из формы не имеет нормального смысла.

Мало того.
При открытии обычной формы можно программно установить на всю форму и на отдельные элементы формы Только просмотр = Истина.
Но если нет роли на запись объекта, то манипуляции с формой не смогут взломать отсутвие роли на объект.
35 moonlight
 
18.10.22
17:57
)))
36 Фрэнки
 
18.10.22
17:59
(33) извини за грубую форму

Но мне кажется, что либо тебя разводят, либо нас ты разводишь.
И смотрят, что ты в этом разводе будешь делать, насколько уверен в том,
что если роли в текущем сеансе нет, то дать ее самому себе в текущем же сеансе не получится.
37 Kassern
 
18.10.22
18:01
(33)  Добавьте права на запись, но программно ограничьте эту возможность. И в зависимости от "расширения прав" регулируйте это программное ограничение.
38 moonlight
 
18.10.22
18:04
(36) Нет, я серьезно написал то, что было в одном из задании, потратил достаточно много времени и только после этого отписался сюда. Я уже им написал, чтобы дали дополнительные разъяснения. В принципе я уже понял, что не только мне это задание кажется странным.
39 Фрэнки
 
18.10.22
18:07
(37) Если добавить права на запись, то какого хххх писать, что из полных прав убрали _все_ , кроме права на просмотр на данный обюъект.

Не надо ничего пытаться добавлять, а просто сказать, что задаватели такой тестовой задачи уху ели.
40 Vaderonk
 
18.10.22
18:13
(0) может я немного чего не понимаю, но почитай https://www.softpoint.ru/archive/article_id159.php - уж извиняюсь за ссыль на сторонний ресурс, но там описывают очень подробно все.
41 Фрэнки
 
18.10.22
18:20
(40) прикольно написано, но этот подход не будет работать на обычных формах (раз)
И в задании ему установили ограничение, что все изменения нужно выполнить в модуле формы (два)
Т.е. разрешение на запись в привилегированном модуле ему по условиям задачи не давали.
42 rudnitskij
 
18.10.22
19:14
(38) интересно, какая ЗП будет решившим эту задачу? 40 тыщ?
43 rudnitskij
 
18.10.22
19:17
(21) На ум приходит в модуле формы прямая запись данных в таблицу СКЛ с последующим вызовом метода "перечитать" на форме
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший