|
Ошибка при удалении элемента справочника | ☑ | ||
---|---|---|---|---|
0
Коротков
13.08.16
✎
09:35
|
Если в конфигурации существует регистр сведений с ведущим измерением с типом ЛюбаяСсылка или СправочникСсылка, то для удаления любого элемента любого справочника нужны права на редактирование этого регистра.
Иначе ругается на "Недостаточно прав". Это баг или фича? |
|||
1
Горогуля
13.08.16
✎
09:36
|
так надо
|
|||
2
Коротков
13.08.16
✎
09:36
|
Зачем?
|
|||
3
wertyu
13.08.16
✎
09:39
|
чтобы битых ссылок не было
|
|||
4
RomanYS
13.08.16
✎
09:39
|
(0) редактирование? прав на запись точно не достаточно?
|
|||
5
Горогуля
13.08.16
✎
09:40
|
(2) для того, чтобы удаление элемента справочника влекло за собой удаление соответствующих записей регистра, Ватсон
|
|||
6
Коротков
13.08.16
✎
09:43
|
В регистре нет записей вообще. Никаких.
Причем здесь битые ссылки? |
|||
7
wertyu
13.08.16
✎
09:43
|
(6) ну и что?
|
|||
8
Коротков
13.08.16
✎
09:44
|
(4) Наверное и на изменение достаточно, не проверял
|
|||
9
wertyu
13.08.16
✎
09:45
|
(8) и итоги, если периодический
|
|||
10
Коротков
13.08.16
✎
09:48
|
(7) Нелогично и избыточно. Если бы существовали записи регистра с измерениями, ссылающимися на удаляемый элемент справочник, то подобное ограничение по правам выглядело бы вполне оправданным.
|
|||
11
RomanYS
13.08.16
✎
09:52
|
(10) А как узнать, есть ли записи, если у тебя прав нет?
|
|||
12
wertyu
13.08.16
✎
09:52
|
(10) как раз логично, и вообще зачем давать права на интерактивное удаление?
|
|||
13
Коротков
13.08.16
✎
09:56
|
(11) Ну на чтение регистра права могут быть. Какое отношение вообще это имеет к вопросу?
(12) Права на интерактивное удаление конечно не нужны в большинстве случаев, согласен. Вопрос был чисто теоретический, почему-то раньше не сталкивался с таким поведением. Т.е. это все таки не баг, а фича, хоть и с малопонятной мне логикой. |
|||
14
RomanYS
13.08.16
✎
10:01
|
(13) всё здесь логично.
При необходимости есть способы обойти эти ограничения: привилегированный режим, режим загрузки. |
|||
15
Коротков
13.08.16
✎
10:07
|
(14) Нелогично. Зачем проверять права на запись в таблицу регистра, если фактически апдейта этой таблицы не произойдет?
|
|||
16
Горогуля
13.08.16
✎
10:10
|
(15) а зачем проверять, произойдёт или не произойдёт?
|
|||
17
Коротков
13.08.16
✎
10:13
|
(16) Ну если апдейта таблицы регистра не будет, то и права на этот регистр проверять незачем -> можно спокойно удалять элемент справочника.
|
|||
18
Коротков
13.08.16
✎
10:13
|
Так было бы логичней
|
|||
19
Коротков
13.08.16
✎
10:14
|
Налицо избыточное ограничение
|
|||
20
Горогуля
13.08.16
✎
10:15
|
(17) представь себе 800 регистров, в каждом по 200 ведущих измерений типа ссылка на твой справочник...
|
|||
21
Коротков
13.08.16
✎
10:16
|
(20) Утрируешь, в реальности такие конифгурации не встречаются
|
|||
22
Горогуля
13.08.16
✎
10:18
|
(21) утрирую. в педагогических целях
|
|||
23
Коротков
13.08.16
✎
10:20
|
Т.е., как я понимаю, девелоперы 1С исходили из того, что "проверять на запись долго, давайте сперва тупо проверим по правам и запретим, если что"
|
|||
24
Горогуля
13.08.16
✎
10:21
|
у девелоперов и спроси. я б разбираться не стал, что там в базе уже понаписано
|
|||
25
Коротков
13.08.16
✎
10:26
|
Забавно, что хотя процедуры ПередЗаписью и ПриЗаписи модуля набора записей такого регистра при удалении элемента справочника не вызываются - тем не менее, модуль компилируется.
Т.е., если в модуль засунуть синтаксический мусор, то при попытке удалении элемента справочника система ругается и тупо завершает работу. |
|||
26
RomanYS
13.08.16
✎
10:28
|
(23) я так понимаю, идёт тупая перезапись пустого набора. На этом у тебя и вылетает. Чтения и проверок не происходит.
|
|||
27
Коротков
13.08.16
✎
10:28
|
(26) Нет записи набора, проверял
|
|||
28
RomanYS
13.08.16
✎
10:31
|
(27) а я проверил, у меня передЗаписью остановилось (8.3.6)
|
|||
29
Коротков
13.08.16
✎
10:35
|
(28) Любопытно, я тестил на 8.3.8.1747.
Проверю еще раз. |
|||
30
Коротков
13.08.16
✎
10:40
|
Нет, на ПередЗаписью не останавливается
|
|||
31
Горогуля
13.08.16
✎
10:46
|
до удаления: https://i.imgur.com/ScI3my8.png
после: https://i.imgur.com/XlNinKH.png модуль НЗ: Процедура ПередЗаписью(Отказ, Замещение) Сообщить("да!"); КонецПроцедуры |
|||
32
Горогуля
13.08.16
✎
10:47
|
1С:Предприятие 8.3 (8.3.8.1747)
|
|||
33
RomanYS
13.08.16
✎
10:50
|
||||
34
Коротков
13.08.16
✎
10:57
|
Ага, понял в чем разница. Вы УДАЛЯЕТЕ элемент справочника, т.е. права на запись регистра есть. А я ПЫТАЮСЬ удалить без прав на регистр - в этом случае модуль набора записей хоть и компилируется, но не вызывается.
|
|||
35
Горогуля
13.08.16
✎
10:58
|
а чего там вызывать без прав?
|
|||
36
Коротков
13.08.16
✎
11:06
|
Все, теперь уложилось в голове. Действительно, независимо от наличия записей в регистре, ссылающихся на на наш справочник, запись набора происходит в любом случае. Отсюда и трабла с правами.
Только, имхо, это ведь совсем неправильно. Зачем в данном случае записывать пустой набор? Только лишний оверхед. |
|||
37
Mauser
13.08.16
✎
11:45
|
(36) Потому что, чтобы узнать что писать не надо - надо прочитать. Что тоже оверхед, так как удаление существующих данных происходит куда чаще, чем несуществующих.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |