Уведомления
Очистить все

Как определить тип реквизита в 1С?

1 Записи
1 Пользователи
0 Likes
4,540 Просмотры
65-150 Okolokompa Форум
(@kalininalex)
Reputable Member
Присоединился: 4 года назад
Записи: 160
Создатель темы  

Определяем тип реквизита. Приведу несколько способов:

Делаем так:

НеЯсноЧтоЭто = Метаданные.Справочники.Номенклатура.Реквизиты.ВидНоменклатуры.Тип;
НеЯсноЧтоСУточнениемТипа = НеЯсноЧтоЭто.Типы()[0]; // тип может быть составным, 
                                                    // если он не составной, то там будет один элемент возмем его;
													
ВсеЯсно = Метаданные.НайтиПоТипу(НеЯсноЧтоСУточнениемТипа).ПолноеИмя(); // Полное имя обекта, как оно задано в конфигураторе; 
ВсеЯсноНачалоИмени = Лев(ВсеЯсно,Найти(ВсеЯсно,".") -1); // тут получим что это "справочник", "документ" .... 
                                                        // в виде текстовой строки

А можно так:

ТипПолный = Метаданные.НайтиПоТипу(Метаданные.Справочники.Номенклатура.Реквизиты.ВидНоменклатуры.Тип.Типы()[0]).ПолноеИмя();
Тип1 = Лев(ТипПолный,Найти(ТипПолный,".") -1);

А вот еще интересный способ. Для определения типа реквизита, нам поможет такая стандартная функция:

XMLТипЗнч(<Значение>)

А вот еще пример кода (Работать можно с составными реквизитами). Ниже приведу часть кода из этой темы: Смотри здесь.

Для Каждого Колонка Из ТЗ.Колонки Цикл
	МассивТиповЗначений = Новый Массив;
	Для Каждого тТип из Колонка.ТипЗначения.Типы() Цикл
		Если тТип <> Тип("Null") Тогда
			//+ Добавил на всякий случай это условие. На некотрых реквизитах не взлетало. Можно убрать - должно и так работать
			Если НЕ Строка(тТип) = "НеизвестныйОбъект" Тогда 
				//- Добавил на всякий случай это условие. На некотрых реквизитах не взлетало. Можно убрать - должно и так работать	
				МассивТиповЗначений.Добавить(тТип);
				//+ Добавил на всякий случай это условие. На некотрых реквизитах не взлетало. Можно убрать - должно и так работать	
			КонецЕсли;
			//- Добавил на всякий случай это условие. На некотрых реквизитах не взлетало. Можно убрать - должно и так работать
		КонецЕсли;
	КонецЦикла;                                                                                                    
	МассивРеквизитов.Добавить(Новый РеквизитФормы(Колонка.Имя, Новый ОписаниеТипов(МассивТиповЗначений), ИмяТЗ));
КонецЦикла;

   
Цитата
Поделиться: