Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Проверка на тип

Проверка на тип
Я
   АСКЕТ
 
25.01.19 - 13:20
народ кто подскажет ? чет проверка на тип не срабатывает

Для каждого ЭлСп из СписокЗн Цикл     
Об =Метаданные.НайтиПоТипу(ТипЗнч(ЭлСп)) ;    
Сообщить(Об);    
  //ЭлСп.Пометка = Истина
    
        
        Сообщить(ЭлСп.Значение);
        
  РольДоступа =      Метаданные.Роли;
  
  


  //
     Для каждого Стр из РольДоступа Цикл
        
        
              
        
         Если   ПравоДоступа("Чтение",Об,Стр)Тогда
                      Сообщить(Стр);

                     Сообщить(  "Чтение");
                              КонецЕслИ;
 
 
   mistеr
 
1 - 25.01.19 - 13:21
Не вижу проверки на тип.
   zvial
 
2 - 25.01.19 - 13:22
ТипЗнч(ЭлСп) вернет ЭлементСпискаЗначений, если СписокЗн имеет тип "СписокЗначений"
   АСКЕТ
 
3 - 25.01.19 - 13:25
и??  ЭлСп.Значение
   АСКЕТ
 
4 - 25.01.19 - 13:32
Для каждого ЭлСп из СписокЗн Цикл     
Об =Метаданные.НайтиПоТипу(ТипЗнч(ЭлСп.Значение)) ;    
    
  //ЭлСп.Пометка = Истина

        Если ТипЗнч(ЭлСп.Значение) = Тип("СправочникСсылка.Организации") тогда 
        
        Сообщить(ЭлСп.Значение);
        
  РольДоступа =      Метаданные.Роли;
  
  
 
 
  //

     Для каждого Стр из РольДоступа Цикл 
         
         
              
         
         Если   ПравоДоступа("Чтение",Об,Стр)Тогда 
                      Сообщить(Стр);

                     Сообщить(  "Чтение"); 
                              КонецЕслИ;
   ZDenis
 
5 - 25.01.19 - 13:35
(4) Что надо то?
   АСКЕТ
 
6 - 25.01.19 - 13:35
(5)

Проверка на тип не срабатывает  .в вопросе же пояснил
   Numerus Mikhail
 
7 - 25.01.19 - 13:36
(6) Сообщить(ТипЗнч(ЭлСп.Значение))
   АСКЕТ
 
8 - 25.01.19 - 13:38
условие проверки  на тип .не видит тип . нужный ему .
   mistеr
 
9 - 25.01.19 - 13:41
(6) Та каком типе не срабатывает?
   Numerus Mikhail
 
10 - 25.01.19 - 13:43
(8) что значит не видит?
Можно конкретнее говорить?
 
 Рекламное место пустует
   АСКЕТ
 
11 - 25.01.19 - 13:43
(9)  Если ТипЗнч(ЭлСп.Значение) = Тип("СправочникСсылка.Организации") тогда
   Numerus Mikhail
 
12 - 25.01.19 - 13:44
(11) выполни в самом начале цикла то, что в (7). Результат сюда. Не верю я тебе.
   АСКЕТ
 
13 - 25.01.19 - 13:44
(10)

ну допустим у меня есть некая кнопка после нажатия на которую  условие проверки  на тип не срабатывает
эл значения из списка не равен  типу спрссылка организации
   zvial
 
14 - 25.01.19 - 13:45
(13) Потому что там не тип ссылки на справочник
   zvial
 
15 - 25.01.19 - 13:46
А что там за тип, можно посмотреть в отладчике
   ZDenis
 
16 - 25.01.19 - 13:48
(13) Что конкретно надо?
1) Надо чтобы ТипЗнч(ЭлСп.Значение) = Тип("СправочникСсылка.Организации")
или
2) ТипЗнч(ЭлСп.Значение) <> Тип("СправочникСсылка.Организации")

Откуда берется "СписокЗн"?
Что в него добавлено и как?
   АСКЕТ
 
17 - 25.01.19 - 13:51
(15) (15)

сейчас спискузначения задам тип значения Любая ссылка и посмотрю что в итоге
   АСКЕТ
 
