Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Запрет на просмотр цен
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 8.3
r1p88@mail.ru
Платформа: 1С:Предприятие 8.3 (8.3.8.2322)
Конфигурация: "Управление торговлей для Украины", редакция 2.3.
Разработка конфигурации: "ABBYY Ukraine", 2003-2009
(2.3.11.1)

Добрый день. Столкнулись с такой проблемой. Необходимо закрыть доступ на просмотр всех цен, кроме одной. Сделали следующим образом, через RLS в регистре сведений "ЦеныНоменклатуры" оставили право чтение на определённой роли и в нём добавили ограничение вида:
ГДЕ ТипЦен.Код <> "000000005" И ТипЦен.Код <> "000000002" И ТипЦен.Код <> "000000001" И ТипЦен.Код <> "УТ0000001" И ТипЦен.Код <> "000000008"
. Вроде всё. Но вот тут и вылазят ошибки.

При создании любого документа, для примера "ЗаказПокупателя", менеджер выбирает Организацию, Контрагента, Договор и делает подбор номенклатуры. В списке номеклатуры всё ок и цены спрятаны, но когда менеджер выбирает номенклатуру, то выдаёт сообщение "Ошибка выполнения запроса".
{ОбщийМодуль.Ценообразование.Модуль(631)}: Ошибка при вызове метода контекста (Выполнить)
        Выборка = Запрос.Выполнить().Выбрать();
по причине:
Ошибка выполнения запроса
по причине:
У пользователя недостаточно прав на исполнение операции над базой данных.


Если нажать "ОК", позиция добавляется в документ, цена проставляется, но нет суммы по номенклатуре и нет автоматической скидки.
Типы цен, которые скрываем все базовые.

Собственно вопрос, что нужно еще изменить, чтобы всё нормально функционировало? Потому что пока не могу понять.
Petre
r1p88@mail.ru @ Today, 12:24 необходимо зарегистрироваться для просмотра ссылки ,
Какой в отладчике текст запроса?
r1p88@mail.ru
Petre @ Сегодня, 12:34 необходимо зарегистрироваться для просмотра ссылки ,
Запрос.Текст = Запрос.Текст + "
        |ВНУТРЕННЕЕ СОЕДИНЕНИЕ
        |    Справочник.Номенклатура КАК сНоменклатура
        |ПО
        |    сНоменклатура.Ссылка = ЦеныНоменклатурыСрезПоследних.Номенклатура
        |ГДЕ
        |    сНоменклатура.Ссылка = &Номенклатура
        |УПОРЯДОЧИТЬ ПО
        |    ЦеныНоменклатурыСрезПоследних.ХарактеристикаНоменклатуры УБЫВ
        |";
sava1
ВЫБРАТЬ разрешенные

в запросе есть ?
r1p88@mail.ru
sava1 @ Сегодня, 13:09 необходимо зарегистрироваться для просмотра ссылки ,
нет.
Причем сейчас решил пошагово пройти и как я понял, саму номенклатуру он добавляет и вытаскивает цену и сумму, а потом происходит обход по услугам и ступар. Но только почему он не добавляет эту сумму и скидку в табличную часть.
Petre
r1p88@mail.ru @ Today, 13:21 необходимо зарегистрироваться для просмотра ссылки ,
faceoff.gif
Ставим точку останова на строке
Выборка = Запрос.Выполнить().Выбрать();

В табло вводим Запрос.Текст, жмем F2, смотрим текст запроса.
r1p88@mail.ru
Petre @ Сегодня, 13:31 необходимо зарегистрироваться для просмотра ссылки ,
ВЫБРАТЬ ПЕРВЫЕ 1
    ЦеныНоменклатурыСрезПоследних.Цена  КАК Цена,
    ВЫБОР    КОГДА сНоменклатура.Услуга И ЦеныНоменклатурыСрезПоследних.ЕдиницаИзмерения = ЗНАЧЕНИЕ(Справочник.ЕдиницыИзмерения.ПустаяСсылка)
            ТОГДА сНоменклатура.ЕдиницаХраненияОстатков
            ИНАЧЕ ЦеныНоменклатурыСрезПоследних.ЕдиницаИзмерения
    КОНЕЦ                               КАК ЕдиницаИзмерения,

    ЦеныНоменклатурыСрезПоследних.Валюта
ИЗ
    РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&Дата, Номенклатура = &Номенклатура
       И ТипЦен = &ТипЦен И ХарактеристикаНоменклатуры В (&ХарактеристикиНоменклатуры)
       ) КАК ЦеныНоменклатурыСрезПоследних

ВНУТРЕННЕЕ СОЕДИНЕНИЕ
    Справочник.Номенклатура КАК сНоменклатура
ПО
    сНоменклатура.Ссылка = ЦеныНоменклатурыСрезПоследних.Номенклатура
ГДЕ
    сНоменклатура.Ссылка = &Номенклатура
УПОРЯДОЧИТЬ ПО
    ЦеныНоменклатурыСрезПоследних.ХарактеристикаНоменклатуры УБЫВ
Petre
r1p88@mail.ru @ Today, 13:38 необходимо зарегистрироваться для просмотра ссылки ,
Вместо
ВЫБРАТЬ ПЕРВЫЕ 1

Вставьте
ВЫБРАТЬ РАЗРЕШЕННЫЕ ПЕРВЫЕ 1
r1p88@mail.ru
Petre @ Сегодня, 13:47 необходимо зарегистрироваться для просмотра ссылки ,
та же самая ошибка вылазит

Petre @ Сегодня, 13:47 необходимо зарегистрироваться для просмотра ссылки ,
всё. Вроде ушла ошибка. Чуть позже буду проверять на рабочей базе, потом скажу что к чему. Пока спасибо за помощь.
r1p88@mail.ru
Теперь появилась другая ошибка.
{ОбщийМодуль.МойПривилигированный.Модуль(338)}: Ошибка при вызове метода контекста (Выполнить)
    РезультатЗапроса = Запрос.Выполнить();
по причине:
Ошибка выполнения запроса
по причине:
У пользователя недостаточно прав на исполнение операции над базой данных.

Документ не проводится. Если убрать в настройках пользователя "Не отпускать товар ниже" - Приходной. То всё проводиться. Но нам принципиально оставить это ограничение.
Vofka
r1p88@mail.ru, решение влезть с этим в RLS, на мой взгляд, плохое. Потому что теперь во всех запросах в программе, в которых есть обращение к типам цен, надо будет вставлять РАЗРЕШЕННЫЕ. Я бы это как-то по другому делал.
r1p88@mail.ru
Vofka @ Сегодня, 16:47 необходимо зарегистрироваться для просмотра ссылки ,
Например?
Vofka
r1p88@mail.ru, если бы вы озвучили задачу, можно было бы подумать. А так не понятно зачем вы сделали то, что здесь описываете.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.