[ Вопрос дня ] Как выполнить отчет на СКД в привилегированном режиме без контроля прав доступа?

Доброго дня, коллеги!
В рамках курса по СКД большое внимание уделяется программной работе с СКД. Обладая навыками программной работы можно решить любую “хитрую” задачу. Вот вам пример головоломки от слушателя курса :)

Курс: Профессиональная разработка отчетов в 1С 8.3 на СКД

Вопрос

Добрый вечер. А как можно заставить отчет, выполняться в привилегированном режиме (с получением настроек в привилегированном режиме), то есть без контроля прав текущего пользователя на данные используемые в отчете?

Ответ

Добрый день!

Можно в модуле объекта создать процедуру ПриКомпоновкеРезультата, в которой использовать строку кода:

УстановитьПривилегированныйРежим(Истина);

В этой процедуре затем программно выполнять компоновку отчета.

Также важный момент – при загрузке настроек платформа автоматически удаляет из настроек недоступные по правам доступа поля. Поэтому можно в отчете сделать схему компоновки, в которой используется набор данных – объект. При исполнении отчета программно подменять схему компоновки данных на нужную, компоновку отчета выполнять в привилегированном режиме.

Это пример разобранного вопроса из Мастер-группы курса
Профессиональная разработка отчетов в 1С 8.3 на СКД.

Описание курса и примеры видео

Комментарии / обсуждение (6):

  1. Алексей

    “при загрузке настроек платформа автоматически удаляет из настроек недоступные по правам доступа поля” – что бы СКД не удаляла поля можно через объединение в запрос добавить строку содержащую пустые значения нужного типа (если тип недоступен, то просто Неопределено), а потом убрать ее отбором.

    • Александр

      Попробовал вашим способом. что-то не взлетело. Получается в самом запросе же нужно убрать директиву “Разрешенные” и объединить с пустым значением. А тогда пишет “У пользователя недостаточно прав на исполнение операции”, хотя привилегированный режим при компоновке указал

      • Василий Ханевич

        В таком случае попробуйте воспользоваться набором данных – объектом, как указано в статье.

        Или как вариант – в тексте запроса схемы компоновки использовать заглушку (только описание полей):

        ВЫБРАТЬ
        ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка) КАК Номенклатура,
        0 КАК Сумма

        И программно в общем модуле с галочкой Привилегированный подменять текст запроса на нужный Вам, программно выполнять компоновку.

        • Анатолий

          Добрый день, почему- то в серверном привилегированном модуле ошибка при чтении данных:

          Ошибка вывода результата
          по причине:
          Ошибка при выводе результата
          по причине:
          Ошибка получения данных
          по причине:
          Ошибка создания набора данных “НаборДанных1”
          по причине:
          Ошибка при исполнении запроса набора данных
          по причине:
          Ошибка выполнения запроса
          по причине:
          У пользователя недостаточно прав на исполнение операции над базой данных.

          • Василий Ханевич

            Не могу прокомментировать, почему возникает такая ошибка в Вашем случае.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Вход на сайт

Зарегистрироваться

Подтверждение регистрации будет отправлено на указанный e-mail.

Я подтверждаю, что ознакомлен(а) с Пользовательским соглашением, принимаю его условия и даю свое согласие на обработку моих персональных данных.

Восстановить доступ

E-mail или логин

Ссылка на создание нового пароля будет отправлена на указанный e-mail.