18 - 25.01.19 - 14:14
ТипЗн(Справочник.Организации) = Тип("СправочникСсылка.Организации")  ну как то так.  разные типы ? или одинаковые
   ZDenis
 
19 - 25.01.19 - 14:16
(18) Разнае
   АСКЕТ
 
20 - 25.01.19 - 14:16
(16)
СписокЗн - в него выгружаю  функцией  список всех метаданных  . тип его произвольный
   АСКЕТ
 
21 - 25.01.19 - 14:17
(19) от поэтому и не проходит условие на проверку
   ZDenis
 
22 - 25.01.19 - 14:17
+ 19 Я вообще не знаю что такое у тебя "Справочник.Организации"
   АСКЕТ
 
23 - 25.01.19 - 14:19
(22) объект выгруженных метаданных в сп значений  .

ставлю пометку - истина  нажимаю кнопку проверить \
условие  не отрабатывает  теперь ясно по чему типы разные
   dezss
 
24 - 25.01.19 - 14:26
(23) Тебе еще в (7) написали, как надо сделать, чтобы поверить.
   АСКЕТ
 
25 - 25.01.19 - 14:29
(24) Да.что ты ?  а если в сравниваемых типах в втором нет такого типа ?   Справочник Ссылка есть  он не подходит

ТипЗнч(Об) = Тип("СправочникСсылка.Организации")
   dezss
 
26 - 25.01.19 - 14:30
(25) Да твою ж...
Сделай просто Сообщить(ТипЗнч(ЭлСп.Значение))
И увидишь, что у тебя не так.
   АСКЕТ
 
27 - 25.01.19 - 14:31
(26) делал уже не раз

Справочник.Организации   .
   dezss
 
28 - 25.01.19 - 14:33
(27) Теперь Сообщить(ЭлСп.Значение)
   АСКЕТ
 
29 - 25.01.19 - 14:34
(28) ну строковый  . а зачем мне его блин преобразовывать туда сюда  .что за бред
   АСКЕТ
 
30 - 25.01.19 - 14:35
(28) зачем так делать ? запутывать людей .что за политика такая
   singlych
 
31 - 25.01.19 - 14:40
Это ж объект метаданных, с чего бы ему быть равным ссылке. Юзай какое-нибудь .ПолноеИмя()
   АСКЕТ
 
32 - 25.01.19 - 14:41
(31)
) ща попробуем
   dezss
 
33 - 25.01.19 - 14:45
а...так там список метаданных...ну это сработает тогда...
конечно, их нельзя сравнивать...
(31) так полное имя и вернет Справочник.Организации
 
 
   АСКЕТ
 
34 - 25.01.19 - 14:49
(33)

вывод такой .что чтобы выполнить задачу в три строки кода  надо сильно извернутся ,а й 1с ай молодца
нет бы универсальный вызов сделать .
функцию преобразования типов из строки в строку в общем модуле писать?
   АСКЕТ
 
35 - 25.01.19 - 14:50
Если Документы.ТипВсеСсылки().СодержитТип(ТипЗнч(<...>)) Тогда
  ИначеЕсли Справочники.ТипВсеСсылки().СодержитТип(ТипЗнч(<...>)) Тогда
  ИначеЕсли ПланыВидовХарактеристик.ТипВсеСсылки().СодержитТип(ТипЗнч(<...>)) Тогда
   dezss
 
36 - 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
можно сделать так по индуски 

прописать все объекты метаданных . а их там туева хуча . програмно и у каждого сделать проверку 

если это спр .организация тогда проверяем роли и права

по другому  пока не вижу как тут сделать что то)
   mistеr
 
40 - 25.01.19 - 15:10
Ты бы конечную цель озвучил...
   dezss
 
41 - 25.01.19 - 15:10
(37) Потому что ты не понял сразу того, что они отличаются?
   dezss
 
42 - 25.01.19 - 15:11
Тебе, скорей всего, надо идти от противного
Что-то вроде...
<ТвояСсылка>.Метаданные() = ЭлСп.Значение
   dezss
 
43 - 25.01.19 - 15:11
(37) В реквизите обработки у тебя что?
   АСКЕТ
 
44 - 25.01.19 - 15:16
(43) сделал списком  
да сделай полем один хрен ссылочный тип  не объект метаданных)
   АСКЕТ
 
