Платформа: 1С:Предприятие 8.3 (8.3.8.2322)
Конфигурация: "Управление торговлей для Украины", редакция 2.3.
Разработка конфигурации: "ABBYY Ukraine", 2003-2009
(2.3.11.1)
Добрый день. Столкнулись с такой проблемой. Необходимо закрыть доступ на просмотр всех цен, кроме одной. Сделали следующим образом, через RLS в регистре сведений "ЦеныНоменклатуры" оставили право чтение на определённой роли и в нём добавили ограничение вида:
ГДЕ ТипЦен.Код <> "000000005" И ТипЦен.Код <> "000000002" И ТипЦен.Код <> "000000001" И ТипЦен.Код <> "УТ0000001" И ТипЦен.Код <> "000000008"
. Вроде всё. Но вот тут и вылазят ошибки.{ОбщийМодуль.Ценообразование.Модуль(631)}: Ошибка при вызове метода контекста (Выполнить)
Выборка = Запрос.Выполнить().Выбрать();
по причине:
Ошибка выполнения запроса
по причине:
У пользователя недостаточно прав на исполнение операции над базой данных.
Запрос.Текст = Запрос.Текст + "
|ВНУТРЕННЕЕ СОЕДИНЕНИЕ
| Справочник.Номенклатура КАК сНоменклатура
|ПО
| сНоменклатура.Ссылка = ЦеныНоменклатурыСрезПоследних.Номенклатура
|ГДЕ
| сНоменклатура.Ссылка = &Номенклатура
|УПОРЯДОЧИТЬ ПО
| ЦеныНоменклатурыСрезПоследних.ХарактеристикаНоменклатуры УБЫВ
|";
ВЫБРАТЬ разрешенные
в запросе есть ?
sava1 @ Сегодня, 13:09
,
нет.
Причем сейчас решил пошагово пройти и как я понял, саму номенклатуру он добавляет и вытаскивает цену и сумму, а потом происходит обход по услугам и ступар. Но только почему он не добавляет эту сумму и скидку в табличную часть.
r1p88@mail.ru @ Today, 13:21
,
Ставим точку останова на строке
Выборка = Запрос.Выполнить().Выбрать();
ВЫБРАТЬ ПЕРВЫЕ 1
ЦеныНоменклатурыСрезПоследних.Цена КАК Цена,
ВЫБОР КОГДА сНоменклатура.Услуга И ЦеныНоменклатурыСрезПоследних.ЕдиницаИзмерения = ЗНАЧЕНИЕ(Справочник.ЕдиницыИзмерения.ПустаяСсылка)
ТОГДА сНоменклатура.ЕдиницаХраненияОстатков
ИНАЧЕ ЦеныНоменклатурыСрезПоследних.ЕдиницаИзмерения
КОНЕЦ КАК ЕдиницаИзмерения,
ЦеныНоменклатурыСрезПоследних.Валюта
ИЗ
РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&Дата, Номенклатура = &Номенклатура
И ТипЦен = &ТипЦен И ХарактеристикаНоменклатуры В (&ХарактеристикиНоменклатуры)
) КАК ЦеныНоменклатурыСрезПоследних
ВНУТРЕННЕЕ СОЕДИНЕНИЕ
Справочник.Номенклатура КАК сНоменклатура
ПО
сНоменклатура.Ссылка = ЦеныНоменклатурыСрезПоследних.Номенклатура
ГДЕ
сНоменклатура.Ссылка = &Номенклатура
УПОРЯДОЧИТЬ ПО
ЦеныНоменклатурыСрезПоследних.ХарактеристикаНоменклатуры УБЫВ
r1p88@mail.ru @ Today, 13:38
,
Вместо
ВЫБРАТЬ ПЕРВЫЕ 1
ВЫБРАТЬ РАЗРЕШЕННЫЕ ПЕРВЫЕ 1
Petre @ Сегодня, 13:47
,
та же самая ошибка вылазит
Petre @ Сегодня, 13:47
,
всё. Вроде ушла ошибка. Чуть позже буду проверять на рабочей базе, потом скажу что к чему. Пока спасибо за помощь.
Теперь появилась другая ошибка.
{ОбщийМодуль.МойПривилигированный.Модуль(338)}: Ошибка при вызове метода контекста (Выполнить)
РезультатЗапроса = Запрос.Выполнить();
по причине:
Ошибка выполнения запроса
по причине:
У пользователя недостаточно прав на исполнение операции над базой данных.
r1p88@mail.ru, решение влезть с этим в RLS, на мой взгляд, плохое. Потому что теперь во всех запросах в программе, в которых есть обращение к типам цен, надо будет вставлять РАЗРЕШЕННЫЕ. Я бы это как-то по другому делал.
r1p88@mail.ru, если бы вы озвучили задачу, можно было бы подумать. А так не понятно зачем вы сделали то, что здесь описываете.
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua