Имя вида доступа не найдено 1с
Разработчики в управляемых приложениях применили новый механизм настройки прав доступа, о которых и пойдет речь.
Будут перечислены все те грабли, которые собрал автор, чтобы вы о них знали.
Наверняка, уже все знают, что из себя представляет новая система, поэтому предистория вкрадце:
Как было раньше( в обычном приложении):
Есть документ. Есть Роли - ПолныеПрава, ДокументНетДоступа, ДокументТолькоЧтение, ДокументЧтениеИРедактирование. В конфигураторе(аналогичный механизм в реж предприятия) вы выставляете пользователям эти роли и у них появляются соответствующие права доступа на документ. Все просто и скучно и даже зевать хочется.
С введением управляемого приложения разработчики решили усложнить(читается как расширить) настройки прав доступа.
Теперь:
Вводная та же. Чтобы дать пользователю какие-то права на документ - сначала вам необходимо создать элемент справочника Профили групп доступа. Это некий агрегирующий(суммирующий значения) объект, который объединяет роли в группы ролей. Теоритически таких профилей можно создать сколько угодно много с различным набором ролей( N*(n-1), где N - количество ролей), но на практике количество профилей определяется количеством должностных обязанностей пользователей в организации и их гораздо меньше, чем ролей.
Создаем профили Бесправный(с ролью ДокументНетДоступа), Аудитор(с ролью ДокументТолькоЧтение), Бухгалтер(с ролью ДокументЧтениеИРедактирование).
Чтобы "привязать" эти профили к пользователям - нужно создать элементы справочника ГруппыДоступа. В типовых они создаются автоматически, когда вы отмечаете галочками профили для пользователя. Этот справочник соединяет профиль и пользователя(или нескольких пользователей).
При записи этого элемента справочника система автоматически добавляет роли (из профиля) в роли пользователя. Поэтому не стоит напрямую редактировать роли в конфигураторе, как раньше - при редактировании прав в Предприятии все роли в конфигураторе будут обновлены на роли из профилей пользователя. Кроме того, будет наблюдаться явное противоречение между набором профилей с ролями и ролями, установленными в конфигураторе.
Как хранятся роли в Профиле групп доступа, спросите вы. Ведь роли - это объекты МД, это не ссылочные типы. Отвечаю - для этого(и не только) разработчики создали служебный справочник ИдентификаторыОбъектовМетаданных, в котором хранится( в иерархии!) имена, синонимы, значения пустых ссылок всех объектов МД. Если вы хотите создать Профиль программно и добавить в него роль, то код примерно будет таким:
Но если мы добавили новую роль в конфигурации, то как она попадет в справочник? Хороший вопрос. У справочника ИдентификаторыОбъектовМетаданных есть метод, позволяющий обновлять его данные. это:
Процедуру следует запускать каждый раз, когда вы вносите изменения в метаданные, особенно когда изменяете роли, объекты, связанные с новыми ролями.
Отлично. Роль добавили, идентификаторы обновили.
Но обратная связь не работает - вы в режиме предприятия назначили пользователю профиль( с созданием группы доступа), а роль у пользователя в конфигураторе не добавилась! Что делать?
За синхронизацию ролей/профилей отвечает константа ПараметрыРаботыПользователей. Если роли не обновляются в конфигураторе, следует обновить её значение:
Хорошо, скажите вы. А как быть, если я хочу создать группы доступа программно? Да не вопрос. Единственное ограничение - не допускаются дубли связок Профиль-Пользоваль в группах доступа. Примерный код будет таким:
После выполнения этого кода, если все, что нужно обновлено - типовая конфигурация добавит пользователю роли.
Раз уж пошли по программному пути, вот код, который добавляет пользователя в справочник Пользователи и ПользователяИБ в ПользователиИнформационнойБазы:
Если вы добавляете не программно, то добавлять нужно из режима Предприятия - тогда пользовательИБ у вас сам создатся.
И если раньше, в обычном приложении, достаточно будет добавить польз в конфигураторе - и при заходе в Предприятие, этот польз сам создавался в спр Пользователи, то с управляемым приложением такой фокус не прокатит - система не даст зайти под пользователемИБ, которого нет в справочнике Пользователи.
Автор: Stim - Источник
Похожие FAQ
10060 (0x0000274C): Попытка установить соединение была безуспешной 19
Установили новый терминальный сервер, на нем подняли 1С, терминальные пользователе неописуемо довольны, все просто летает :) И вот же надо было такому случиться, главному бухгалтеру не понравилось работать через терминал, а еще у нее свой ноутбук и Автоматическое резервное копирование 1С:Предприятия в облако с помощью ПО Effector Saver 3
Всем известно, для большей гарантии восстановления важных данных, необходимо копировать архивы в несколько мест хранения. Отдельный диск может помочь в случае порчи основного, но в случае если устройство будет потеряно или украдено, он будет так же Автоматическое резервное копирование 1С:Предприятия в облако с помощью ПО Effector Saver 0
Всем известно, для большей гарантии восстановления важных данных, необходимо копировать архивы в несколько мест хранения. Отдельный диск может помочь в случае порчи основного, но в случае если устройство будет потеряно или украдено, он будет так же Блокировка записей, невозможно изменить или удалить из регистра. Конфликт блокировок MS SQL + 1C 3
При попытке удалить запись из регистра сведений - получаю ошибку: она заблокирована, ошибка блокировок и т.д. Отключил всех пользователей, перезапустил сервер, пробую удалить - опять ошибка блокировки :( Путем тестов было вяснено, что проблема Как из панели меню убрать пункт Вид и отключить Настройка панели? 3
Нужно чтобы пользователи не могли менять настроенный для них интерфейс! Решение: Для отключения нужно в правах доступа у корневого элемента конфигурации убрать право " Сохранение данных пользователя ". Отключатся настройка панелей и пункт ме Посмотреть все результаты поиска похожих
Еще в этой же категории
Как заполнить табличную часть формы программно? 8
Нужно по кнопке Заполнить - сформировать данные для заполнения табличных частей и заполнить их. Форма имеет вид: Рядом с кнопкой Записать и закрыть добавлена кнопка Заполнить документ , код ее команды: // Код заполнения ТЧ НаСервере П Как открыть внешнюю обработку или отчет программно 1С УП? 6
В версии 8.2 и старше: приложение не работает непосредственно с локальными файлами, расположенными на компьютере. Файлы должны находиться на сервере. Поэтому для открытия внешней обработки нужно выполнить следующую последовательность действий: Ввод по строке - поиск по первым символам или в любом месте наименования 6
При разработке конфигурации, для упрощении ввода документов потребовалось настроить ввод номенклатуры по совпадению любой части наименования! В 1С 8.3 по умолчанию настройки справочника номенклатуры такие: При такой настройке, механизм поиска в Как передать таблицу значений с сервера на клиент? 5
Многие спрашиваю, как передать тз с сервера на клиент - ниже несколько вариантов как это можно реализовать: Через ЗначениеВСтрокуВнутр и ЗначениеИзСтрокиВнутр НаКлиенте Процедура ПолучитьТаблицу НаСервер(Команд а) ТЗВСтроке = ПолучитьТЗНаС РеквизитФормыВЗначение() и ДанныеФормыВзначение() - Описание и примеры использования 2
gvk2009 подробно и доходчиво описал разницу методов, за что ему огромное спасибо: В Синтаксис-Помощнике очень скупо написано о процедуре ДанныеФормыВЗначение (), чуть побольше - о РеквизитФормыВЗначение (). И совсем нет примеров использования. Посмотреть все в категории Управляемое приложение, Тонкий клиент
Доброго времени суток. Есть типовая ЗУП 3.1.16.134. Думаю тип конфигурации тут не сиграет значение, ибо все работает на БСП.
Необходимо реализовать разграничение прав пользователей по подразделениям. В типовой ЗУП этого к сожалению не предусмотрено.
Подскажите каким образом отредактировать типовой шаблон RLS у роли ЧтениеПодразделенийОрганизации
чтобы пользователю были видны только те подразделения, которые указаны в разрешенных значениях.
Также интересует как наложить RLS на все кадровые документы по разрешенным подразделениям, а также чтобы пользователь мог видеть только тех сотрудников, подразделение которых совпадает с подразделением из настроек.
Правильным решением является разделение по физ лицам.
При делении по подразделениям возникают проблемы при переводе из подразделения а подразделение. Например в этом случае не видно общего расчета сотрудника и есть проблемы с соц налогами и НДФЛ и со средним.
Поэтому настраивается типовой РЛС по физлицу и продумывается как коррекно назначать физлицу группу. Можно это програмно делать, в зависимости от подразделения.
(24) Спасибо. Но такой запрос также не работает корректно. Я зохожу под пользователем, у которого разрешены все организации, разрешены все подразделени, кроме 1.
В итоге под ним видны все организации, но не видно ниодного подразделения(. Также RLS не наклдывается на список кадровых документов. Все выводятся.
Я так понимаю тут нужно менять сам текст шаблона, который нереально большой и сложнвый.
(30) Нет должно отрабатывать корректно, у меня получалось. Возможно у пользователя на форме стоит отбор, которые противоречит его правам.
(31) А вы можете прислать скрин настроек вашей группы доступа и профиля группы доступа. Я сравню со своими.
Также какие роли у вас назначены в профиле группы доступа, если у вас типовая ЗУП)
(32) Нет, я разрабатывал свою роль: задаче была, чтобы пользователь видел только определенные организации и подразделения, без структуры.
(33) Я тоже сделал отдельную роль. Назначил ее в новой группе доступа. Включил пользователя в эту группу. Но, вот не работает.
А вы получается не используете механизм групп доступа?
(24) В вашем примере ВИДНЫ иерархически вложенные подразделения, когда мы НЕ даем на них права.
Я составил мой вариант.
Моя цель - дать "табельщикам" права видеть ТОЛЬКО те подразделения, которые им разрешены (для ведения табелей). И она достигнута.
(36)
Выявился негативный момент. Если до конца табелируемого периода сотрудник умчал в закат перевёлся в недоступное подразделение, то заполнение табеля даёт сбой.
Один из методов (заполнения ТЧ часами) смотрит подразделение сотрудника на конец периода.
В общем, на "табелировании" я пользакам вернул право чтения подразделений (без RLS)
Но оставляю мой RLS тем, кто вводит "данные для расчёта зарплаты".
чтобы пользователю были видны только те подразделения, которые указаны в разрешенных значениях.
чтобы пользователь мог видеть только тех сотрудников, подразделение которых совпадает с подразделением из настроек
Когда задача сформулирована столь кратко, создается иллюзия что решить ее просто, например, немного подкрутив RLS.
Просто подкину пару кейсов. Допустим есть два региональных подразделения, в каждом свой кадровик, и есть логичное в общем требование чтобы каждый кадровик видел документы по своим сотрудникам. И тут случился перевод сотрудника из города А в город Б. Должны ли у кадровика из А пропасть из видимости все документы, введенные им на сотрудника? Должен ли кадровик из Б увидеть документы по сотруднику из А? Кто вообще имеет право завести такой перевод, если кадровик А не видит подразделения Б, а кадровик Б не видит сотрудников А?
(2) Не совсем так, насколько я понимаю. Начиная с 4-го параметра, указываются пары "вид доступа" - "проверяемый реквизит объекта". Для доступности объекта, разрешение должно быть найдено хотя бы в одной группе доступа, в которую включен пользователь, для всех указанных пар одновременно. Соответственно, предположив наличие соответствующей группы доступа, 6-й "И" лишний.
Для доступности объекта, разрешение должно быть найдено хотя бы в одной группе доступа, в которую включен пользователь, для всех указанных пар одновременно. Соответственно, предположив наличие соответствующей группы доступа, 6-й "И" лишний.
привык обычно ПоЗначениямРасширенный делать
Тогда да "И" Убрать надо
Пробовал по разному добавлять параметры ПодразделенияОрганизации и Ссылка, что то не принимает(
Механизм ограничения доступа к данным RLS (Row Level Security) позволяет довольно гибко настраивать и разграничивать права доступа к объектам программы. В типовых конфигурациях "1С Предприятие" механизм развит довольно хорошо, однако бывают ситуации, когда типовой настройки недостаточно. Рассмотрим такую ситуацию на примере программы "ERP Управление предприятием 2".
Представим, что на предприятии действует следующая схема: Заявки на расходование денежных средств оформляют сотрудники нескольких подразделений, например "Плановый отдел", "Хозяйственный отдел". Эти отделы – элементы справочника "Подразделения организаций" (сотрудники оформлены в этих отделах). При этом в Заявках на расходование денежных средств указываются другие подразделения – элементы справочника "Структура предприятия". Например, "Подразделение 1", "Подразделение 2". Существует группа пользователей, которая должна видеть только те заявки, которые оформлены сотрудниками "Планового отдела". Типовая настройка RLS для документа "Заявка на расходование денежных средств" и роли "Чтение заявок на расход ДС" не позволяет выполнить такую настройку, поэтому мы её немного доработаем – добавим новый вид доступа.
Начнём доработку с документа "Заявка на расходование денежных средств". Добавим реквизит, содержащий в себе подразделение автора документа. Назовём его ПодразделениеАвтора . Тип значения реквизита – Э-э. Вот здесь есть над чем подумать. Если установить тип значения – "СправочникСсылка.ПодразделенияОрганизаций", то потом, когда мы попытаемся создать новый вид доступа с названием "Подразделения авторов документов" и типом значения "СправочникСсылка.ПодразделенияОрганизаций", система при обновлении выдаст ошибку:
"Тип значений "Подразделение" уже указан для вида доступа "ПодразделенияОрганизаций". Для вида доступа "ПодразделенияАвторовДокументов" его нельзя указать."
Есть соблазн использовать объект "Определяемый тип", что-нибудь вроде:
Но система не хочет понимать такие формулировки, так что если кто что может дельного подсказать, буду признателен. А пока создаём справочник "Подразделения авторов документов", владелец которого – справочник "Подразделения организаций". В этом справочнике те же подразделения, что и во владельце. И теперь для нового реквизита документа "Заявка на расходование денежных средств" укажем тип "СправочникСсылка.ПодразделенияАвторовДокументов". Настроим заполнение реквизита при записи документа. Думаю, тут описывать это не стоит, так же как и заполнение нового справочника.
Определяемый тип "ЗначениеДоступа"
Добавляем в составной тип ссылки на документ "Заявка на расходование денежных средств" и справочник "Подразделения авторов документов".
Общий модуль "УправлениеДоступомПереопределяемый"
Добавляем в процедуры модуля несколько строк.
Теперь нужно настроить роль для доступа к документу. Можно создать новую роль, а можно доработать уже существующую "Чтение заявок на расход ДС". Рассмотрим второй вариант. В роли "Чтение заявок на расход ДС" уже есть настройка ограничения доступа с использованием шаблона "ПоЗначениямРасширенный".
Нам нужно вставить в список параметров свой вид доступа и поле таблицы, а также удалить такое же число пустых параметров, так как количество устанавливаемых значений должно соответствовать количеству параметров в шаблоне.
Далее, запускаем конфигурацию в режиме "Предприятие" с параметром запуска "ЗапуститьОбновлениеИнформационнойБазы". Также можно запустить, например с помощью внешней обработки, экспортную процедуру "УправлениеДоступомСлужебный.ОбновитьПараметрыОграниченияДоступа".
После того, как обновление завершится, нам останется создать профиль доступа, включающий в себя роль "Чтение заявок на расход ДС", а также группу доступа, настроить ограничение доступа и, наконец, назначить созданную группу доступа пользователям.
Код 1C v 8.х
Синтаксис:
Код 1C v 8.х
Параметры:
(обязательный)
Тип: Строка. Название права доступа.
(обязательный) — Объект метаданных.
(необязательный)
Тип: ПользовательИнформационнойБазы, Метаданные.Роли.Роль
Возвращаемое значение:
Тип: Булево. Истина - право доступа к объекту установлено; Ложь - в противном случае.
Описание:
Показывает установку права доступа к объекту метаданных для текущего пользователя.
Вызов метода всегда требует административных прав, если явно указан третий параметр - Пользователь/Роль, права которого проверяются. Если пользователь не указан, то проверяются права текущего пользователя, и для этого наличие административных прав не требуется.
Примечание:
Права доступа к объектам метаданных устанавливаются при конфигурировании ролей
Синтаксис:
Код 1C v 8.х
Параметры:
(обязательный)
Тип: Строка. Наименование запрашиваемого на объект права, например "Read".
(обязательный)
Объект метаданных, права на доступ к которому проверяются.
(обязательный)
Тип: Строка. Список полей объекта базы данных, права на доступ к которым проверяются. Поля указываются списком, через запятую. Могут присутствовать имена табличных частей, реквизитов табличных частей, в последнем случае поле описывается как ..
(необязательный)
Тип: ПользовательИнформационнойБазы, Метаданные.Роли.Роль. Указывает пользователя или роль, для которых нужно определить доступность права. При этом возвращается значение права так, как оно определено в конфигурации.
Возвращаемое значение:
Тип: ПараметрыДоступа.
Описание:
Позволяет получить права текущего пользователя на заданный объект метаданных с указанием полей.
Похожие FAQ
Как заполнить табличную часть формы программно? 8
Нужно по кнопке Заполнить - сформировать данные для заполнения табличных частей и заполнить их. Форма имеет вид: Рядом с кнопкой Записать и закрыть добавлена кнопка Заполнить документ , код ее команды: // Код заполнения ТЧ НаСервере П 17 правил для составления оптимального ЗАПРОСа к данным базы 1С 44
Для формирования и выполнения запросов к таблицам базы данных в платформе 1С используется специальный объект языка программирования Запрос . Создается этот объект вызовом конструкции Новый Запрос . Запрос удобно использовать, когда требуется получ Cодержимое указанного ниже веб-сайта в этом приложении блокируется. Aboutsecurity_1cv8c.exe 1
Проблема: После обновления на 1С:Бухгалтерию предприятия 3-й версии, при нажатии на закладку командного интерфейса 1С:предприятие, выскакивает ошибка: Aboutsecurity_1cv8c.exe или Aboutsecurity_1cv8.exe «Содержимое указанного ниже веб-узла в э PostgreSQL: установка, настройка, обслуживание 11
PostgreSQL напрямую "из коробки" применяться для использования с 1С Предприятем не может. Необходима именно адаптированная версия от 1С, превращающая PostgreSQL в блокировочник, причем нужно понимать, что блокировки будут накладываться на всю таблиц rphost занимает память и грузит процессор 19
У многих возникают проблемы с rphost.exe, разного вида: rphost занимает всю память rphost грузит процессор rphost жрет память причем 1С даже на запущена, а в диспетчере следующее: ежеминутно расчет на 2-3 мегабайта. Как быть и что делат Посмотреть все результаты поиска похожих
Еще в этой же категории
Как программно создать нового пользователя или скопировать настройки существующего? 5
Часто встречаю вопросы касаемые программного создания и настройки прав пользователей. В этот статье я приведу примеры для Обычного и Управляемого приложений, которые программно создают пользователя в конфигураторе и в режиме Предприятие (справочн Ограничение доступа на уровне записей - RLS (Отбор по организации) 1
Часто возникает необходимость в частичном ограничении доступа к данным. Например, когда пользователь должен видеть документы только своей организации. В таких случаях в 1С используется механизм ограничения доступа на уровне записей (так называемый, Посмотреть все в категории Пользователь, роль доступа, интерфейс
Часто возникает необходимость в частичном ограничении доступа к данным. Например, когда пользователь должен видеть документы только своей организации. В таких случаях в 1С используется механизм ограничения доступа на уровне записей (так называемый, RLS – Record Level Securiy).
Для примера предположим, что перед нами стоит следующая задача. На предприятии ведется многофирменный учет и каждый контрагент и пользователь базы данных относится к определенной организации. Необходимо обеспечить доступ к справочнику “Контрагенты” таким образом, чтобы каждый пользователь мог просматривать, редактировать и добавлять контрагентов только своей организации.
Для решения задачи будем использовать платформу “1С:Предприятие 8.2″. Создадим новую конфигурацию в свойствах которой в качестве основного режима запуска будет выбран вариант “Управляемое приложение”.
Далее создадим справочник “Организации” и ещё два справочника – “Контрагенты” и “Пользователи” с реквизитом “Организация”. Кроме справочников нам понадобятся два параметра сеанса – “Организация” и “Пользователь” (соответствующих типов). Значения этих параметров устанавливаются при запуске сеанса работы с конфигурацией и хранятся до его завершения. Именно значения этих параметров мы и будем использовать при добавлении условий ограничения доступа на уровне записей.
Установка параметров сеанса выполняется в специальном модуле – “Модуль сеанса”
В этом модуле опишем предопределенную процедуру “УстановкаПараметровСеанса” в которой вызовем функцию заранее подготовленного общего модуля “ПолныеПрава”. Это необходимо в силу особенностей работы базы данных в режиме управляемого приложения, когда часть программного кода может выполняться только на стороне сервера (подробно на объяснении этих принципов в данной статье я останавливаться не буду).
В свойствах модуля “ПолныеПрава” необходимо отметить флажки “Сервер”, “Вызов сервера” и “Привилегированный” (последнее означает, что процедуры и функций данного модуля будут выполнятся без контроля прав доступа). Текст модуля будет выглядеть так:
В модуле управляемого приложения будем проверять наличие пользователя конфигурации в справочнике “Пользователи” (для простоты будем искать его по наименованию) и завершать работу системы если он не найден. Это необходимо для того, чтобы обеспечить заполнение параметров сеанса.
Перейдем на закладку “Права” роли “Пользователь” и откроем список прав справочника “Контрагенты”. Будем использовать шаблон ограничений “КонтрагентыЧтениеИзменеие” для прав “Чтение”, “Изменение” и “Доблавление”.
Для права “Чтение” будем использовать шаблон с параметром “ИЛИ ЭтоГруппа”. При этом пользователям данной роли будет разрешено чтение не только элементов справочника “Контрагенты” своей организации, но и всех групп этого справочника.
Поскольку при добавлении новых элементов справочника системой выполняется неявное чтение предопределенных реквизитов (это нужно, например, для нумерации), то необходимо обеспечить беспрепятственное чтение этих полей. Для этого добавим дополнительную строку с пустым текстом ограничения в таблицу ограничения доступа к данным и перечислим поля для которых действует данное правило – Ссылка, Версия данных, Родитель, Код.
Таким образом, поставленная задача ограничения доступа на уровне записей решена. Пользователи с действующими ограничениями получат доступ на просмотр и редактирование данных только своей организации.
Читайте также: