Ограничение доступа пользователей к внешнему отчёту на СКД

04.04.20

Администрирование - Роли и права

Метод ограничения доступа пользователей к данным внешнего отчёта.

Скачать файлы

Наименование Файл Версия Размер
Ограничение доступа пользователей к внешнему отчёту на СКД:
.erf 12,56Kb
2
.erf 1.0. 12,56Kb 2 Скачать

В данной статье демонстрируется универсальный способ ограничить использование любого внешнего отчёта на СКД конкретными пользователями. Стандартные средства 1С, такие как роли, права доступа и RLS, такие возможности предоставляют в отношении конкретных объектов конфигурации. А для внешних отчётов, которые используются практически повсеместно, будь они встроены в конфигурацию или нет, в лоб задача не решается.

Время от времени в сообществе возникают обсуждения об универсальности и удобстве применения СКД. Масса возможностей, заложенных в СКД, будет и дальше давать повод пытливым умам разработчиков находить разные способы её нестандартного применения. С моей точки зрения, оптимально её применять для тех задач, для решения которых она и создавалась, то есть, для создания отчётов. В том числе и внешних.

Наверно, Америку не открою, но надеюсь, что описанный ниже работающий способ предоставления внешним отчётом информации определённым пользователям будет полезен читателям. Поскольку цель СКД декларируется как «создание отчётов без строчки кода», то и решение кода не содержит.

Способ подходит для любых форм, проверен как на платформе 8.2.19.83 в нестандартной конфигурации, так и на платформе 8.3.15.65 , в УНФ 1.6.19.215 и БП 3.0.75.70.

Идея заключается в изменении постановки задачи. Если в 1С нет средств для ограничения доступа к внешнему отчёту отдельному пользователю, то можно ограничить ему доступ не к самому отчёту, а к его информации.

Добавим к произвольному отчёту поле с типом булево и значением Истина. Например, «ВОтчёте». Схему компоновки данных построим из двух наборов, первый из которых не будет содержать какой-либо таблицы, а только два параметра ТекущийПользователь и РазрешённыеПользователи:

Дополнительное поле

и одно поле «ВОтчёте», которое принимает значение Истина, если значение параметра «ТекущийПользователь» входит в список значений параметра «РазрешенныеПользователи» и Ложь в противном случае. Чтобы это работало, на вкладке «Параметры» нужно задать их тип: СправочникСсылка.Пользователи, для параметра «РазрешенныеПользователи» указать доступность списка значений, для параметра «ТекущийПользователь» задать выражение, возвращающее текущего пользователя из параметров сеанса конфигурации.

Здесь нужно убедиться, что выражение верно, потому что оно зависит от используемой версии БСП и конфигурации. Ниже указано выражение для БП 3.0.75.70. 

Поскольку СКД, в режиме «Конфигуратор», предоставляет возможность задания только предопределённых значений справочника,

Ограничение СКД

то нужно запустить отчёт и, не формируя его, зайти в «Настройки» в расширенном режиме и задать список тех пользователей, для которых данные отчёта будут доступны в параметр «РазрешенныеПользователи»:

Затем вернуться в Конфигуратор и для обоих параметров ограничить их доступность в пользовательском режиме:

Второй набор – данные, которые должен выводить отчёт. К нему нужно добавить поле «ВОтчёте» со значением Истина.

Для примера возьмём отчёт УНФ «Сведения о пользователях». Добавим к нему набор данных «РазрешенныеПользователи» так, как показано выше. Результирующий набор отчёта – объединение, поэтому нужно добавить поле «ВОтчёте» ко всем запросам объединения. По вычисляемому полю связь между наборами СКД установить не позволит.

И ограничить доступность этого поля для пользователя.

Ограничение доступности поля ВОтчёте

Осталось соединить оба набора данных по полю «ВОтчёте»:

Собственно, всё. Теперь, при запуске отчёта пользователем, не входящим в заданный ранее список, первый набор данных «РазрешенныеПользователи» выдаст Ложь, связь не установится и пользователю будут недоступны данные отчёта. И наоборот, в другом случае.

Таким образом, с помощью встроенных средств СКД, без программирования, можно решить задачу ограничения доступности информации внешнего отчёта по пользователям. Для ленивых читателей прилагаю файл отчёта с набором данных РазрешенныеПользователи. Скачивание не обязательно, можно просто воспользоваться подробной информацией из статьи. 

Всем успехов и здоровья!

Внешний отчёт ограничение доступа СКД

См. также

SALE! 20%

Infostart Toolkit: Инструменты разработчика 1С 8.3 на управляемых формах

