Имя: Пароль:
1C
 
Запретить добавление строк непериодического независимого регистра сведений
,
0 SeiOkami
 
10.07.21
10:18
Коллеги, как запретить добавление строк непериодического независимого регистра сведений?
Для этой возможности будет отдельная роль. Особо уравновешенный пользователь заведет нужные записи в РС, а далее ресурсы этих записей будут править обычные юзвери.

Думал, задача простая, пока что не нашёл решения

"Добавление новой записи" - это когда в базе пытается появиться запись с набором измерений, которых ещё нет в РС.
Хочу в обработчиках событий это как-то отловить и установить Отказ
1 BeerHelpsMeWin
 
10.07.21
10:26
дык ПередЗаписью
2 SeiOkami
 
10.07.21
10:27
(1), дык как ?
3 BeerHelpsMeWin
 
10.07.21
10:27
Или ролями отрегулируй. Право на чтение - в какую-нибудь обычную роль, право на запись - в отдельную, и выдай ее кому надо.
4 BeerHelpsMeWin
 
10.07.21
10:28
а, тьфу, тебе надо именно добавление новой отрегулировать
5 SeiOkami
 
10.07.21
10:29
Вот я изменяю запись РС. Просто меняю ресурс у существующей записи

В отладке нахожусь в событиях ПередЗаписью() и ПриЗаписи()

Сначала платформой происходит первая итерация - удаление прошлой записи.
Потом вторая итерация - добавление новой.

В момент второй итерации в РС уже нет записи.

Мне нужно на второй итерации (добавлении записи) понять, это реально новая или изменение существующей.
Но в этом моменте старой записи уже нет.
6 BeerHelpsMeWin
 
10.07.21
10:30
ммм а если сравнить количество записей в РС в ПередЗаписью() и в ПриЗаписи()
7 RomanYS
 
10.07.21
10:37
А не правильнее ли этот вопрос решать на уровне интерфейса? Не очень хорошо, когда пользователь что-то заполняет, а потом отказ получает
8 SeiOkami
 
10.07.21
10:39
(7), кнопки добавления,копирования, будут отключены, но на уровне записи всё равно стоило бы проверить.
Но, похоже, что это невозможно.
9 SeiOkami
 
10.07.21
10:40
(6), количество не меняется в этих событиях

сначала запись идет пустого набора. В обоих событиях 0 строк. Потом запись нового. В обоих событиях одна строка.
10 dmpl
 
10.07.21
10:41
(0) Запрети всем редактирование, само редактирование пусть делают в специальной обработке, которая будет менять нужные поля в привилегированном режиме.
11 SeiOkami
 
10.07.21
10:43
(10), да, только это и остаётся.

Однако, хочется уже добить эту тему.
Неужели нет вообще никакой возможности?
12 dmpl
 
10.07.21
10:46
(11) Ну можешь добавить регистр "Операции записи в регистр", где сохранять информацию об удалении записи, и давать отказ, если пытается записаться запись, которой нет в этом регистре. Но проще воспользоваться привилегированным режимом.
13 dmpl
 
10.07.21
10:51
(11) Ну или сделать скрытый реквизит в регистре, который при добавлении записи устанавливается в Истина для правильного пользователи и в Ложь для неправильного. Тогда при попытке записи можно будет сразу слать.
14 BeerHelpsMeWin
 
10.07.21
10:57
Сделай вместо РС справочник :)
15 GROOVY
 
10.07.21
11:24
ДопПараметры Перед записью установить и читать при повторной записи...
16 OldCondom
 
10.07.21
11:36
создать менеджер записи, прочитать. Проверить, есть ли запись. Если нет - значит новые данные.
17 SeiOkami
 
10.07.21
11:40
(15), ДополнительныеСвойства не передаются между этими двумя операциями
18 SeiOkami
 
10.07.21
11:40
(16), записи всегда нет, потому что она удаляется перед добавлением
19 SeiOkami
 
10.07.21
11:41
Можно, конечно, использовать какой-то параметр сеанса для этого, но жуть ведь редкостная
20 RomanYS
 
10.07.21
11:54
(9) Ну так перед записью пустого набора и проверяй
21 OldCondom
 
10.07.21
11:54
(18) Чего? Пару дней назад делал обмен с таким регистром, почти такая же задача. Все ок.
22 SeiOkami
 
10.07.21
11:55
(21), значит задача другая
23 SeiOkami
 
10.07.21
11:56
(20), что именно проверять ?
24 dmpl
 
10.07.21
11:58
(21) Проверка была в модуле набора записей?
25 RomanYS
 
10.07.21
12:18
(23) Уже попробовал, не работает. При создании новой записи пустой набор не записывается
26 SeiOkami
 
10.07.21
12:26
(25) при создании записи не записывается пустой
а вот при изменении измерений - да
27 SeiOkami
 
10.07.21
12:30
Нашёл пока одно нормальное решение. Но только на уровне формы записи.
Здесь можно перед записью сравнить новый ключ записи с исходным.
28 RomanYS
 
10.07.21
13:01
(27) так можно из формы списка создание запретить, а в форме записи закрыть измерения для изменения.
29 mistеr
 
10.07.21
15:04
(0) Задача простая, и решение простое. Набор значений измерений регистра выделить в отдельную сущность, то есть в справочник.

А двигать регистр все же советую документом.
30 SeiOkami
 
10.07.21
16:04
(29), действительно, прям самое простое {сарказм}
31 bolder
 
10.07.21
18:40
(0) Правми доступа запретить редактирование.В обработке привелигированными правами делать что хочешь.
32 mistеr
 
10.07.21
18:51
(29) Однозначно проще, чем то, что ты пытаешься делать.
33 bolder
 
10.07.21
18:57
(32) Да, это тоже неплохо.Но так контроль за неуравновешенными пользователями слабее, чем в обработке.
34 2S
 
10.07.21
19:24
В качестве варианта при открытии писать в тз. Потом проверять по уид.
35 RomanYS
 
10.07.21
19:31
(34) проблема в том, что писать не куда. Запись происходит два раза, причем в двух наборах записей не связанных общим контекстом. Только костыли с глобальными переменными или параметром сеанса
Кaк может человек ожидaть, что его мольбaм о снисхождении ответит тот, кто превыше, когдa сaм он откaзывaет в милосердии тем, кто ниже его? Петр Трубецкой