45 - 25.01.19 - 15:17
(42) думал в эту сторону щас проверим
   dezss
 
46 - 25.01.19 - 15:20
(44) тип элемента списка какой?
   dezss
 
47 - 25.01.19 - 15:20
(46) + если любая ссылка, то (42)
   АСКЕТ
 
48 - 25.01.19 - 15:24
(46) Строка
   АСКЕТ
 
49 - 25.01.19 - 15:25
(47) я раньше и не думал.что  в списке  любой тип строковым становиться
 
 Рекламное место пустует
   dezss
 
50 - 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с это жесть .зажигает кремнии
   dezss
 
54 - 25.01.19 - 15:51
(51) это строку с именем, а Сообщить(ТипЗнч(ЭлСп.Значение)) строку с типом)
   dezss
 
55 - 25.01.19 - 15:52
(52) какой у тебя проставлен тип для элементов списка значений?
   АСКЕТ
 
56 - 25.01.19 - 15:56
Произвольный
   АСКЕТ
 
57 - 25.01.19 - 15:58
(54) да эт я просто скопировал . спеша
   dezss
 
58 - 25.01.19 - 15:58
(56) хм...лучше, ИМХО, любую ссылку поставь, либо доп. проверку.

если выбираешь только ссылки для проверки, то (42)
   АСКЕТ
 
59 - 25.01.19 - 16:02
(58) тогда список пустой загрузиться
   dezss
 
60 - 25.01.19 - 16:17
(59) Так...давай тогда с начала.
Что ты с чем сравнивать собираешься?
У тебя в твоем списке значений что хранится, объекты метаданных?
Если да, то тебе надо делать проверку делать так
ЭлСп.Значение = Справочники.Организации.ПустаяСсылка().Метаданные()
   АСКЕТ
 
61 - 25.01.19 - 16:24
Если ТипЗнч(ЭлСп.Значение) = Тип(Справочники.Организации.ПустаяСсылка().Метаданные())
 тогда (60) 

не не так  тип не определен организации
   АСКЕТ
 
62 - 25.01.19 - 16:28
(60) в список значений выгружен  список объектов метаданных  и у него тип строка . при чем у всех объектов
   dezss
 
63 - 25.01.19 - 16:28
(61) нафига так?
Я не так писал, а так:
Если ЭлСп.Значение = Справочники.Организации.ПустаяСсылка().Метаданные()
тогда
   dezss
 
64 - 25.01.19 - 16:29
(62) (26) и (27) посмотри...
ты другое там писал
   АСКЕТ
 
65 - 25.01.19 - 16:30
(63) я 2 раза проверил с и без
   dezss
 
66 - 25.01.19 - 16:30
блин...
выполни это:

Сообщить(ТипЗнч(ЭлСп.Значение));
Сообщить(ТипЗнч(Справочники.Организации.ПустаяСсылка().Метаданные()));

результат сюда
   dezss
 
67 - 25.01.19 - 16:31
И покажи код заполнения твоего списка значений
   АСКЕТ
 
68 - 25.01.19 - 16:32
(67)    мТип = Тип("ОбъектМетаданных");
    
    мТЗ = ПолучитьСтруктуруХраненияБазыДанных();
    Для Каждого эл из мТЗ Цикл 
        Если эл.Метаданные = "" Тогда 
            Продолжить;
        КонецЕсли;
        
        Попытка
            Если ТипЗнч(Метаданные.НайтиПоПолномуИмени(эл.Метаданные)) = мТип Тогда 
                
                                          
          СписокЗн.Добавить(эл.Метаданные);
          
          
                     
                 
                
            КонецЕсли;
        Исключение
        КонецПопытки;
    КонецЦикла;
   dezss
 
69 - 25.01.19 - 16:35
(68) Вот жеж блин...надо было первым делом это спросить...
в СП даже есть
Метаданные(Metadata) – полное имя объекта метаданных; 
ИМЯ!!! Т.е. не объект, а строка!!!
   АСКЕТ
 
70 - 25.01.19 - 16:37
(69) так сразу и узнали из сообщить .что это строка.
дело в другом. как теперь строку преобразовать в ссылочный тип
   dezss
 
71 - 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
все в баню. пятница


Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Рекламное место пустует