Имя: Пароль:
1C
1С v8
Нарушение прав доступа! (удаление элемента справочника)
0 extrim-style
 
06.10.11
12:12
8.1 При программном удалении элемента справочника выскакивает эта ошибка.

{Справочник.хз_СтатьиЗатрат.Форма.ФормаСписка(39)}: Ошибка при вызове метода контекста (Удалить): Нарушение прав доступа!
          Выборка.ПолучитьОбъект().Удалить();

где Выборка.ПолучитьОбъект() тип СправочникОбъект.хз_СтатьиЗатрат

Права пользователей были немного подрезаны. Но на этот справочник у юзверя есть все права, кроме интерактивного удаления. Тем не менее эта ошибка - в чем тут дело?
1 Mort
 
06.10.11
12:14
В обработке удаления видимо режутся связанные объекты, на которые прав уже нет.
2 extrim-style
 
06.10.11
12:18
Удалить() это стандартный метод СправочникОбъект.<Имя справочника>
3 Mort
 
06.10.11
12:23
(2) Я очень рад.
4 Mort
 
06.10.11
12:24
А еще бывает событие "перед удалением" в модуле справочника.
5 rutony
 
06.10.11
12:27
(2) -> (1) Есть настройки, например, у регистра сведений, которые удаляют записи в случае удаления измерения
6 extrim-style
 
06.10.11
12:27
(4) уже смотрел. нет такого. есть только ПередЗаписью.
7 hhhh
 
06.10.11
12:28
(6) регистры сведений все проверил?
8 rutony
 
06.10.11
12:28
(5) + ну а на сам регистр ограниченные права

(6) сделай поиск ссылок на справочник, и проверь права на найденные регистры
9 extrim-style
 
06.10.11
12:42
Владельца у справочника нет. Ни с какими регистрами он не связан.

Поиск ссылок в объекте показал на ПодсистемаХЗ, которой справочник принадлежит и 2 перечисления: Перечисление.ОтнесениеРасходовКДеятельностиЕНВД
Перечисление.ВидыРасходовНУ

У юзера есть права только на ПодсистемуХЗ. Перечисления в ролях не присутствуют. Но сами перечисления присутствуют в других подсистемах. Попытался дать юзеру права на эти подсистемы - толку нет.

Подскажите, может вобще не обрезать пользователю права по подсистемам? На что это влияет?
10 extrim-style
 
06.10.11
12:43
Да и мне вобще непонятно, какая тут может быть связанная информация? Я получил объект справочника, но не могу его удалить. Почему?
11 extrim-style
 
06.10.11
12:46
Дал юзеру права на все подсистемы - толку нет. Значит дело не в подсистемах, а непосредственно в правах роли юзера. Но как понять, чего не хватает?
12 shuhard
 
06.10.11
12:54
(10) приколист,
на твой справочник сидят ссылки в тыще мест
в других справочниках, Рг и х.з. где ещё
13 extrim-style
 
06.10.11
12:57
(12) на мой справочник нет ни одной ссылки в конфигурации. Есть толко из него, те, которые в (9)
14 shuhard
 
06.10.11
12:58
(13) тогда пометь его на удаление и запусти штатную обработку
далее зырь журнал
15 extrim-style
 
06.10.11
13:58
(14) не понял. Пометить элемент справочника на удаление? Какую штатную обработку? Удаление помеченных объектов?
16 extrim-style
 
06.10.11
14:03
(15) Поставлю вопрос по-другому. Имеется справочник, при открытии которого удаляются некоторые элементы по условию. Код:

Выборка = Справочники.хз_СтатьиЗатрат.ВыбратьИерархически();
Пока Выборка.Следующий() = 1 Цикл
     Если Условие Тогда
          Выборка.ПолучитьОбъект().Удалить();

В последней строке выскакивает сообщение об ошибке удаления. Какие тут могут быть зависимости или может быть стандартные механизмы обработки удаления справочников в общих модулях или еще где-нибудь? Я вобще не воткну в чем трабл: получаю элемент справочника, у пользователя все права на  справочник (справочник от пользователя открывается), почему нельзя удалить, не пойму?
17 ДемонМаксвелла
 