Инструментарий разработчика Роли и права Запросы СКД Платформа 1С v8.3 Управляемые формы Запросы Система компоновки данных Конфигурации 1cv8 Платные (руб)

Набор инструментов программиста и специалиста 1С для всех конфигураций на управляемых формах. В состав входят инструменты: Консоль запросов, Консоль СКД, Консоль кода, Редактор объекта, Анализ прав доступа, Метаданные, Поиск ссылок, Сравнение объектов, Все функции, Подписки на события и др. Редактор запросов и кода с раскраской и контекстной подсказкой. Доработанный конструктор запросов тонкого клиента. Продукт хорошо оптимизирован и обладает самым широким функционалом среди всех инструментов, представленных на рынке.

13000 10400 руб.

02.09.2020    122179    670    389    

714

Запрет доступа к данным по зарплате для БП 3.0 и КА 2.5

Зарплата Роли и права Платформа 1С v8.3 Бухгалтерский учет Управление правами 1С:Бухгалтерия 3.0 1С:Комплексная автоматизация 2.х Молдова Россия Казахстан Бухгалтерский учет Платные (руб)

Расширение позволяет максимально полно ограничить доступ пользователей к данным по заработной плате, а именно закрывает доступ к документам начисления и выплаты заработной платы, не позволяет просматривать бухгалтерские отчеты по счету учета зарплаты а также убирает зарплатные проводки из журнала проводок. Расширение запрещает просматривать платежные документы на выплату зарплаты, так же не доступны регламентные отчеты в ПФР и ИФНС. Расширение предлагает готовые настроенные профили "Бухгалтер без зарплаты", "Только просмотр без зарплаты".

5700 руб.

27.05.2021    32738    204    89    

165

Автоподбор ролей для профилей и групп доступа в любых типовых базах 1С УТ 11, КА 2, ERP2, Розница 2/3, УНФ 16/3, БП 3, ЗУП 3 и подобных (УФ, Платформа 8.3.14+)

Инструменты администратора БД Роли и права 8.3.14 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:Документооборот 1С:Зарплата и кадры государственного учреждения 3 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Зарплата и Управление Персоналом 3.x 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Платные (руб)

Роли… Вы тратите много времени и сил на подбор ролей среди около 2400 в ERP или 1500 в Рознице 2, пытаясь понять какими правами они обладают? Вы все время смотрите права в конфигураторе или отчетах чтоб создать нормальные профили доступа? Вы хотите наглядно видеть какие права дает профиль и редактировать все в простом виде? А может хотите просто указать подсистему и дать права на просмотр и добавление на объекты и не лезть в дебри прав и чтоб обработка сама подобрала нужные роли? Все это теперь стало возможно! Обновление от 15.12.2023, версия 1.1.

12000 руб.

06.12.2023    2980    13    1    

34

SALE! 20%

Infostart УДиФ: Управление данными и формами

Инструменты администратора БД Инструментарий разработчика Роли и права Платформа 1С v8.3 Конфигурации 1cv8 Россия Платные (руб)

Расширение позволяет без изменения кода конфигурации выполнять проверки при вводе данных, скрывать от пользователя недоступные ему данные, выполнять код в обработчиках. Не изменяет данные конфигурации, легко устанавливается практически на любую конфигурацию на управляемых формах.

10000 8000 руб.

10.11.2023    3545    11    1    

34

Расширение для разграничения доступа к контрагентам и обработка для группового назначения доступа для Бухгалтерии (RLS) 3.0.143.42

Роли и права Платформа 1С v8.3 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Платные (руб)

Расширение предназначено для Бухгалтерии предприятия (версии ПРОФ и КОРП). Типовая конфигурация остается на поддержке. С помощью расширения менеджер по продажам будет иметь доступ к контрагентам и списку их документов только в случае, если он является для них ответственным. Пользователю с полными правами также доступна обработка «Назначение ответственных» для группового добавления/удаления ответственного в карточке контрагента. Есть версия данного расширения для клиентов Fresh - в магазине расширений (Fresh)

9360 руб.

14.09.2022    5760    7    4    

9

Роли для кладовщика

Логистика, склад и ТМЦ Роли и права Платформа 1С v8.3 Бухгалтерский учет Управление правами 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Управленческий учет Платные (руб)

Расширение, которое позволяет использовать отдельные роли для доступа к складским документам, для доступа к документам раздела "Производство" и для доступа к документам раздела "Покупки".

2520 руб.

21.05.2019    1692311    552    192    

133

