![]() |
![]() |
![]() |
|
Проблема доступа пользователя к контактной информации клиента(УТ 10) | ☑ | ||
---|---|---|---|---|
0
live in sky dreams
03.06.16
✎
18:31
|
Есть процедура в общем модуле (типовая, ничего не изменял)
Процедура ПрочитатьКонтактнуюИнформацию(НаборЗаписей, Ссылка) Экспорт Если ТипЗнч(НаборЗаписей) <> Тип("РегистрСведенийНаборЗаписей.КонтактнаяИнформация") Тогда НаборЗаписей = РегистрыСведений.КонтактнаяИнформация.СоздатьНаборЗаписей(); Иначе НаборЗаписей.Очистить(); КонецЕсли; НаборЗаписей.Отбор.Объект.Значение = Ссылка; НаборЗаписей.Отбор.Объект.Использование = Истина; Запрос = Новый Запрос; Запрос.Текст = " |ВЫБРАТЬ РАЗРЕШЕННЫЕ | ВложенныйЗапрос.Вид КАК Вид, | ВложенныйЗапрос.Тип КАК Тип, | ВложенныйЗапрос.Объект КАК Объект, | МАКСИМУМ(ВложенныйЗапрос.Поле1) КАК Поле1, | МАКСИМУМ(ВложенныйЗапрос.Поле2) КАК Поле2, | МАКСИМУМ(ВложенныйЗапрос.Поле3) КАК Поле3, | МАКСИМУМ(ВложенныйЗапрос.Поле4) КАК Поле4, | МАКСИМУМ(ВложенныйЗапрос.Поле5) КАК Поле5, | МАКСИМУМ(ВложенныйЗапрос.Поле6) КАК Поле6, | МАКСИМУМ(ВложенныйЗапрос.Поле7) КАК Поле7, | МАКСИМУМ(ВложенныйЗапрос.Поле8) КАК Поле8, | МАКСИМУМ(ВложенныйЗапрос.Поле9) КАК Поле9, | МАКСИМУМ(ВложенныйЗапрос.Поле10) КАК Поле10, | МАКСИМУМ(ВложенныйЗапрос.Представление) КАК Представление, | МАКСИМУМ(ВложенныйЗапрос.Комментарий) КАК Комментарий, | МАКСИМУМ(ВложенныйЗапрос.ЗначениеПоУмолчанию) КАК ЗначениеПоУмолчанию, | МАКСИМУМ(ВложенныйЗапрос.ТипДома) КАК ТипДома, | МАКСИМУМ(ВложенныйЗапрос.ТипКорпуса) КАК ТипКорпуса, | МАКСИМУМ(ВложенныйЗапрос.ТипКвартиры) КАК ТипКвартиры |ИЗ | (ВЫБРАТЬ | &Объект КАК Объект, | ВидыКонтактнойИнформации.Тип КАК Тип, | ВидыКонтактнойИнформации.Ссылка КАК Вид, | """" КАК Представление, | """" КАК Поле1, | """" КАК Поле2, | """" КАК Поле3, | """" КАК Поле4, | """" КАК Поле5, | """" КАК Поле6, | """" КАК Поле7, | """" КАК Поле8, | """" КАК Поле9, | """" КАК Поле10, | """" КАК Комментарий, | ЛОЖЬ КАК ЗначениеПоУмолчанию, | ЗНАЧЕНИЕ(Перечисление.ТипыДомов.ПустаяСсылка) КАК ТипДома, | ЗНАЧЕНИЕ(Перечисление.ТипыКорпусов.ПустаяСсылка) КАК ТипКорпуса, | ЗНАЧЕНИЕ(Перечисление.ТипыКвартир.ПустаяСсылка) КАК ТипКвартиры | ИЗ | Справочник.ВидыКонтактнойИнформации КАК ВидыКонтактнойИнформации | ГДЕ | (НЕ ВидыКонтактнойИнформации.ПометкаУдаления) | И ВидыКонтактнойИнформации.ВидОбъектаКонтактнойИнформации = &ВидОбъектаКонтактнойИнформации | | ОБЪЕДИНИТЬ | | ВЫБРАТЬ | РегистрСведенийКонтактнаяИнформация.Объект, | РегистрСведенийКонтактнаяИнформация.Тип, | РегистрСведенийКонтактнаяИнформация.Вид, | ВЫРАЗИТЬ(РегистрСведенийКонтактнаяИнформация.Представление КАК СТРОКА(1000)), | РегистрСведенийКонтактнаяИнформация.Поле1, | РегистрСведенийКонтактнаяИнформация.Поле2, | РегистрСведенийКонтактнаяИнформация.Поле3, | РегистрСведенийКонтактнаяИнформация.Поле4, | РегистрСведенийКонтактнаяИнформация.Поле5, | РегистрСведенийКонтактнаяИнформация.Поле6, | РегистрСведенийКонтактнаяИнформация.Поле7, | РегистрСведенийКонтактнаяИнформация.Поле8, | РегистрСведенийКонтактнаяИнформация.Поле9, | РегистрСведенийКонтактнаяИнформация.Поле10, | ВЫРАЗИТЬ(РегистрСведенийКонтактнаяИнформация.Комментарий КАК СТРОКА(1000)), | РегистрСведенийКонтактнаяИнформация.ЗначениеПоУмолчанию, | РегистрСведенийКонтактнаяИнформация.ТипДома КАК ТипДома, | РегистрСведенийКонтактнаяИнформация.ТипКорпуса КАК ТипКорпуса, | РегистрСведенийКонтактнаяИнформация.ТипКвартиры КАК ТипКвартиры | ИЗ | РегистрСведений.КонтактнаяИнформация КАК РегистрСведенийКонтактнаяИнформация | ГДЕ | РегистрСведенийКонтактнаяИнформация.Объект = &Объект) КАК ВложенныйЗапрос | |СГРУППИРОВАТЬ ПО | ВложенныйЗапрос.Вид, | ВложенныйЗапрос.Тип, | ВложенныйЗапрос.Объект | |УПОРЯДОЧИТЬ ПО | Представление УБЫВ, | ВложенныйЗапрос.Тип.Порядок, | Вид"; Запрос.УстановитьПараметр("ВидОбъектаКонтактнойИнформации", ВидОбъектаКИ(Ссылка)); Запрос.УстановитьПараметр("Объект", Ссылка); ТабЗн = Запрос.Выполнить().Выгрузить(); Для Каждого стр Из ТабЗн Цикл стр.Представление = СокрП(стр.Представление); стр.Комментарий = СокрП(стр.Комментарий); КонецЦикла; НаборЗаписей.Загрузить(ТабЗн); КонецПроцедуры Она вызывается из формы элемента справочника контрагента. Под полными правами отрабатывает нормально. Если захожу менеджером - то происходит непонятная фигня, а именно: спотыкается на НаборЗаписей.Отбор.Объект.Значение = Ссылка; с текстом ошибки "У пользователя недостаточно прав на исполнение операции над базой данных". То есть до запроса даже не доходит. Пользователю получается запрещено менять отбор??? Но если открыть элемент справочника "Контрагенты", то процедура отрабатывает нормально. Понимаю, что проблема в передаваемых параметрах. Но в чем именно? Тип значения параметров соответствует. В параметре "Ссылка" передается ссылка на контрагента, к которому пользователь имеет доступ. Что то не так с "НаборЗаписей" получается... Смотрел в отладчике - Тип("РегистрСведенийНаборЗаписей.КонтактнаяИнформация") в обоих случаях. Что еще проверить? |
|||
1
live in sky dreams
03.06.16
✎
18:32
|
"Она вызывается из формы элемента справочника контрагента." = "Она вызывается из формы элемента справочника контрагента и из моей обработки"
|
|||
2
live in sky dreams
03.06.16
✎
18:40
|
Блин... одинаково все... что за фигня..
|
|||
3
live in sky dreams
04.06.16
✎
09:48
|
апну чтоли
|
|||
4
mistеr
04.06.16
✎
11:11
|
(0) >То есть до запроса даже не доходит.
Платформа может выполнять неявные запросы. >одинаково все... что за фигня.. Значит не все. может параметры сеанса? |
|||
5
live in sky dreams
04.06.16
✎
11:36
|
(4) вот неявные запросы, только не могу его понять..
#Если &ИспользоватьОграниченияПравДоступаНаУровнеЗаписей #Тогда ТекущаяТаблица ИЗ РегистрСведений.КонтактнаяИнформация КАК ТекущаяТаблица ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ РАЗЛИЧНЫЕ СоставГруппы.Ссылка КАК ГруппаПользователей ИЗ Справочник.ГруппыПользователей.ПользователиГруппы КАК СоставГруппы ГДЕ СоставГруппы.Пользователь = &ТекущийПользователь) КАК ГруппыПользователей ПО (&ИспользоватьОграниченияПравДоступаНаУровнеЗаписей) ГДЕ (&ИспользоватьОграниченияПравДоступаНаУровнеЗаписей = ЛОЖЬ ИЛИ (НЕ 1 В (ВЫБРАТЬ ПЕРВЫЕ 1 1 КАК ПолеОтбора ИЗ РегистрСведений.НазначениеВидовОбъектовДоступа КАК НазначениеВидовОбъектовДоступа ГДЕ НазначениеВидовОбъектовДоступа.ГруппаПользователей = ГруппыПользователей.ГруппаПользователей И ВЫБОР КОГДА НазначениеВидовОбъектовДоступа.ВидОбъектаДоступа = ЗНАЧЕНИЕ(Перечисление.ВидыОбъектовДоступа.Контрагенты) И НЕ ТекущаяТаблица.Объект ССЫЛКА Справочник.Пользователи ТОГДА ВЫБОР КОГДА (НЕ 1 В (ВЫБРАТЬ ПЕРВЫЕ 1 1 ИЗ ( ВЫБРАТЬ Ссылка, Ссылка КАК Контрагент ИЗ Справочник.Контрагенты ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ Ссылка, Владелец КАК Контрагент ИЗ Справочник.ДоговорыКонтрагентов ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ Ссылка, Владелец КАК Контрагент ИЗ Справочник.КонтактныеЛицаКонтрагентов ) ОбъектыДоступа ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Контрагенты КАК Контрагенты ПО Контрагенты.Ссылка = ОбъектыДоступа.Контрагент ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.НастройкиПравДоступаПользователей КАК НастройкиПравДоступаПользователей ПО НастройкиПравДоступаПользователей.ОбъектДоступа = Контрагенты.ГруппаДоступаККонтрагенту И НастройкиПравДоступаПользователей.ВидОбъектаДоступа = ЗНАЧЕНИЕ(Перечисление.ВидыОбъектовДоступа.Контрагенты) И (НастройкиПравДоступаПользователей.Пользователь = НазначениеВидовОбъектовДоступа.ГруппаПользователей ИЛИ НастройкиПравДоступаПользователей.Пользователь = ЗНАЧЕНИЕ(Справочник.ГруппыПользователей.ВсеПользователи)) ГДЕ ОбъектыДоступа.Ссылка = ТекущаяТаблица.Объект И НастройкиПравДоступаПользователей.ОбластьДанных ЕСТЬ NULL )) ТОГДА ИСТИНА ИНАЧЕ ЛОЖЬ КОНЕЦ КОГДА НазначениеВидовОбъектовДоступа.ВидОбъектаДоступа = ЗНАЧЕНИЕ(Перечисление.ВидыОбъектовДоступа.Организации) И НЕ ТекущаяТаблица.Объект ССЫЛКА Справочник.Пользователи ТОГДА ВЫБОР КОГДА (НЕ 1 В (ВЫБРАТЬ ПЕРВЫЕ 1 1 ИЗ ( ВЫБРАТЬ Ссылка, Ссылка КАК Организация ИЗ Справочник.Организации ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ Ссылка, Организация ИЗ Справочник.ДоговорыКонтрагентов ) ОбъектыДоступа ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Организации КАК Организации ПО Организации.Ссылка = ОбъектыДоступа.Организация ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.НастройкиПравДоступаПользователей КАК НастройкиПравДоступаПользователей ПО НастройкиПравДоступаПользователей.ОбъектДоступа = Организации.Ссылка И НастройкиПравДоступаПользователей.ВидОбъектаДоступа = ЗНАЧЕНИЕ(Перечисление.ВидыОбъектовДоступа.Организации) И (НастройкиПравДоступаПользователей.Пользователь = НазначениеВидовОбъектовДоступа.ГруппаПользователей ИЛИ НастройкиПравДоступаПользователей.Пользователь = ЗНАЧЕНИЕ(Справочник.ГруппыПользователей.ВсеПользователи)) ГДЕ ОбъектыДоступа.Ссылка = ТекущаяТаблица.Объект И НастройкиПравДоступаПользователей.ОбластьДанных ЕСТЬ NULL )) ТОГДА ИСТИНА ИНАЧЕ ЛОЖЬ КОНЕЦ КОГДА ТекущаяТаблица.Объект ССЫЛКА Справочник.Пользователи ТОГДА ВЫБОР КОГДА ТекущаяТаблица.Объект = &ТекущийПользователь ТОГДА ИСТИНА ИНАЧЕ ЛОЖЬ КОНЕЦ ИНАЧЕ ИСТИНА КОНЕЦ = ЛОЖЬ)) И НЕ ГруппыПользователей.ГруппаПользователей ЕСТЬ NULL) #КонецЕсли |
|||
6
live in sky dreams
04.06.16
✎
11:36
|
это рлс на регистр сведений
|
|||
7
live in sky dreams
04.06.16
✎
11:37
|
+(6) КонтактнаяИнформация
|
|||
8
live in sky dreams
04.06.16
✎
11:38
|
(4) Как могут меняться параметры сеанса "ПриОткрытии" или "ПриСоздании" формы элемента Справочника Контрагенты?
Я в модулях ничего такого не нашел |
|||
9
live in sky dreams
04.06.16
✎
11:39
|
Под одним и тем же юзером открываю форму контрагента, перехожу на вкладку КИ - нет ошибок, все нормально редактируется, просматривается.
Открываю свою обработку, из нее вызываю те же процедуры управления КИ, передаю параметры того же вида, что и форма контрагента - фиг вам |
|||
10
live in sky dreams
04.06.16
✎
12:14
|
Хрен пойми почему так, но знаете что помогло?
закоментил в "ПриОткрытии" ЭлементыФормы.ТаблицаФормыКонтактнаяИнформация.ОбновлятьПриИзмененииОтбора = Истина; Этот хвост остался после переделки формы... Но есть один важный момент, в котором я все таки хочу разобраться.... Судя рпо тексту ошибки, это сработала RLS...Но: 1) RLS по идее отключен был.......? http://prntscr.com/bc6qed 2) Каким образом установка автообновления при изменении отбора могла помешать установить значение отбора? По идее взаимосвязанные вещи же |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |