Имя: Пароль:
1C
1С v8
Почему не определяет по метаданным что это справочник?
,
0 Cerera
 
25.06.13
11:03
Вот простенький код.


   Для Каждого Эл Из Метаданные[ТипОбъекта][ИмяОбъекта].Реквизиты Цикл
       Если Метаданные.Справочники.Содержит(Эл) Тогда
           ТипОбъекта="Справочники";
       ИначеЕсли Метаданные.Документы.Содержит(Эл) Тогда
           ТипОбъекта="Документы";
       КонецЕсли;
   КонецЦикла;

в Эл попадает объект типа "ОбъектМетаданных". Почему то даже когда он является справочником "Организации", команда

       Если Метаданные.Справочники.Содержит(Эл) Тогда

не может определить этого. как поменять убрать ошибку?
1 Поросенок Петр
 
25.06.13
11:11
Обходишь реквизиты, а ищешь среди справочников. Что ещё хотел?
2 НЕА123
 
25.06.13
11:11
(0)

что-то крыша у меня едет, что ли...
ТипОбъекта и так у тебя содержит "Справочник", "Документ" или х.з. что...
3 Поросенок Петр
 
25.06.13
11:13
Можно конечно искать по типам реквизитов, но тут тоже засада с составными типами.
4 Maxus43
 
25.06.13
11:14
Если Справочники.ТипВсеСсылки().Содержит(ТвойТипСправочника) Тогда

//это справочник
5 acsent
 
25.06.13
11:16
(0) Налицо принципиальное непонимание программирования вообще
6 Maxus43
 
25.06.13
11:16
>>Почему не определяет по метаданным что это справочник?
потому что "Эл" это реквизит, а не сам справочник
7 Сэкс
 
25.06.13
11:17
(5) +1
8 Поросенок Петр
 
25.06.13
11:25
Такое ощущение, что половина мисты родилась с кристальным пониманием структуры объектов в 1С (казалось бы, причем тут понимание программирования?)
9 Cerera
 
25.06.13
11:37
(6)А как определить по метаданным тип реквизита?
так чтоли Эл.Тип ?
10 Cerera
 
25.06.13
11:45
Для Каждого Эл Из Метаданные[ТипОбъекта][ИмяОбъекта].Реквизиты Цикл
               Если Справочники.ТипВсеСсылки().СодержитТип(ТипЗнч(Эл.Тип)) Тогда
           ТипОбъекта="Справочники";
       ИначеЕсли Документы.ТипВсеСсылки().СодержитТип(ТипЗнч(Эл.Тип)) Тогда
           ТипОбъекта="Документы";
       КонецЕсли;
   КонецЦикла;


тоже нихрена
11 Поросенок Петр
 
25.06.13
11:47
Нужно заставить себя понять, чем отличается тип от описания типов.
12 acsent
 
25.06.13
11:48
(10) ты вообще в справку смотришь: каких типов параметры должны быть, какие типы возвращаются?
13 Cerera
 
25.06.13
11:51
(12) ТипЗнч(Эл.Тип) возвращает "Тип"
и СодержитТип принимает тип.
14 Поросенок Петр
 
25.06.13
11:52
Железный аргумент.
15 acsent
 
25.06.13
11:53
какого типа Эл.Тип?
16 acsent
 
25.06.13
11:53
какой тип вернет ТипЗнч(Эл.Тип)?
17 Cerera
 
25.06.13
11:59
(15)Описание типов
(16)Тип
18 Cerera
 
25.06.13
12:13
вобщем задача нерешаема.
19 Cerera
 
25.06.13
12:15
Я начал понимать. если Эл - это реквизит, то Эл.Тип.Типы() - это список типов, которые он может принимать.
20 hhhh
 
25.06.13
12:21
стоп

Для Каждого Эл Из Метаданные[ТипОбъекта][ИмяОбъекта].Реквизиты Цикл

у тебя же уже есть ТипОбъекта, зачем ты его второй раз разыскиваешь и присваиваешь?
21 Молодой 1Снег
 
25.06.13
12:22
Если Справочники.ТипВсеСсылки().СодержитТип(ТипЗнч(Эл)) Тогда
22 Поросенок Петр
 
25.06.13
12:22
Тут вопрос не в реализации, а в задаче. Лучше бы ТС сразу рассказал, что хочет сделать.
23 Поросенок Петр
 
25.06.13
12:22
(21) Ишо один.
24 Cerera
 
25.06.13
12:24
Вот я разобрался


   Для Каждого Эл Из Метаданные["Документы"]["ЗаказПоставщику"].Реквизиты Цикл
       Для Каждого ТипТип Из Эл.Тип.Типы() Цикл
           Сообщить(ТипТип);
           Если Справочники.ТипВсеСсылки().СодержитТип(ТипТип) Тогда
               Сообщить("Справочник");
           КонецЕсли;
       КонецЦикла;
   КонецЦикла;
25 Молодой 1Снег
 
25.06.13
12:24
(23) Да, чего-то я фигню написал. Извините.
26 Cerera
 
25.06.13
12:25
(22)Ну я хочу чтобы у меня форма выбора была. На ней дерево. чтоб человечек выбирает объект метаданных и дерево быстренько заполняется реквизитами. А потом если тыкнешь по реквизиту то он тоже раскрывается и дерево уже заполняется его реквизитами. Это в результате чтоб пользователь мог добраться куда угодно, например

РеализацияТовароУслуг.Контрагент.ГоловнойКонтрагент.ОсновнойМенеджерКонтрагента
27 Поросенок Петр
 
25.06.13
12:30
Смотри как конструктор запроса с составными реквизитами работает.
28 Поросенок Петр
 
25.06.13
12:35
А ещё подобная шняга у меня уже есть, только недописана и для УФ. Могу выслать.
29 Cerera
 
25.06.13
12:40
(28)[email protected]
а для чего она вам? и конструктор запроса где это так делает?
30 Поросенок Петр
 
25.06.13
12:55
Ушло. Для конструктора запросов. При раскрытии составного реквизита сначала отображается список таблиц в составе, а в них уже свои наборы.
31 acsent
 
25.06.13
12:57
(26) юзай стандартные механизмы от скд
32 Cerera
 
25.06.13
15:57
Вот ещё одна проблема:

Строка(Эл.Тип.Типы()[0]) - вот это выражение показывает мне название состоящее из нескольких слов. А мне нужно как в конфигураторе оно. Как этого добиться?
33 hhhh
 
25.06.13
16:07
XMLСтрока(Эл.Тип.Типы()[0])
34 Cerera
 
25.06.13
17:30
(33)Эл.Тип.Типы()[0] имеет тип "Тип" и значение "Организации" к примеру.
XMLСтрока ругается когда ей в качестве параметра это передаешь.
35 Поросенок Петр
 
25.06.13
17:36
Метаданные.НайтиПоТипу(Эл.Тип.Типы()[0]).Имя
36 Cerera
 
26.06.13
16:20
(35)умничка
Ошибка? Это не ошибка, это системная функция.