Имя: Пароль:
1C
1С v8
Работа с метаданными
,
0 nikulya
 
30.10.11
20:19
Подскажите кто знает:
СвойстваДокумента=Метаданные.Документы.Найти("ПоступлениеТоваровУслуг");
Для каждого Реквизит из СвойстваДокумента.Реквизиты Цикл
 сообщить(Реквизит.Имя);
КонецЦикла;

Как в цикле понять является ли реквизит ссылочным типом?
1 hatsher
 
30.10.11
20:23
ПОпытка
СсылкаНаПустойОбъект = Реквизит.получитьОбъект().Ссылка;
Сообщить("Это ссылочный объект");
Исключение
Сообщить("Это не ссылочный объект");
КонецПопытки
2 nikulya
 
30.10.11
20:29
Реквизит имеет тип Объект метаданных и обратиться к нему через получитьОбъект никак не получится
3 Wobland
 
30.10.11
20:33
(0) ТипЗнч()=Тип(), не?
4 hatsher
 
30.10.11
20:34
ну тогда
Если Метаданные.Документы.Найти(реквизит.Имя) ИЛИ Метаданные.Справочники.Найти(реквизит.Имя)
5 nikulya
 
30.10.11
20:34
(3) не подходит
6 nikulya
 
30.10.11
20:36
(4) неоднозначно. Например - реквизит называется клиент а справочник Контрагенты
7 Лефмихалыч
 
30.10.11
20:37
Метаданные.НайтиПоТипу()
8 Михей
 
30.10.11
20:39
(0)
Ссылочный = Ложь;
Для Каждого ТекТип Из Реквизит.Тип.Типы() Тогда
   Если НЕ (ТекТип = Тип("Булево")
      ИЛИ ТекТип = Тип("Строка")
      ИЛИ ТекТип = Тип("Число")
      ИЛИ ТекТип = Тип("Дата")) Тогда
      Ссылочный = Истина;
   КонецЕсли;
КонецЦикла;
9 hatsher
 
30.10.11
20:43
(8) а если это перечисление, константа или набор каких-то записей?
10 Михей
 
30.10.11
20:45
(9) Перечисление это ссылочный тип, константа не может быть реквизитом у документа, так же как и набор записей
11 nikulya
 
30.10.11
20:47
(8) урааааааааааааа.... спасибо. работает
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn