Имя: Пароль:
1C
1С v8
РольДоступна() перестал работать на 8.3
, ,
0 lirt82
 
12.11.18
12:09
После обновления конфы изменился режим совместимости с 8.2 на 8.3, в конфе есть самописный регистр сведении, теперь при открытии ФормыСписка этого регистра вываливается ошибка:
{РегистрСведений.ПланПродаж.Форма.ФормаСписка.Форма(620)}: Ошибка при вызове метода контекста (РольДоступна)
        Если НЕ РольДоступна("КоммерческийДепартаментТолькоПросмотр") Тогда
по причине:
Недопустимое значение параметра (параметр номер '1')

Процедура ОбновлениеОтображения()
        Если НЕ РольДоступна("КоммерческийДепартаментТолькоПросмотр") Тогда
            Если Не ТекСтрока=Неопределено Тогда
                Если ЭлементыФормы.РегистрСведенийСписок.ТекущаяКолонка.Имя=
///

как исправить? нарыл что "начиная с версии Платформы 8.3, в случае когда не найдена в метаданных роль по указанному имени система вызывает Исключительную ситуацию, ранее система вернула бы результат Ложь".
1 ЛЮС
 
12.11.18
12:15
Обернуть в попытку не предлагать?
2 Фрэнки
 
12.11.18
12:15
Доступность:

Сервер, толстый клиент, внешнее соединение.
3 Волшебник
 
12.11.18
12:16
Если НЕ РольДоступна(Метаданные.Роли.КоммерческийДепартаментТолькоПросмотр) Тогда
4 lirt82
 
12.11.18
12:20
(1) про Попытку знаю)) много пишется что так глюшить ошибки неправильно, потому что нужно понимать почему они возникли, да пока сделал чтоб пользаки не вопили.
5 Фрэнки
 
12.11.18
12:23
(4) у тебя в написании строки ошибка. Не тип, а сама строка - в базе не нашлось Роли с таким Наименованием
6 Hmster
 
12.11.18
12:23
делаешь модуль, в модуле проверку нормальную пишешь с проверкой метаданных.
7 lirt82
 
12.11.18
12:24
(3)  Поле объекта не обнаружено (КоммерческийДепартаментТолькоПросмотр)
        Если НЕ РольДоступна(Метаданные.Роли.КоммерческийДепартаментТолькоПросмотр) Тогда
8 lirt82
 
12.11.18
12:27
(6) как вариант, согласен, но можно как-то универсально) глобально? по ходу в других самописных местах начнет вылазить, как пользователи начнут юзать конфу.
9 Вафель
 
12.11.18
12:28

Если Метаданные.Роли.Найти(...) <> Неопределено Тогда
10 Фрэнки
 
12.11.18
12:29
Метаданные.Роли.Найти("КоммерческийДепартаментТолькоПросмотр")

Если объект не найден, то возвращается значение Неопределено.
Описание:

Осуществляет поиск в коллекции объекта описания метаданного по его имени.
11 Cyberhawk
 
12.11.18
12:30
Динамическое обновление пади
12 Serg_1960
 
12.11.18
12:30
Если в конфигурации есть УправлениеДоступом.ЕстьРоль() и УправлениеДоступом.ЕстьПраво(), то рекомендую пользоваться только ими. Ваш Кэп.
13 lirt82
 
12.11.18
12:31
(11) ага)) оно самое любимое
14 Cyberhawk
 
12.11.18
12:32
Обновись монопольно еще разок
15 lirt82
 
12.11.18
12:36
не понял! в конфе есть эта роль, а отладчик показывает что нет....
16 lirt82
 
12.11.18
12:37
все)) это интерфейс такой есть, а роли нет в конфе
17 PR
 
12.11.18
12:39
18 минут бурной паники
18 lirt82
 
12.11.18
12:39
подождите роли такой нет в конфе что тогда с условием....
19 lirt82
 
12.11.18
12:41
все тему закрывайте, я роль добавлю с таким именем
20 PR
 
12.11.18
12:46
(19) https://www.forum.mista.ru/about.php
"Обратите внимание, что после создания темы она уже не принадлежит вам лично и вы не можете ею распоряжаться, например, требовать закрытия темы, даже если вы получили ответ на поставленный вопрос. Это сделано сознательно, потому что тема может быть интересна другим участниками форума или она наведет их на другие мысли (возможно даже не связанные с исходной поставленной темой). Из таких тем могут возникать даже новые проекты и сообщества!"
Теперь твоя истерика в анналах истории, живи с этим
21 Фрэнки
 
12.11.18
12:47
(20) :-)
22 Волшебник
 
12.11.18
12:48
(20) Да, пятно в карьере на всю жизнь.
23 Serg_1960
 
12.11.18
12:48
(18) Исключение у него, как и положено, - автор обновился так, что аж роли отвалились :)

(19) Тему рано закрывать, пока не обратишь своё внимание на (12) - в современных конфигурациях появились группы, профили и т.д. пользователей. Да и проверку на полный доступ всегда надо добавлять иначе как-то не комильфо.
24 Serg_1960
 
12.11.18
12:50
* "полный доступ" --> "ПолныеПрава"
25 PR
 
12.11.18
12:52
(22) Таких не берут в космонавты
Разве что кровью смоет позор
26 Serg_1960
 
12.11.18
12:54
Вы ещё сообщество или проект "18 минутная паника" создайте :))
27 dmpl
 
12.11.18
13:18
Вот вы, блин, мучаетесь... в УПП уже все было придумано. Рекомендую упереть оттуда. Тогда РольДоступна() вообще не нужна будет.
28 Serg_1960
 
12.11.18
15:06
(27) Не в тему. Дело не в конфигурации, а в режиме совместимости. А насчет УПП - крайне неудачный пример, она также как и у автора спикирует в исключение на своих 150 обращений к РольДоступна().
29 dmpl
 
12.11.18
19:48
(28) В УПП есть ПВХ ДополнительныеПраваПользователей и регистр сведений ЗначенияДополнительныхПравПользователей, РольДоступна() при наличии такого механизма не нужна - новые права можно вводить прямо в режиме предприятия, и, например, если это внешняя обработка, внешний отчет или внешняя печатная форма, то даже конфигурацию БД не придется обновлять. А самое главное - нет кучи ролей с длинными-длинными названиями в дереве метаданных.
30 Serg_1960
 
12.11.18
20:47
(29) Конфигуратор - глобальный поиск - "РольДоступна(" - и после этого расскажи разработчикам что оно там им не нужно :)
31 dmpl
 
12.11.18
21:43
(30) У вас просто не было крупных гетерогенных систем, с кучей прав и кучей доп. обработок, когда требуется чтобы обработка работала без изменений везде, потому что иначе запутаешься в версиях. А в более простом случае - имеем иерархический(!) список прав, которым можно дать понятное название, стабильный идентификатор и, самое главное, - приложить описание. И все это - не заходя в Конфигуратор. Более того, задачу по наделению такими правами можно свалить на пользователей, не давая им ненужных прав.

P.S. Глобальный поиск по "ЕстьДопПраво(" ничем не хуже.
32 Serg_1960
 
13.11.18
10:42
(31) Мой месседж не об этом, а о том что УПП по прежнему полна обращением к РольДоступна(). Что несколько противоречит Вашему "РольДоступна() при наличии такого механизма не нужна" из (29)
33 dmpl
 
14.11.18
12:52
(32) Во-первых, много кто делает то, что не нужно. Во-вторых, я же не написал "не нужна вообще". Здесь вполне конкретный контекст, когда РольДоступна() используется фактически для разграничения прав или настройки форм, не требующих дополнительного доступа к метаданным.
Компьютеры — это как велосипед. Только для нашего сознания. Стив Джобс