Имя: Пароль:
1C
1С v8
Как понять - каких прав не достает?
0 KindLion
 
29.10.12
14:34
Друзья мои, как вы разруливаете ситуацию, когда получаете сообщение:
"Ошибка выполнения запроса
по причине:
У пользователя недостаточно прав на исполнение операции над базой данных."
Отладчик, естественно отправляет на строку типа Запрос.Выполнить()
Обычно я по тексту запроса вычисляю объекты, к которым обращается запрос, и анализирую наличие прав на каждый из объектов у данного пользователя.
Но тут что-то уж оч. тяжелый случай - Книга продаж по пост. 1137 в комплексной автоматизации.
Вычислил кусок текста запроса, на котором не хватает прав.
Вот он:
|        ОБЪЕДИНИТЬ ВСЕ
|        
|        ВЫБРАТЬ
|            ВЫБОР
|                КОГДА (СчетФактураВыданный.Ссылка.ВидСчетаФактуры = ЗНАЧЕНИЕ(Перечисление.ВидСчетаФактурыВыставленного.НаАванс)
|                        ИЛИ СчетФактураВыданный.Ссылка.ВидСчетаФактуры = ЗНАЧЕНИЕ(Перечисление.ВидСчетаФактурыВыставленного.НалоговыйАгент))
|                        И СчетФактураВыданный.Ссылка.Исправление
|                    ТОГДА СчетФактураВыданный.Ссылка
|                КОГДА СчетФактураВыданный.Ссылка.ВидСчетаФактуры = ЗНАЧЕНИЕ(Перечисление.ВидСчетаФактурыВыставленного.НаРеализацию)
|                        И СчетФактураВыданный.ДокументОснование ССЫЛКА Документ.ОтчетКомиссионераОПродажах
|                    ТОГДА ВЫБОР
|                            КОГДА СчетФактураВыданный.Ссылка.Контрагент = СчетФактураВыданный.ДокументОснование.Контрагент
|                                ТОГДА СчетФактураВыданный.ДокументОснование
|                            ИНАЧЕ СчетФактураВыданный.Ссылка
|                        КОНЕЦ
|                ИНАЧЕ СчетФактураВыданный.ДокументОснование
|            КОНЕЦ,
|            ВЫБОР
|                КОГДА СчетФактураВыданный.Ссылка.ВидСчетаФактуры = ЗНАЧЕНИЕ(Перечисление.ВидСчетаФактурыВыставленного.Корректировочный)
|                        ИЛИ СчетФактураВыданный.Ссылка.Исправление
|                    ТОГДА СчетФактураВыданный.Ссылка.НомерИсходногоДокумента
|                ИНАЧЕ СчетФактураВыданный.Ссылка.Номер
|            КОНЕЦ,
|            ВЫБОР
|                КОГДА СчетФактураВыданный.Ссылка.ВидСчетаФактуры = ЗНАЧЕНИЕ(Перечисление.ВидСчетаФактурыВыставленного.Корректировочный)
|                        ИЛИ СчетФактураВыданный.Ссылка.Исправление
|                    ТОГДА СчетФактураВыданный.Ссылка.ДатаИсходногоДокумента
|                ИНАЧЕ СчетФактураВыданный.Ссылка.Дата
|            КОНЕЦ,
|            СчетФактураВыданный.Ссылка,
|            ВЫБОР
|                КОГДА СчетФактураВыданный.Ссылка.ВидСчетаФактуры = ЗНАЧЕНИЕ(Перечисление.ВидСчетаФактурыВыставленного.НаАванс)
|                    ТОГДА ИСТИНА
|                ИНАЧЕ ЛОЖЬ
|            КОНЕЦ,
|            ВЫБОР
|                КОГДА СчетФактураВыданный.Ссылка.ВидСчетаФактуры = ЗНАЧЕНИЕ(Перечисление.ВидСчетаФактурыВыставленного.НаСуммовуюРазницу)
|                    ТОГДА ИСТИНА
|                ИНАЧЕ ЛОЖЬ
|            КОНЕЦ,
|            ВЫБОР
|                КОГДА СчетФактураВыданный.Ссылка.ВидСчетаФактуры = ЗНАЧЕНИЕ(Перечисление.ВидСчетаФактурыВыставленного.НаАванс)
|                    ТОГДА ЕСТЬNULL(Авансы.СтавкаНДС, НЕОПРЕДЕЛЕНО)
|                КОГДА СчетФактураВыданный.Ссылка.ВидСчетаФактуры = ЗНАЧЕНИЕ(Перечисление.ВидСчетаФактурыВыставленного.НаСуммовуюРазницу)
|                    ТОГДА СчетФактураВыданный.Ссылка.СтавкаНДС
|                ИНАЧЕ НЕОПРЕДЕЛЕНО
|            КОНЕЦ,
|            ВЫБОР
|                КОГДА НЕ(СчетФактураВыданный.Ссылка.ВидСчетаФактуры = ЗНАЧЕНИЕ(Перечисление.ВидСчетаФактурыВыставленного.НаРеализацию)
|                            ИЛИ СчетФактураВыданный.Ссылка.ВидСчетаФактуры = ЗНАЧЕНИЕ(Перечисление.ВидСчетаФактурыВыставленного.НаСуммовуюРазницу)
|                            ИЛИ СчетФактураВыданный.Ссылка.ВидСчетаФактуры = ЗНАЧЕНИЕ(Перечисление.ВидСчетаФактурыВыставленного.Корректировочный))
|                    ТОГДА СчетФактураВыданный.Ссылка.ДоговорКонтрагента
|                ИНАЧЕ НЕОПРЕДЕЛЕНО
|            КОНЕЦ,
|            3,
|            СчетФактураВыданный.Ссылка,
|            СчетФактураВыданный.Ссылка.Контрагент
|        ИЗ
|            Документ.СчетФактураВыданный.ДокументыОснования КАК СчетФактураВыданный
|                ЛЕВОЕ СОЕДИНЕНИЕ Документ.СчетФактураВыданный.Авансы КАК Авансы
|                ПО СчетФактураВыданный.Ссылка = Авансы.Ссылка
|        ГДЕ
|            СчетФактураВыданный.Ссылка.Проведен
|            И НЕ СчетФактураВыданный.Ссылка.ПометкаУдаления
|            И СчетФактураВыданный.Ссылка.Организация В(&Организация)
|        
|        ОБЪЕДИНИТЬ ВСЕ
|        
|        ВЫБРАТЬ
|            ВЫБОР
|                КОГДА СчетФактураПолученный.Ссылка.ВидСчетаФактуры = ЗНАЧЕНИЕ(Перечисление.ВидСчетаФактурыПолученного.НаАванс)
|                        И СчетФактураПолученный.Ссылка.Исправление
|                    ТОГДА СчетФактураПолученный.Ссылка
|                ИНАЧЕ СчетФактураПолученный.ДокументОснование
|            КОНЕЦ,
|            ВЫБОР
|                КОГДА СчетФактураПолученный.Ссылка.ВидСчетаФактуры = ЗНАЧЕНИЕ(Перечисление.ВидСчетаФактурыПолученного.Корректировочный)
|                    ТОГДА СчетФактураПолученный.Ссылка.НомерИсходногоДокумента
|                ИНАЧЕ СчетФактураПолученный.Ссылка.НомерВходящегоДокумента
|            КОНЕЦ,
|            ВЫБОР
|                КОГДА СчетФактураПолученный.Ссылка.ВидСчетаФактуры = ЗНАЧЕНИЕ(Перечисление.ВидСчетаФактурыПолученного.Корректировочный)
|                    ТОГДА СчетФактураПолученный.Ссылка.ДатаИсходногоДокумента
|                ИНАЧЕ СчетФактураПолученный.Ссылка.ДатаВходящегоДокумента
|            КОНЕЦ,
|            СчетФактураПолученный.Ссылка,
|            ВЫБОР
|                КОГДА СчетФактураПолученный.Ссылка.ВидСчетаФактуры = ЗНАЧЕНИЕ(Перечисление.ВидСчетаФактурыПолученного.НаАванс)
|                    ТОГДА ИСТИНА
|                ИНАЧЕ ЛОЖЬ
|            КОНЕЦ,
|            ЛОЖЬ,
|            ВЫБОР
|                КОГДА СчетФактураПолученный.Ссылка.ВидСчетаФактуры = ЗНАЧЕНИЕ(Перечисление.ВидСчетаФактурыПолученного.НаАванс)
|                    ТОГДА ЕСТЬNULL(Авансы.СтавкаНДС, НЕОПРЕДЕЛЕНО)
|                ИНАЧЕ НЕОПРЕДЕЛЕНО
|            КОНЕЦ,
|            ВЫБОР
|                КОГДА СчетФактураПолученный.Ссылка.ВидСчетаФактуры = ЗНАЧЕНИЕ(Перечисление.ВидСчетаФактурыПолученного.НаАванс)
|                    ТОГДА СчетФактураПолученный.Ссылка.ДоговорКонтрагента
|                ИНАЧЕ НЕОПРЕДЕЛЕНО
|            КОНЕЦ,
|            5,
|            СчетФактураПолученный.Ссылка,
|            СчетФактураПолученный.Ссылка.Контрагент
|        ИЗ
|            Документ.СчетФактураПолученный.ДокументыОснования КАК СчетФактураПолученный
|                ЛЕВОЕ СОЕДИНЕНИЕ Документ.СчетФактураПолученный.Авансы КАК Авансы
|                ПО СчетФактураПолученный.Ссылка = Авансы.Ссылка
|        ГДЕ
|            СчетФактураПолученный.Ссылка.Проведен
|            И НЕ СчетФактураПолученный.Ссылка.ПометкаУдаления
|            И СчетФактураПолученный.Ссылка.Организация В(&Организация)
|            И НЕ СчетФактураПолученный.ДокументОснование ССЫЛКА Документ.ОтчетКомитентуОПродажах

