|
Проверка на тип | ☑ | ||
---|---|---|---|---|
0
АСКЕТ
25.01.19
✎
13:20
|
народ кто подскажет ? чет проверка на тип не срабатывает
Для каждого ЭлСп из СписокЗн Цикл Об =Метаданные.НайтиПоТипу(ТипЗнч(ЭлСп)) ; Сообщить(Об); //ЭлСп.Пометка = Истина Сообщить(ЭлСп.Значение); РольДоступа = Метаданные.Роли; // Для каждого Стр из РольДоступа Цикл Если ПравоДоступа("Чтение",Об,Стр)Тогда Сообщить(Стр); Сообщить( "Чтение"); КонецЕслИ; |
|||
1
mistеr
25.01.19
✎
13:21
|
Не вижу проверки на тип.
|
|||
2
zvial
25.01.19
✎
13:22
|
ТипЗнч(ЭлСп) вернет ЭлементСпискаЗначений, если СписокЗн имеет тип "СписокЗначений"
|
|||
3
АСКЕТ
25.01.19
✎
13:25
|
и?? ЭлСп.Значение
|
|||
4
АСКЕТ
25.01.19
✎
13:32
|
Для каждого ЭлСп из СписокЗн Цикл
Об =Метаданные.НайтиПоТипу(ТипЗнч(ЭлСп.Значение)) ; //ЭлСп.Пометка = Истина Если ТипЗнч(ЭлСп.Значение) = Тип("СправочникСсылка.Организации") тогда Сообщить(ЭлСп.Значение); РольДоступа = Метаданные.Роли; // Для каждого Стр из РольДоступа Цикл Если ПравоДоступа("Чтение",Об,Стр)Тогда Сообщить(Стр); Сообщить( "Чтение"); КонецЕслИ; |
|||
5
ZDenis
25.01.19
✎
13:35
|
(4) Что надо то?
|
|||
6
АСКЕТ
25.01.19
✎
13:35
|
(5)
Проверка на тип не срабатывает .в вопросе же пояснил |
|||
7
Numerus Mikhail
25.01.19
✎
13:36
|
(6) Сообщить(ТипЗнч(ЭлСп.Значение))
|
|||
8
АСКЕТ
25.01.19
✎
13:38
|
условие проверки на тип .не видит тип . нужный ему .
|
|||
9
mistеr
25.01.19
✎
13:41
|
(6) Та каком типе не срабатывает?
|
|||
10
Numerus Mikhail
25.01.19
✎
13:43
|
(8) что значит не видит?
Можно конкретнее говорить? |
|||
11
АСКЕТ
25.01.19
✎
13:43
|
(9) Если ТипЗнч(ЭлСп.Значение) = Тип("СправочникСсылка.Организации") тогда
|
|||
12
Numerus Mikhail
25.01.19
✎
13:44
|
(11) выполни в самом начале цикла то, что в (7). Результат сюда. Не верю я тебе.
|
|||
13
АСКЕТ
25.01.19
✎
13:44
|
(10)
ну допустим у меня есть некая кнопка после нажатия на которую условие проверки на тип не срабатывает эл значения из списка не равен типу спрссылка организации |
|||
14
zvial
25.01.19
✎
13:45
|
(13) Потому что там не тип ссылки на справочник
|
|||
15
zvial
25.01.19
✎
13:46
|
А что там за тип, можно посмотреть в отладчике
|
|||
16
ZDenis
25.01.19
✎
13:48
|
(13) Что конкретно надо?
1) Надо чтобы ТипЗнч(ЭлСп.Значение) = Тип("СправочникСсылка.Организации") или 2) ТипЗнч(ЭлСп.Значение) <> Тип("СправочникСсылка.Организации") Откуда берется "СписокЗн"? Что в него добавлено и как? |
|||
17
АСКЕТ
25.01.19
✎
13:51
|
(15) (15)
сейчас спискузначения задам тип значения Любая ссылка и посмотрю что в итоге |
|||
18
АСКЕТ
25.01.19
✎
14:14
|
ТипЗн(Справочник.Организации) = Тип("СправочникСсылка.Организации") ну как то так. разные типы ? или одинаковые
|
|||
19
ZDenis
25.01.19
✎
14:16
|
(18) Разнае
|
|||
20
АСКЕТ
25.01.19
✎
14:16
|
(16)
СписокЗн - в него выгружаю функцией список всех метаданных . тип его произвольный |
|||
21
АСКЕТ
25.01.19
✎
14:17
|
(19) от поэтому и не проходит условие на проверку
|
|||
22
ZDenis
25.01.19
✎
14:17
|
+ 19 Я вообще не знаю что такое у тебя "Справочник.Организации"
|
|||
23
АСКЕТ
25.01.19
✎
14:19
|
(22) объект выгруженных метаданных в сп значений .
ставлю пометку - истина нажимаю кнопку проверить \ условие не отрабатывает теперь ясно по чему типы разные |
|||
24
dezss
25.01.19
✎
14:26
|
(23) Тебе еще в (7) написали, как надо сделать, чтобы поверить.
|
|||
25
АСКЕТ
25.01.19
✎
14:29
|
(24) Да.что ты ? а если в сравниваемых типах в втором нет такого типа ? Справочник Ссылка есть он не подходит
ТипЗнч(Об) = Тип("СправочникСсылка.Организации") |
|||
26
dezss
25.01.19
✎
14:30
|
(25) Да твою ж...
Сделай просто Сообщить(ТипЗнч(ЭлСп.Значение)) И увидишь, что у тебя не так. |
|||
27
АСКЕТ
25.01.19
✎
14:31
|
(26) делал уже не раз
Справочник.Организации . |
|||
28
dezss
25.01.19
✎
14:33
|
(27) Теперь Сообщить(ЭлСп.Значение)
|
|||
29
АСКЕТ
25.01.19
✎
14:34
|
(28) ну строковый . а зачем мне его блин преобразовывать туда сюда .что за бред
|
|||
30
АСКЕТ
25.01.19
✎
14:35
|
(28) зачем так делать ? запутывать людей .что за политика такая
|
|||
31
singlych
25.01.19
✎
14:40
|
Это ж объект метаданных, с чего бы ему быть равным ссылке. Юзай какое-нибудь .ПолноеИмя()
|
|||
32
АСКЕТ
25.01.19
✎
14:41
|
(31)
) ща попробуем |
|||
33
dezss
25.01.19
✎
14:45
|
а...так там список метаданных...ну это сработает тогда...
конечно, их нельзя сравнивать... (31) так полное имя и вернет Справочник.Организации |
|||
34
АСКЕТ
25.01.19
✎
14:49
|
(33)
вывод такой .что чтобы выполнить задачу в три строки кода надо сильно извернутся ,а й 1с ай молодца нет бы универсальный вызов сделать . функцию преобразования типов из строки в строку в общем модуле писать? |
|||
35
АСКЕТ
25.01.19
✎
14:50
|
Если Документы.ТипВсеСсылки().СодержитТип(ТипЗнч(<...>)) Тогда
ИначеЕсли Справочники.ТипВсеСсылки().СодержитТип(ТипЗнч(<...>)) Тогда ИначеЕсли ПланыВидовХарактеристик.ТипВсеСсылки().СодержитТип(ТипЗнч(<...>)) Тогда |
|||
36
dezss
25.01.19
✎
14:53
|
(34) А зачем тебе список значений с элементами-метаданными?
|
|||
37
АСКЕТ
25.01.19
✎
14:54
|
вот к примеру пишешь код 2 дня потом взял и уперся в некое чудо . которое в корне меняет твою работу .
увеличивая ее сроки раза в 3 ) почему я не могу в 1с сравнить тип выгруженных объектов метаданных с типом из реквизита обработки - ссылка на справочник |
|||
38
АСКЕТ
25.01.19
✎
14:54
|
(36) ну допустим проверить роли .права доступа на любой объект конфигурации
|
|||
39
АСКЕТ
25.01.19
✎
15:04
|
можно сделать так по индуски
прописать все объекты метаданных . а их там туева хуча . програмно и у каждого сделать проверку если это спр .организация тогда проверяем роли и права по другому пока не вижу как тут сделать что то) |
|||
40
mistеr
25.01.19
✎
15:10
|
Ты бы конечную цель озвучил...
|
|||
41
dezss
25.01.19
✎
15:10
|
(37) Потому что ты не понял сразу того, что они отличаются?
|
|||
42
dezss
25.01.19
✎
15:11
|
Тебе, скорей всего, надо идти от противного
Что-то вроде... <ТвояСсылка>.Метаданные() = ЭлСп.Значение |
|||
43
dezss
25.01.19
✎
15:11
|
(37) В реквизите обработки у тебя что?
|
|||
44
АСКЕТ
25.01.19
✎
15:16
|
(43) сделал списком
да сделай полем один хрен ссылочный тип не объект метаданных) |
|||
45
АСКЕТ
25.01.19
✎
15:17
|
(42) думал в эту сторону щас проверим
|
|||
46
dezss
25.01.19
✎
15:20
|
(44) тип элемента списка какой?
|
|||
47
dezss
25.01.19
✎
15:20
|
(46) + если любая ссылка, то (42)
|
|||
48
АСКЕТ
25.01.19
✎
15:24
|
(46) Строка
|
|||
49
АСКЕТ
25.01.19
✎
15:25
|
(47) я раньше и не думал.что в списке любой тип строковым становиться
|
|||
50
dezss
25.01.19
✎
15:32
|
(49) э...ты что-то путаешь
|
|||
51
АСКЕТ
25.01.19
✎
15:34
|
сам мне писал Теперь Сообщить(ЭлСп.Значение)
строку возвращает . |
|||
52
АСКЕТ
25.01.19
✎
15:35
|
(50) что я где попутал?
|
|||
53
АСКЕТ
25.01.19
✎
15:44
|
1с это жесть .зажигает кремнии
|
|||
54
dezss
25.01.19
✎
15:51
|
(51) это строку с именем, а Сообщить(ТипЗнч(ЭлСп.Значение)) строку с типом)
|
|||
55
dezss
25.01.19
✎
15:52
|
(52) какой у тебя проставлен тип для элементов списка значений?
|
|||
56
АСКЕТ
25.01.19
✎
15:56
|
Произвольный
|
|||
57
АСКЕТ
25.01.19
✎
15:58
|
(54) да эт я просто скопировал . спеша
|
|||
58
dezss
25.01.19
✎
15:58
|
(56) хм...лучше, ИМХО, любую ссылку поставь, либо доп. проверку.
если выбираешь только ссылки для проверки, то (42) |
|||
59
АСКЕТ
25.01.19
✎
16:02
|
(58) тогда список пустой загрузиться
|
|||
60
dezss
25.01.19
✎
16:17
|
(59) Так...давай тогда с начала.
Что ты с чем сравнивать собираешься? У тебя в твоем списке значений что хранится, объекты метаданных? Если да, то тебе надо делать проверку делать так ЭлСп.Значение = Справочники.Организации.ПустаяСсылка().Метаданные() |
|||
61
АСКЕТ
25.01.19
✎
16:24
|
Если ТипЗнч(ЭлСп.Значение) = Тип(Справочники.Организации.ПустаяСсылка().Метаданные())
тогда (60) не не так тип не определен организации |
|||
62
АСКЕТ
25.01.19
✎
16:28
|
(60) в список значений выгружен список объектов метаданных и у него тип строка . при чем у всех объектов
|
|||
63
dezss
25.01.19
✎
16:28
|
(61) нафига так?
Я не так писал, а так: Если ЭлСп.Значение = Справочники.Организации.ПустаяСсылка().Метаданные() тогда |
|||
64
dezss
25.01.19
✎
16:29
|
(62) (26) и (27) посмотри...
ты другое там писал |
|||
65
АСКЕТ
25.01.19
✎
16:30
|
(63) я 2 раза проверил с и без
|
|||
66
dezss
25.01.19
✎
16:30
|
блин...
выполни это: Сообщить(ТипЗнч(ЭлСп.Значение)); Сообщить(ТипЗнч(Справочники.Организации.ПустаяСсылка().Метаданные())); результат сюда |
|||
67
dezss
25.01.19
✎
16:31
|
И покажи код заполнения твоего списка значений
|
|||
68
АСКЕТ
25.01.19
✎
16:32
|
(67) мТип = Тип("ОбъектМетаданных");
мТЗ = ПолучитьСтруктуруХраненияБазыДанных(); Для Каждого эл из мТЗ Цикл Если эл.Метаданные = "" Тогда Продолжить; КонецЕсли; Попытка Если ТипЗнч(Метаданные.НайтиПоПолномуИмени(эл.Метаданные)) = мТип Тогда СписокЗн.Добавить(эл.Метаданные); КонецЕсли; Исключение КонецПопытки; КонецЦикла; |
|||
69
dezss
25.01.19
✎
16:35
|
(68) Вот жеж блин...надо было первым делом это спросить...
в СП даже есть Метаданные(Metadata) – полное имя объекта метаданных; ИМЯ!!! Т.е. не объект, а строка!!! |
|||
70
АСКЕТ
25.01.19
✎
16:37
|
(69) так сразу и узнали из сообщить .что это строка.
дело в другом. как теперь строку преобразовать в ссылочный тип |
|||
71
dezss
25.01.19
✎
16:40
|
(70) Метаданные.НайтиПоПолномуИмени()
|
|||
72
АСКЕТ
25.01.19
✎
16:45
|
минуту
|
|||
73
АСКЕТ
25.01.19
✎
17:04
|
(71) Об= ЭлСп.Значение;
//Об =Метаданные.НайтиПоТипу(ТипЗнч(ЭлСп.Значение)) ; //Об.Метаданные().Имя = ЭлСп.Значение; Пр= Метаданные.НайтиПоПолномуИмени("Справочник.Организации") ; Если (Об) = Пр тогда РольДоступа = Метаданные.Роли; |
|||
74
АСКЕТ
25.01.19
✎
17:06
|
выходит так справочник.орг = организация;
|
|||
75
АСКЕТ
25.01.19
✎
17:07
|
выходит так справочник.орг = организации;
|
|||
76
АСКЕТ
25.01.19
✎
17:07
|
все в баню. пятница
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |