Как запустить функцию НайтиПомеченныеНаУдаление() от обычного пользователя? #643435


#0 by xintrea
Здравствуйте! Есть обычный пользователь, к некоторым подсистемам имеет доступ, к некоторым не имеет. Задача - дать возможность пользователю удалять объекты, помеченные на удаление, в пределах его прав. Если вызвать функцию НайтиПомеченныеНаУдаление, то возникает ошибка: {ОбщийМодуль.ОсновнойМодуль.Модуль}: Ошибка при вызове метода контекста (НайтиПомеченныеНаУдаление) Помеченные = НайтиПомеченныеНаУдаление; по причине: У пользователя недостаточно прав на исполнение операции над базой данных. объект: 'Справочник.РазделыПроектовРазработкиДокументации'; право: 'Чтение' Таблица: 'Reference208', SDBL-команда: 'SELECT'. То есть, пользователь не имеет доступа к справочнику РазделыПроектовРазработкиДокументации (этот справочник принадлежит подсистеме, с которой данный пользователь работать не должен). Так настроены права, так нужно. Но это же не должно обозначать, что вообще нельзя выполнить поиск помеченных на удаление объектов, в пределах прав пользователя! Вопрос: как получить объекты, помеченные на удаление, и доступные для удаления пользователю?
#1 by ParinovS
Я бы посоветовал обходить все метаданные через попытку.
#2 by H A D G E H O G s
СП украли? УстановитьПривилегированныйРежим
#3 by Heckfy
Не то. Ему не все помеченные надо, а только в рамках дозволенного пользователю.
#4 by H A D G E H O G s
Ну потом пусть шерстит массив ссылок на право чтения.
#5 by H A D G E H O G s
Если rls на уровне метаданных - ПравоДоступа Если rls на уровне данных - в попытке: ОбщегоНазначения.ПолучитьЗначениеРеквизита(ЭлементМассива,"Ссылка"). Как то так наверное.
#6 by xintrea
> Я бы посоветовал обходить все метаданные через попытку. Есть какой-нибудь пример кода?
#7 by xintrea
Откуда взять это массив ссылок? Можно пример кода?
#8 by H A D G E H O G s
МассивСсылок=НайтиПомеченныеНаУдаление;
#9 by xintrea
Так в том-то и дело, что функция НайтиПомеченныеНаУдаление: - отрабатывает нормально только в случае, если доступны ВСЕ объекты; - генерирует ошибку времени исполнения, которую я привел в топике, если нет прав хотя бы на один объект. Так что так просто получиить массив помеченных объектов нельзя. Вот я и спрашиваю, как можно обходным путём получить такой массив.
#10 by Heckfy
Не понимает он тебя. :( Вот пример кода обхода всех справочников с выводом количества записей:
#11 by suvolod
Перебери метаданные. Вот кусок типового кода, который позволяет строить реестр только по разрешенным документам: код, который взял из типового отчета "Реестр документов" // Создает список значений, содержащий виды документов существующих в системе,
#12 by banco
УстановитьПривилегированныйРежим получить массив ссылок потом отключить привилегириванный режим и запросом разрешенные получить
#13 by Aleksey
Но ведь типовая как то получает же без плясок с бубном?
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С