06.10.11
14:09
Вообще не должны пользователи с ограниченными правами делать удаление объектов в базе. Только помечать.
18 extrim-style
 
06.10.11
14:10
Права даны ОтветственномуЮзверю.
19 extrim-style
 
06.10.11
14:11
(17) Этот справочник - копия справочника СтатьиЗатрат, только перегруппирован по-другому, отсюда и необходимость удалять элементы сразу и не хранить мусор.
20 catena
 
06.10.11
14:13
(18)ООО, с этой фразы начинаются многие забавные повести, а порой и триллеры...
21 extrim-style
 
06.10.11
14:14
(20) у пользователя нет никаких лишних прав. только программная синхронизация одного справочника с другим.
22 extrim-style
 
06.10.11
14:16
Ну что никто не знает почему нельзя удалить элемент справочника?
23 extrim-style
 
06.10.11
14:25
хелп
24 catena
 
06.10.11
14:39
попробуй встать на эту строчку и нажать ф11, может правда в какие подписки лезет...
25 extrim-style
 
06.10.11
15:05
попробовал сейчас удалить от этого пользователя другой справочник, на который у пользователя также есть все права - выдал эту же ошибку. Получается работает какой-то общий механизм при удалении элемента справочника? И как его найти? Конфа Бух 1.6.
26 catena
 
06.10.11
15:06
(25)попробуй встать на эту строчку и нажать ф11, может правда в какие подписки лезет...
27 extrim-style
 
06.10.11
15:08
(26) уже пробовал. никуда не идет.
28 catena
 
06.10.11
15:20
(27)Тады ай.
У меня все удаляется.
29 extrim-style
 
06.10.11
15:20
*здесь крик о помощи*
30 hhhh
 
06.10.11
15:43
а в модуле объекта ничего нет? и что такое "программная синхронизация"?
31 hhhh
 
06.10.11
15:51
(29) еще попробуй Выборка.ПолучитьОбъект().Записать();
32 extrim-style
 
06.10.11
15:59
(30) программная синхронизация означает, что новый справочник создается на основе другого и содержание справочников должно совпадать. Т.е. при открытии происходит проверка на соответствие элементов, если елемента в исходном справочнике нет, то он должен удалиться из этого справочника. Как раз с этим моментом и возникла проблема.
(31) зачем записывать то, что уже записано?
(30) в модуле объекта почти ничего нет, заходит туда только при пометке удаления. А при непосредственном удалении не заходит.

У пользователя с полными правами всё работает. У текущего пользователя, от которого запускаю - нет. Как понять чего не хватает. Может есть какая-то глобальная проверка? Но не представляю, где её искать.
33 hhhh
 
06.10.11
16:04
обмен может? На обмен права есть?
34 extrim-style
 
06.10.11
16:05
(33) новый справочник - изначально копия старого, и в старом действительно был обмен. Но в новом эти галки сняты.
35 catena
 
06.10.11
16:08
(32)@зачем записывать то, что уже записано? @
чтобы проверить, есть ли права...
36 НЕА123
 
06.10.11
16:12
(0)
> Выборка.ПолучитьОбъект().Удалить()
ой как некошерно!!!
37 extrim-style
 
06.10.11
16:15
(36) чем?
38 extrim-style
 
06.10.11
16:16
Начал методом тыка подключать права для роли. Похоже дело в регистре сведений каком-то...
39 НЕА123
 
06.10.11
16:25
(38)
мда...
так ты до сих пор не делал поиска ссылок на объекты?
40 НЕА123
 
06.10.11
16:27
2АЛЛ
сегодняшний день на мисте - это что-то...!!!
41 extrim-style
 
06.10.11
16:31
(38) я уже написал в (9) обо всех ссылках
42 extrim-style
 