Универсальная система оповещений в базе или по почте по произвольным условиям, расписанием, ролям и пользователям (Расширение / конфигурация для платформ 8.3.6+, для ЛЮБЫХ баз)

Роли и права Платформа 1С v8.3 Конфигурации 1cv8 1С:Управление торговлей 11 Платные (руб)

Данная система разработана как альтернатива стандартной системе напоминаний. Но имеет ряд существенных преимуществ: отображение в базе или с отправкой по почте, свое расписание, возможность фильтрации по ролям и пользователям, формирование своих запросов и макетов, шаблоны писем, работа в фоне. А также может блокировать работу пользователей при заданных условиях. Может работать в составе любой конфигурации. Имеется справка с описанием возможностей. (Обновление от 20.02.2024, версия 2.2, расширение)

18000 руб.

29.11.2019    24693    13    8    

33
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. Xershi 1474 05.04.20 09:12 Сейчас в теме
Хитрый отчёт. Но если завтра понадобится список отредактировать придётся звать программиста.
Я добавил условие, чтобы пользователь с полными правами мог редактировать список и потом.
4. user925427 121 05.04.20 11:57 Сейчас в теме
(1) Если понадобится отредактировать список, то нужно произвести описанные действия в обратном порядке: отключить ограничение доступности параметров, изменить список, включить ограничение доступности. Для этих действий программист не требуется. Наверно, стоило указать это в тексте статьи. Спасибо за комментарий.
2. Xershi 1474 05.04.20 09:13 Сейчас в теме
В добавок этот алгоритм можно сломать, если сбросить настройки по умолчанию.
5. user925427 121 05.04.20 12:03 Сейчас в теме
(2) Сломать, при желании, можно всё, что угодно, это легче, чем что-то создать. Без настроек отчёт информацию выдавать перестанет. Это, действительно, некоторое ограничение. Но... Для восстановления настроек понадобится восстановить значения параметров. Предполагается, что тот, кто сделал такой отчёт, их и восстановит.
7. Xershi 1474 05.04.20 12:07 Сейчас в теме
(5) если сделать по методике из (3), то ломаться не будет ни при каких обстоятельствах.
Только если доработку убрать, но это уже и так понятно. Я так понимаю вопрос назрел в связи с удаленной работой и у некоторых руководителей стало подгорать?)
9. user925427 121 05.04.20 12:32 Сейчас в теме
(7) Нет. Удалённая работа дала время на изложение материала. А эту штуку придумал, когда была задача по нестандартной конфигурации, и пользуюсь ей уже некоторое время. У многих руководителей уже и не подгорает, а горит!
3. Алексей Воробьев 291 05.04.20 11:18 Сейчас в теме
Спасибо, познавательно. Сподвигли для ряда коротких экспериментов...

Замечания:
1) Можно применить подобный метод без какого-либо изменения основных наборов данных схемы вовсе.
Для этого модифицируем запрос ограничивающего набора данных так:

ВЫБРАТЬ
	ИСТИНА КАК РазрешенныйПользователь
ГДЕ
	ВЫБОР
		КОГДА &ТекущийПользователь В(&РазрешенныеПользователи)
			ТОГДА ИСТИНА
		ИНАЧЕ ЛОЖЬ
	КОНЕЦ
Показать


Далее меняем связь(связи) с этим набором:
- в источник связи помещаем ограничивающий запрос;
- в приемник основной набор данных;
- в выражение источника прописываем "РазрешенныйПользователь"
- в выражение приемника прописываем ручками (не выбираем из списка) "Истина"

2) Использование списка пользователей в настройках отчета действительно, к сожалению, не очень хороший вариант. Для конфигураций без БСП так вообще практически неприменимый.
Если все-таки есть необходимость использования подобного механизма, то наиболее правильным вариантом будет разработка некой экспортной функции общего модуля, возвращающей список "допущенных пользователей", которая должна быть прописана в выражение соответствующего параметра в схеме СКД отчета.
Но это уже программирование, то бишь написание программного кода, без которого автор так старался обойтись :-)
Хотя, если подойти к задаче глобально, то написать его придется один раз, добавить небольшой регистр сведений с ключами отчетов и "допущенными пользователями" в измерениях и задача будет решена "системно" и для всех будущих внешних отчетов, требующих этого...
6. Xershi 1474 05.04.20 12:05 Сейчас в теме
(3) также если речь идет о БП, то там уже можно это делать через расширение!
В принципе свой регистр сведений уже можно добавлять в большинство типовых. С 8.3.15 константы добавили.
8. user925427 121 05.04.20 12:10 Сейчас в теме
(3) 1) Спасибо за дополнение и творческий подход. Вариантов решения, на самом деле, может быть много.
2) Я использую этот подход и на полностью нестандартной конфигурации, без БСП. В чём Вы видите отличие? Там ПараметрыСеанса.ТекущийПользователь, остальное всё так же. С программированием решения совсем другие, конечно. И с изменениями конфигурации тоже.
10. Алексей Воробьев 291 05.04.20 12:37 Сейчас в теме
(8)
2) Я не имел в виду другой код получения текущего пользователя :-)
Привожу ситуацию, в рамках которой проводил эксперименты: УТ 10.3, то бишь обычное приложение, толстый клиент, но относительно свежая платформа (8.3.16.1224). Кастомный отчет на СКД в составе конфигурации, форма отчета добавлена управляемая, не кастомизирована. В схеме СКД в конфигураторе описаны/настроены около десятка вариантов отчета, которые и используются конечными пользователями уже давно. То есть я не смогу прописать список разрешенных пользователей в конфигураторе, а прописать его в пользовательском режиме я могу только для себя, поскольку настройки у каждого пользователя свои.
Чтобы сработало ограничение для каждого, мне нужно заходить под каждым же пользователем, прописывая список в каждый вариант отчета...

Если есть другой вариант проще - поделитесь, пожалуйста. Если этот вариант - скопировать отчет в конфигураторе и настроить "с нуля", то он малоинтересен...
11. user925427 121 05.04.20 14:26 Сейчас в теме
(10)
Кастомный отчет на СКД в составе конфигурации
. Этот вариант для внешнего отчёта. Что у Вас за задача? Разграничить доступ по сети вариантов отчёта, чтобы пользователь, у которого одни настройки, не имел возможности получить отчёт с другими настройками? В этом случае способ из статьи не подходит по той причине, что параметры задаются в настройках. Да ещё и отчёт встроенный, его менять нельзя. А для решения задачи нужно попробовать привести её в соответствие с возможностями платформы.
12. Алексей Воробьев 291 05.04.20 16:29 Сейчас в теме
(11)
Интерес был больше академический, нежели практический. И то, что решение в том виде, в котором представлено в статье, не подойдет для встроенных в конфигурацию отчетов, я уже понял по своим экспериментам...
Я ни в коем случае не критикую Ваше решение, поймите правильно. Наоборот, предложенный способ мне понравился и я поэскпериментировал на тему...

Если говорить о задаче, то как пример: есть встроенный в конфу отчет с одним или несколькими вариантами, доступный только роли "Полные права". Как издавна заведено (а конфа УТ 10.3 - это уж точно издавна) при кривом внедрении роль "Полные права" могут получить сразу достаточно много пользователей. И, как ни странно, часть из них до сих пор ее не лишилось. А оный отчет должен быть доступен только паре из них.
В данном случае задача может быть решена или нормализацией пользователей/ролей (что таки более правильно), или использованием метода из статьи, но с оговоркой, что "суперпользователи" либо указываются все-таки кодом в отчете, либо в настроечном регистре, откуда и извлекаются функцией в выражении параметра "РазрешенныеПользователи". И последний способ, кстати, вполне подходит и для внешних отчетов, о чем я и хотел сказать.
А в более современных конфигурациях действительно для такой подсистемки можно применить расширение.
13. user925427 121 05.04.20 18:14 Сейчас в теме
(12) Алексей, я и не воспринимаю Ваши комментарии, как критику. Просто не всегда удаётся с ходу понять задачу. Регистр - да, возможно, но, если уж заводить регистр, то не для одного отчёта. Множество отчётов - это уже целая подсистема в рамках конфигурации. Годится для нестандартных, в стандартных же, имхо, лучше по максимуму использовать уже имеющиеся средства. Расширения - тоже вещь не идеальная. В 1С целые команды работают над стандартными продуктами и платформами так активно, что только успевай расширения потом обновлять. Так что найти общие решения почти невозможно, в каждом конкретном случае есть ограничения. Если хотите продолжить дискуссию, то можно в личку. Ещё раз спасибо за творческий подход.
14. Алексей Воробьев 291 05.04.20 19:35 Сейчас в теме
(13) Регистр и имелся в виду не для одного отчета. Причем именно для внешних, вполне себе работоспособно будет. А так-то дискутировать уже не о чем, тема исчерпана. Еще раз спасибо за публикацию!
15. aleksey2 86 25.10.23 09:02 Сейчас в теме
Раз он внешний, значит в нем можно при открытии проверить имя пользователя
Оставьте свое сообщение