Имя: Пароль:
1C
1С v8
RLS
0 lom7000
 
05.08.13
15:41
Добрый день!
есть список документов, в документе реквизит "ЗалогВозвращенКлиенту"
в Ограничение доступа к данным, Чтение, пишу: <Прочие поля>
"АрендаДокументы ГДЕ АрендаДокументы.ЗалогВозвращенКлиенту = ЛОЖЬ"

В результата в общем списке у роли отображаются только документы с "ЗалогВозвращенКлиенту = ЛОЖЬ"

Далее пользователь заходит в документ и в форме ставит галочку "ЗалогВозвращенКлиенту", при попытке сохранения выдает "у пользователя недостаточно прав для исполнения операций над базой данных". Если менять любые другие данные в документе, не изменяя "ЗалогВозвращенКлиенту", то сохраняет без проблем.

Собственно, нужно сохранить документ с измененным статусом "ЗалогВозвращенКлиенту"

1С:Предприятие 8.2 (8.2.17.143) "Управление торговлей", редакция 10.3 (10.3.12.3)
1 Maxus43
 
05.08.13
15:44
данную задачу я бы решал не через РЛС... У пользователя просто нет доступа к доукментам с другим значением флага
2 lom7000
 
05.08.13
15:46
после сохранения он и из списка должен пропасть, что собственно и нужно
3 Maxus43
 
05.08.13
15:46
+ возможностью редактирования формы решай + жёсткими отборами в форме списка.
4 Defender aka LINN
 
05.08.13
15:48
(0) От такой постановки задачи попахивает бредом.
Если у пользователя нет прав даже смотреть на документы с таким флагом, то как он может их создавать?
5 Maxus43
 
05.08.13
15:49
Либо - записывай смену статуса в привелигированном модуле
6 lom7000
 
05.08.13
15:57
(4) Он создает их со статусом ЗалогВозвращенКлиенту = ЛОЖЬ, может их читать и редактировать
7 Maxus43
 
05.08.13
15:58
(6) РЛС не даст доступа к другому статусу, о чем ты сам его и пропросил в (0)
8 lom7000
 
05.08.13
15:59
(5) УстановитьПривилегированныйРежим(ИСТИНА); так? ток куда это вставить? ПриЗаписи ?
9 lom7000
 
05.08.13
16:00
(7) согласен
10 Maxus43
 
05.08.13
16:01
(8) это сработает только в файловом варианте...
Поидее придётся стандартную кнопку менять на свою, и записывать только в общем привелигированном модуле. Короче извращение получится
11 Maxus43
 
05.08.13
16:03
хм... запрос РЛС может изменить?
Соединить с таблицей документов и проверить на совпадение этого реквизита. Типа сравнить Объект со ссылкой в БД. Хз получится ли правда
12 capitanjack1
 
05.08.13
16:08
(3) дело говорит, поставь в форме отбор и запрети его снимать/ставить.
13 lom7000
 
05.08.13
16:36
Ну вот так извратился:),

Добавил реквизит,  ДокументЗаписывается(BUL)


Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)    
       ДокументЗаписывается = ИСТИНА;
КонецПроцедуры


Процедура ПослеЗаписи()    
       УстановитьПривилегированныйРежим(ИСТИНА);    
       ДокАРСсылка = Документы.АрендаДокументы.НайтиПоНомеру(Номер);
       ДокАР  = ДокАРСсылка.ПолучитьОбъект();
       ДокАР.ДокументЗаписывается = ЛОЖЬ;
       ДокАР.Записать();
       УстановитьПривилегированныйРежим(Ложь);        
КонецПроцедуры

ну и в РЛС: "АрендаДокументы ГДЕ АрендаДокументы.ЗалогВозвращенКлиенту = ЛОЖЬ ИЛИ ДокументЗаписывается = ИСТИНА"
14 m-serg74
 
05.08.13
16:45
ПослеЗаписи()  
.................
ДокАР.Записать();
??????????

и снова ПередЗаписью() и снова ПослеЗаписи()???
что это?
15 m-serg74
 
05.08.13
16:46
еще и
Документы.АрендаДокументы.НайтиПоНомеру(Номер);

фуууу
16 lom7000
 
05.08.13
16:52
(14) ну это только для того чтобы изменить только "ДокументЗаписывается", чтоб другое не задеть.
(15) ну а что фукать то сразу, как будто других слов нет, не все же профессионалы,  каждый выкручивается как может...
  m-serg74 ну а вы бы как сделали?
17 m-serg74
 
05.08.13
16:57
(16) раза три написали через отбор в форме списка а не через РЛС, тем более так через одно место как думаешь сколько раз произойдет событие ПослеЗаписи()   ???
18 m-serg74
 
05.08.13
16:58
а искать документ по номеру когда ты в его модуле объекта находишься так это вообще ни в какие ворота не лезет
19 lom7000
 
05.08.13
17:06
(17) согласен с (3)

просто отбор в форме не гарантирует что пользователь не сможет поднять заблокированный для него документ.

(18) ну просто я не уверен что он еще чего нибудь не сохранит кроме  "ДокументЗаписывается", решил все сделать стерильно...
20 m-serg74
 
05.08.13
17:08
(19) да бесконечная рекурсия получится вроде
Процедура ПослеЗаписи()    
ДокАР.Записать();

или я не прав?
21 lom7000
 
05.08.13
17:10
(20) нет, не будет, вызов динамический а не через форму.
проверил, работает, просто сам костыли не очень люблю...
22 Maxus43
 
05.08.13
17:11
(21) делай (3), тоже костыль, но хоть красивый.
23 m-serg74
 
05.08.13
17:12
(21) что значит "вызов динамический а не через форму."
24 lom7000
 
05.08.13
17:13
(22) согласен
25 lom7000
 
05.08.13
17:18
(23)не динамический то-есть, а программно, через код, минуя форму...
Компьютеры — прекрасное средство для решения проблем, которых до их появления не было.