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

04.04.20

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

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

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
Ограничение доступа пользователей к внешнему отчёту на СКД:
.erf 12,56Kb ver:1.0.
3
3 Скачать (1 SM) Купить за 1 850 руб.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

См. также

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

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

12000 руб.

02.09.2020    169296    937    403    

905

Инструменты администратора БД Роли и права Системный администратор Программист Пользователь 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, пытаясь понять какими правами они обладают? Вы все время смотрите права в конфигураторе или отчетах чтоб создать нормальные профили доступа? Вы хотите наглядно видеть какие права дает профиль и редактировать все в простом виде? А может хотите просто указать подсистему и дать права на просмотр и добавление на объекты и не лезть в дебри прав и чтоб обработка сама подобрала нужные роли? Все это теперь стало возможно! Обновление от 18.09.2024, версия 1.2

18000 руб.

06.12.2023    10010    48    5    

78

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

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

5940 руб.

27.05.2021    38960    281    98    

215

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

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

15000 руб.

10.11.2023    11396    40    27    

66

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

Расширение для 1С:Бухгалтерия 3.0, которое позволяет использовать отдельные роли для доступа к складским документам, для доступа к документам раздела "Производство" и для доступа к документам раздела "Покупки".

4560 руб.

21.05.2019    1695306    575    194    

137

Ценообразование, анализ цен Роли и права Системный администратор Платформа 1С v8.3 Управление правами 1С:Управление нашей фирмой 1.6 1С:Управление нашей фирмой 3.0 Россия Платные (руб)

Расширение возможностей программы 1С УНФ. Функционал расширения - разграничение всевозможных прав пользователей и контроль при совершении различных действий.

3000 руб.

23.02.2018    59194    164    262    

156

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

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

19200 руб.

29.11.2019    25883    17    8    

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

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

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


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

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

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

Если говорить о задаче, то как пример: есть встроенный в конфу отчет с одним или несколькими вариантами, доступный только роли "Полные права". Как издавна заведено (а конфа УТ 10.3 - это уж точно издавна) при кривом внедрении роль "Полные права" могут получить сразу достаточно много пользователей. И, как ни странно, часть из них до сих пор ее не лишилось. А оный отчет должен быть доступен только паре из них.
В данном случае задача может быть решена или нормализацией пользователей/ролей (что таки более правильно), или использованием метода из статьи, но с оговоркой, что "суперпользователи" либо указываются все-таки кодом в отчете, либо в настроечном регистре, откуда и извлекаются функцией в выражении параметра "РазрешенныеПользователи". И последний способ, кстати, вполне подходит и для внешних отчетов, о чем я и хотел сказать.
А в более современных конфигурациях действительно для такой подсистемки можно применить расширение.
13. user925427 130 05.04.20 18:14 Сейчас в теме
(12) Алексей, я и не воспринимаю Ваши комментарии, как критику. Просто не всегда удаётся с ходу понять задачу. Регистр - да, возможно, но, если уж заводить регистр, то не для одного отчёта. Множество отчётов - это уже целая подсистема в рамках конфигурации. Годится для нестандартных, в стандартных же, имхо, лучше по максимуму использовать уже имеющиеся средства. Расширения - тоже вещь не идеальная. В 1С целые команды работают над стандартными продуктами и платформами так активно, что только успевай расширения потом обновлять. Так что найти общие решения почти невозможно, в каждом конкретном случае есть ограничения. Если хотите продолжить дискуссию, то можно в личку. Ещё раз спасибо за творческий подход.
14. Алексей Воробьев 281 05.04.20 19:35 Сейчас в теме
(13) Регистр и имелся в виду не для одного отчета. Причем именно для внешних, вполне себе работоспособно будет. А так-то дискутировать уже не о чем, тема исчерпана. Еще раз спасибо за публикацию!
15. aleksey2 89 25.10.23 09:02 Сейчас в теме
Раз он внешний, значит в нем можно при открытии проверить имя пользователя
16. websamson 307 06.12.24 10:28 Сейчас в теме
Спасибо за идею!
Добавил одно условие в отчете:
ВЫБОР
	КОГДА &ТекущийПользователь В
			(ВЫБРАТЬ
				ГруппыДоступаПользователи.Пользователь КАК Пользователь
			ИЗ
				Справочник.ГруппыДоступа.Пользователи КАК ГруппыДоступаПользователи
			ГДЕ
				ГруппыДоступаПользователи.Ссылка.Наименование = "МОЯ ГРУППА ДОСТУПА")
		ТОГДА ИСТИНА
	ИНАЧЕ ЛОЖЬ
КОНЕЦ
Показать
Оставьте свое сообщение