06.10.11
16:32
(40) похоже, пока разбирался со своим вопросом, всё интересное на мисте пропустил...)
43 НЕА123
 
06.10.11
16:41
(41)
ссылки в конфигураторе что-ли искал?

из (9)
>Ни с какими регистрами он не связан.

из (38)
>Похоже дело в регистре сведений каком-то...

(37)
Выборка может слететь. и нельзя удалять без проверки ссылок.
44 extrim-style
 
06.10.11
16:48
(43) да нет никаких ссылок. я же сам создал этот объект.
45 shuhard
 
06.10.11
16:53
(44) можно задвинул

теперь предположим наличие в конфигурации подписки перед/при записи на все справочники,

которая пишет в Рг сведений версии объектов
или
объекты доступа
46 shuhard
 
06.10.11
16:54
(46) +1
кстати
конфа до сих пор не озвучена,
вдруг это УПП
47 extrim-style
 
06.10.11
16:59
Трам-пам-пам. Барабанная дробь! РС СоответствиеОбъектовДляОбмена. Не понял откуда ноги растут. Будет интересно если кто просвятит.

В исходном справочнике СтатьиЗатрат есть настроенный обмен. В коде я сравниваю элементы обоих справочников. Но в этом справочнике обмен отключен. Не пойму каким он сюда вылез?
48 extrim-style
 
06.10.11
17:00
(46) озвучена в (25). Бух 1.6
49 extrim-style
 
06.10.11
17:01
Вот более полный код:
Выборка = Справочники.хз_СтатьиЗатрат.ВыбратьИерархически();
СообщениеВыведено = Ложь;
Пока Выборка.Следующий() = 1 Цикл
    Если Выборка.ЭтоГруппа = Ложь Тогда
     Элемент = Справочники.СтатьиЗатрат.НайтиПоНаименованию(Выборка.Наименование, Истина);
     Если Элемент = Справочники.СтатьиЗатрат.ПустаяСсылка() Тогда
          Выборка.ПолучитьОбъект().Удалить();
50 extrim-style
 
06.10.11
17:02
справочники синхронизируются по наименованию статей
51 shuhard
 
06.10.11
17:02
(47) не фига было выпендриваться,
поиск ссылок со стороны предприятия ищет ссылку за секунды
52 extrim-style
 
06.10.11
17:05
(51) я не понял, что речь идет о поиске данных в пользоват. режиме. Спрашивал об этом в (15).
53 shuhard
 
06.10.11
17:06
(52) не свисти
я тебе утром дал ответ
пометь на удаление и запусти штатную обработку
она даст все ссылки
54 extrim-style
 
06.10.11
17:07
(53) я так и сделал. не было никаких проблем. элемент спокойно предлагался на удаление.
55 shuhard
 
06.10.11
17:11
(54) топик закрыт
56 extrim-style
 
06.10.11
17:14
(55) нет не закрыт! Я день промучился с этой траблой и нихрена не понял! Почему он просит у меня этот регистр?
57 extrim-style
 
06.10.11
17:22
и кстати этого регистра недостаточно. еще какой-то(какие-то) нужны, как оказалось.
58 catena
 
06.10.11
17:39
О, боже, а зачем:
Элемент = Справочники.СтатьиЗатрат.НайтиПоНаименованию(Выборка.Наименование, Истина);
???

(57)Не помечай на удаление, сделай НайтиСсылки()
59 extrim-style
 
07.10.11
08:27
(58) справочник-копия самостоятельный и не является ссылочным к исходному справочнику
60 catena
 
07.10.11
08:44
(59)а ты уверен, что нет каких-нить регистров, в которые пишутся ВСЕ справочники?
61 extrim-style
 
07.10.11
08:53
(60) нет. не уверен. а как мне это определить?
62 catena
 
07.10.11
09:01
(57)Не помечай на удаление, сделай НайтиСсылки()
63 catena
 
07.10.11
09:03
пардон,
НайтиПоСсылкам
64 Sammo
 