Что делать дальше? - непонятно. Помогите, плиз, советом - как найти - каких прав не достает у пользователя?
1 Beduin
 
29.10.12
14:34
(0) Журнал регистрации открываешь и смотришь к каким таблицам блок.
2 zmaximka
 
29.10.12
14:35
в журнале регистрации посмотреть
3 pumbaEO
 
29.10.12
14:37
Читаем СП, потом настраиваем журнал регистрации и смотрим.
4 Maxus43
 
29.10.12
14:38
да, 1сники не ищут лёгких путей. надо всё через опу искать)
(0) ну ты ещё норм, один тут в скл запросы полез, еле уговорили в ЖР посмотреть
5 KindLion
 
29.10.12
14:39
(3) - ОК. Готов прочитать СП и посмотреть ж.регистрации.
Какой раздел СП почитать, не подскажешь?
6 5 Элемент
 
29.10.12
14:50
Глобальный контекст (Global context)
УстановитьИспользованиеСобытияЖурналаРегистрации (SetEventLogEventUse)
Синтаксис:

УстановитьИспользованиеСобытияЖурналаРегистрации(<ИмяСобытия>, <Использование>)
7 KindLion
 
29.10.12
14:58
Ребята, спасибо большое, разобрался!
8 KindLion
 
30.10.12
12:07
Ох, погорячился я с (7).
Неприятно, но надо признаваться - не все так гладко прошло.
Первые пару затыков ограничения я снял легко.
Но потом в журнале регистрации вылезло: отсутствует доступ на чтение - и куча документов.
См. https://docs.google.com/open?id=0B8cO9ZZs4P23Y3Jkb2x3Y3hPcTA
При этом - у данного пользователя есть доступ на каждый из этих типов документов.
В чем может быть дело, не подскажете?
9 KindLion
 
