|
|
Удаление своих записей регистра сведений
zenik, ИУБиПовиц, Seducer, Мультук, X Leshiy, crotnn, Bigbro, Гипервизор, kogotaz, timurhv, palsergeich, Timon1405, Волшебник, H A D G E H O G s, ReaLg, CepeLLlka, Amra, Михаил Козлов, PR, okmail, paramedic, integer, Vstur, alexxx961503, AlexKimp, trooba, d4rkmesa, KJlag, GreenDay1986, Vostochnick, Prog_man, maxab72, maxar, calmius, АгентБезопаснойНацио, Garykom, shuhard, spiller26, alex73, laeg, Gucci76, RomanYS, Ненавижу 1С, 2S, p-soft
| ☑ |
|
0
kogotaz
04.05.26
✎
16:12
|
На всякий случай: конфигурация нетиповая, УФ.
Есть регистр сведений, регистратору не подчинен. Доступ к записям разграничивается RLS. Пишу серверную процедуру, которая вызывается пользователем. Суть - чтобы пользователь удалил все "свои" записи (которые ему доступны).
Код такой, и вроде бы работает:
Выборка = РегистрыСведений.НазваниеРегистраСведений.Выбрать();
Пока Выборка.Следующий() Цикл
Выборка.ПолучитьМенеджерЗаписи().Удалить();
КонецЦикла;
Но работает только в случае, если в регистре нет "чужих" записей. Если же есть:
Ошибка при вызове метода контекста (Следующий)
Причина: У пользователя недостаточно прав на исполнение операции над базой данных.
|
|
|
1
Radion
04.05.26
✎
16:15
|
(0) может через запрос проще "ВЫБРАТЬ РАЗРЕШЕННЫЕ"
|
|
|
2
X Leshiy
04.05.26
✎
16:15
|
(1) Опередил)
|
|
|
3
paramedic
04.05.26
✎
16:16
|
Делайте выборку запросом с инструкцией РАЗРЕШЕННЫЕ (более правильно)
Ну или обертывайте удаление в Попытку (по тупому).
|
|
|
4
kogotaz
04.05.26
✎
16:28
|
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ РАЗРЕШЕННЫЕ * ИЗ РегистрСведений.НазваниеРегистраСведений";
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
Выборка.ПолучитьМенеджерЗаписи().Удалить();
КонецЦикла;
Метод объекта не обнаружен (ПолучитьМенеджерЗаписи)
|
|
|
5
kogotaz
04.05.26
✎
16:36
|
Что тут вместо менеджера записи использовать?
|
|
|
6
paramedic
04.05.26
✎
16:36
|
(4) Естественно. Откуда в выборке запроса менеджер записи.
Вы создаете менеджер записи, заносите в него измерения и удаляете.
|
|
|
7
kogotaz
04.05.26
✎
16:39
|
И еще вопрос, лучше ВЫБРАТЬ РАЗРЕШЕННЫЕ или писать условием?
|
|
|
8
paramedic
04.05.26
✎
16:40
|
(7) Если у вас RLS, то РАЗРЕШЕННЫЕ.
|
|
|
9
kogotaz
04.05.26
✎
16:44
|
(8) Спасибо.
|
|
|
10
timurhv
04.05.26
✎
16:55
|
(0) можно случайно не ту роль дать пользователю и весь регистр грохнет? :)
|
|
|
11
kogotaz
04.05.26
✎
17:23
|
И всё-таки не могу понять, что делать после запроса...
|
|
|
12
Волшебник
04.05.26
✎
17:24
|
(11) Вам ещё рано удалять записи из регистра.
|
|
|
13
timurhv
04.05.26
✎
17:30
|
|
|
|
14
kogotaz
04.05.26
✎
17:49
|
(13) Работает. Но код дурацкий какой-то.
|
|
|
15
timurhv
04.05.26
✎
18:00
|
(14) Можно так:
УдаляемыеЗаписи = Запрос.Выполнить().Выгрузить();
Если НЕ УдаляемыеЗаписи.Количество() = 0 Тогда
НаборЗаписей = РегистрыСведений.НазваниеРегистраСведений.СоздатьНаборЗаписей();
НаборЗаписей.Загрузить(УдаляемыеЗаписи);
НаборЗаписей.Записать(РежимЗамещения.Удаление);
КонецЕсли;
|
|
|
16
Волшебник
04.05.26
✎
18:06
|
(15) это шутка?
|
|
|
17
timurhv
04.05.26
✎
18:10
|
(16) нет, новый способ удаления из регистров, чтобы не выполнять в цикле. Регистр в (0) независимый, поэтому РасширенныеРежимыЗамещения можно не указывать
https://wonderland.v8.1c.ru/blog/novye-rezhimy-zapisi-podchinennykh-registrov-svedeniy-i-registrov-nakopleniya/
|
|
|
18
kogotaz
04.05.26
✎
18:32
|
(15) Для справки. Не работает. Ошибка при вызове метода контекста (Загрузить) - Несоответствие типов (параметр номер '1').
|
|
|
19
timurhv
04.05.26
✎
18:42
|
(18) УдаляемыеЗаписи - массив чтоли?
|
|
|
20
kogotaz
04.05.26
✎
18:48
|
(19) Вот код.
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ РАЗРЕШЕННЫЕ * ИЗ РегистрСведений.НазваниеРегистраСведений";
УдаляемыеЗаписи = Запрос.Выполнить().Выбрать();
НаборЗаписей = РегистрыСведений.НазваниеРегистраСведений.СоздатьНаборЗаписей();
НаборЗаписей.Загрузить(УдаляемыеЗаписи);
НаборЗаписей.Записать(РежимЗамещения.Удаление);
|
|
|
21
X Leshiy
04.05.26
✎
18:49
|
(20) рукалицо.jpg
|
|
|
22
X Leshiy
04.05.26
✎
18:50
|
Пытаться загрузить выборку это пять)
Правильно было в (12) сказано)
|
|
|
23
kogotaz
04.05.26
✎
18:51
|
Точно. В (15) же выгрузить...
|
|