07.10.11
09:07
Кстати, как вариант нет доступа на изменение регистра сведений, где в измерении тип ВсеСсылки
При этом фактически записей в этом регистре по данному элементу справочника может и не быть
65 catena
 
07.10.11
09:11
Хм... А ведь Удалить() действительно не проверяет ссылки. Пятница, однако.
66 extrim-style
 
07.10.11
09:38
(65) а как ты это поняла?
67 Sammo
 
07.10.11
09:45
(65) Емнип, кроме того, что в подписках и РС, где на измерение с данным типом стоит Ведущее
68 catena
 
07.10.11
09:45
(66)Тут где-то СП по СП была, поищи.
69 extrim-style
 
07.10.11
09:48
(68) ааа... а я думал о чем ты...
70 extrim-style
 
07.10.11
10:23
оказывается, еще и прав на документ какой-то не хватает...
71 extrim-style
 
07.10.11
11:33
Итого в сухом остатке - понадобились права на изменение для РС КоллизииПриОбмене, РС ОбъектыИнформационныхБаз, РС СоответствиеОбъектовДляОбмена, РС СоответствиеОбъектовИнформационныхБаз.

Я так понял, что весь этот трабл связан именно с недостатком прав на обмен.

Не знаю как обмен работает, но может в момент моего обращения к исходному справочнику СтатьиЗатрат он отрабатывает. А ошибка почему-то выскакивает позже?
72 Sammo
 
07.10.11
11:37
(71) Указан ли в данных регистрах сведений в измерениях данный тип или тип ВсеСсылки?
73 extrim-style
 
07.10.11
11:41
(72) Да. У каждого из этих регистров есть измерение с типом ЛюбаяСсылка.
74 Sammo
 
07.10.11
11:43
(73) Тогда см. 64
75 Sammo
 
07.10.11
11:44
Классика...
Еще из этой же серии - создается документ, который двигает регистр накоплений. На данный документ у человека прав нет, на регистр - есть.
При формировании отчета по регистру - нарушение прав доступа (хотя документов еще не было)
76 extrim-style
 
07.10.11
11:49
(74) а как это всё работает? можно поподробнее? Мало ли в каком регистре что указано. Если я не использую его непосредственно, то каким боком он тут вылез?
77 extrim-style
 
07.10.11
12:07
ап. интересно.
78 НЕА123
 
07.10.11
12:18
учиться, учиться и учиться (с)
79 extrim-style
 
07.10.11
12:36
(78) ссылку не?
80 НЕА123
 
07.10.11
12:40
81 НЕА123
 
07.10.11
12:41
(64)+(67)
82 extrim-style
 
07.10.11
12:53
да, кстати, в этих регистрах эта ЛюбаяСсылка как ведущее.
Но причем здесь мой левый справочник, ни с чем не связанный, и эти регистры? И почему именно в момент удаления происходит эта проверка?
83 Sammo
 
07.10.11
13:00
(82) Рекомендую прочитать - что такое признак Ведущее у измерения Регистра сведений. И много думать...
84 extrim-style
 
07.10.11
14:08
(83) Руководство разработчика. Ведущее - установка этого свойства имеет смысл для измерений, тип данных которых - ссылка на объект конфигурации. В этом случае считается, что запись регистра сведений имеет смысл, только пока существует этот объект.

И что я отсюда должен вынести, кроме того, что здесь написано?
85 НЕА123
 
07.10.11
14:34
(84)
ты это... того... прочитай до конца (83).
86 extrim-style
 
07.10.11
14:41
хотя бы один снизошел... Тут написано - "запись регистра". Я в регистр ничего не записываю, тем более эти регистры вобще пустые.
87 catena
 
07.10.11
14:43
(86)Запись регистра не может существовать без этого объект, т.е. даже при использовании Удалить(), связанные записи пропадут. Вот он и лезет везеде, где твой элемент ПОТЕНЦИАЛЬНО может быть, а у него прав нету.
88 extrim-style
 
07.10.11
14:50
(87) спасибо
Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование. Фредерик Брукс-младший