30.10.12
14:01
? Нет вариантов?
10 Stim
 
30.10.12
14:04
журнал регистрации смотреть. почему никто не сказал?
11 KindLion
 
30.10.12
14:05
(10) сказали.
Смотрю.
(9) - Это уже из ж.регистрации информация
12 GANR
 
30.10.12
14:07
(0) На худой конец...
Для Каждого ОбъектМетаданных ИЗ Метаданные.Документы Цикл
   Если Не ПравоДоступа("Чтение", ОбъектМетаданных) Тогда
       Текст = "ru = ""Доступ к документу """ + ОбъектМетаданных.Имя + """ закрыт!"";"
       + " en = ""Access denied!""";
       Предупреждение(НСтр(Текст));
   КонецЕсли;
КонецЦикла;
13 KindLion
 
30.10.12
14:12
(12) спасибо.
Но, мне кажется, не в этом дело.
Ведь любой из этих типов документов пользователь может открыть в интерактивном режиме.
Почему же тогда отчет на это ругается?.. непонятно.. :(
14 shuhard
 
30.10.12
14:25
(13) дружок, а отчет у тебя часом не на СКД ?
15 KindLion
 
30.10.12
14:29
(14) - нет, дружок.
Обычный типовой от КА (подозреваю, что такой же в УПП) - книга продаж по постановлению 1137
16 KindLion
 
30.10.12
15:27
Друзья мои, СПАСИБО ВСЕМ, желавшим помочь.
Разобрался окончательно.

На будущее, может, кому пригодится.
Если вы устранили все препятствия на пути к нормальному построению запроса (есть права на чтение ко всем необходимым таблицам), а в журнале регистрации все равно ругается на все мыслимые таблицы, участвующие в запросе, попробуйте добавить ключевое слово РАЗРЕШЕННЫЕ в текст запроса.
:)
Посыпаю голову пеплом. Так долго долбался...
17 GANR
 
30.10.12
17:33
(16) Если бы в (0) спросил "как выбрать разрешенные" - в первом же сообщении ответ получил бы.