Имя: Пароль:
1C
 
Какие права нужны для ПолучитьОбъект()?
0 IronDemon
 
01.04.08
15:00
Думал что прав "чтения, просмотра и ввода по строке достачно". Ан нет.
Неужели надо право "Изменения"?

Менять ничего в объекте не надо, нужно выполнить экспортную функцию.
1 ТелепатБот
 
гуру
01.04.08
15:00
2 zyto
 
01.04.08
15:01
Теоретически доступ к объекту даёт возможность изменения...
3 IronDemon
 
01.04.08
15:02
Ну так и проверяли бы при записи.
4 nop
 
01.04.08
15:04
интересные грабли
5 Defender aka LINN
 
01.04.08
15:08
(3) А зачем? Если нет права изменять - незачем и объект. ИМХО, логично.
6 iSeRG
 
01.04.08
15:11
А с чего ты взял, что права чтение не достаточно?
7 iSeRG
 
01.04.08
15:12
(5) не логично.
При чем описанная ошибка не воспроизводится
8 nop
 
01.04.08
15:12
(6) можно указать что ПолучаешьОбъект() только для чтения?
9 iSeRG
 
01.04.08
15:14
(8) у всех метод ПолучитьОбъект() одинаковый
10 hhhh
 
01.04.08
15:21
(7) скорее всего вызывается присваивание каких-то реквизитов. Если делаем получить объект, то всегда вызывается раздел основной программы - это который в модуле  ниже всех функций. Там может быть присваивание.
11 eklmn
 
гуру
01.04.08
15:22
Синтаксис:
ПолучитьОбъект()
Возвращаемое значение:
Тип: СправочникОбъект.
Описание:
Получает по ссылке объект, предназначенный для модификации

ПолучитьОбъект() <> Открыть(),Показать()
12 iSeRG
 
01.04.08
15:25
(10) говоришь так как будто уверен.
Для изменения реквизитов достаточно прав чтения
13 IronDemon
 
01.04.08
15:29
(12) Неужели достаточно?
14 IronDemon
 
01.04.08
15:30
(5) RLS ведь во время записи проверяют.
15 iSeRG
 
01.04.08
15:31
(13) для изменения реквизитов полученного объекта (мы про это сейчас говорим), но не для записи
16 IronDemon
 
01.04.08
15:34
(15) Тогда - да
17 IronDemon
 
01.04.08
15:37
Не хватает права "Интерактивное изменение".
Сделали кучу "Интерактивных" а его забыли.
18 iSeRG
 
01.04.08
15:44
(17) проверь еще раз. Права "Чтение" достаточно для ПолучитьОбъект()
19 IronDemon
 
01.04.08
15:47
Запрос = Новый Запрос;
Запрос.Текст = "
|ВЫБРАТЬ РАЗРЕШЕННЫЕ ПЕРВЫЕ 1
|    Документ.Ссылка КАК Документ,
|    Документ.Представление
|ИЗ
|    Документ." + ВидДокумента + " КАК Документ";
РезультатЗапроса = Запрос.Выполнить();
ДокСсылка=0;
Выборка = РезультатЗапроса.Выбрать();
Пока Выборка.Следующий() Цикл
   ДокСсылка=Выборка.Документ;
КонецЦикла;

Если ДокСсылка=0 Тогда
   Возврат;
КонецЕсли;

Сообщить(ДокСсылка);  // работает
ДокОбъект = ДокСсылка.ПолучитьОбъект();  // не работает
20 iSeRG
 
01.04.08
15:49
(19) в типовых дается право "чтение" поз RLS к полям Ссылка, Номер, Дата.
Если в твоей база это так, то твой запрос получит также документ к которым нет доступа.
21 iSeRG
 
01.04.08
15:50
(20) поз RLS = без RLS
22 iSeRG
 
01.04.08
15:51
(21) т.е. надо добавить в выборку еще одно поле которое ограничено RLS
23 IronDemon
 
01.04.08
15:52
(20) RLS "отключен" на многих полях
24 iSeRG
 
01.04.08
15:54
(23) т.е. Ссылка, Номер, Дата без RLS ?
Если да, то в запрос попадают документы к которым доступ частичный.
А ПолучитьОбъект читает из базы все реквизиты, поэтому возникает ошибка
25 IronDemon
 
01.04.08
15:55
(22) Добавил, тоже самое :(
26 iSeRG
 
01.04.08
15:59
(25) Простой способ проверить, что в выборку попадают документы с частичным доступом: в отладчике посмотри Выборка.Документ
Если доступ частичный, то увидишь <объект не найден>
27 IronDemon
 
01.04.08
16:02
Победил.

Разрешил "Добавление", в ограничении "ГДЕ ложь"
ДокОбъект = Документы[ВидДокумента].СоздатьДокумент();

Программно создать объект возможно, ручками - нет.
28 iSeRG
 
01.04.08
16:10
(27) что-то твой последний пост не связан с названием топика.
Ты хотел использовать СоздатьДокумент() с правами на чтение?
29 IronDemon
 
01.04.08
16:17
Нет, мне нужно выполнить экспортную функцию из модуля документов.
А получить её можно из объекта, а объект можно получить разными способами :)

В моем случае проще разрешить программное добавление.
Программист всегда исправляет последнюю ошибку.