Уведомления
Очистить все
1С:Предприятие 8.x
1
Записи
1
Пользователи
0
Likes
4,540
Просмотры
Создатель темы 09/10/2022 10:38 дп
Определяем тип реквизита. Приведу несколько способов:
Делаем так:
НеЯсноЧтоЭто = Метаданные.Справочники.Номенклатура.Реквизиты.ВидНоменклатуры.Тип; НеЯсноЧтоСУточнениемТипа = НеЯсноЧтоЭто.Типы()[0]; // тип может быть составным, // если он не составной, то там будет один элемент возмем его; ВсеЯсно = Метаданные.НайтиПоТипу(НеЯсноЧтоСУточнениемТипа).ПолноеИмя(); // Полное имя обекта, как оно задано в конфигураторе; ВсеЯсноНачалоИмени = Лев(ВсеЯсно,Найти(ВсеЯсно,".") -1); // тут получим что это "справочник", "документ" .... // в виде текстовой строки
А можно так:
ТипПолный = Метаданные.НайтиПоТипу(Метаданные.Справочники.Номенклатура.Реквизиты.ВидНоменклатуры.Тип.Типы()[0]).ПолноеИмя(); Тип1 = Лев(ТипПолный,Найти(ТипПолный,".") -1);
А вот еще интересный способ. Для определения типа реквизита, нам поможет такая стандартная функция:
XMLТипЗнч(<Значение>)
А вот еще пример кода (Работать можно с составными реквизитами). Ниже приведу часть кода из этой темы: Смотри здесь.
Для Каждого Колонка Из ТЗ.Колонки Цикл МассивТиповЗначений = Новый Массив; Для Каждого тТип из Колонка.ТипЗначения.Типы() Цикл Если тТип <> Тип("Null") Тогда //+ Добавил на всякий случай это условие. На некотрых реквизитах не взлетало. Можно убрать - должно и так работать Если НЕ Строка(тТип) = "НеизвестныйОбъект" Тогда //- Добавил на всякий случай это условие. На некотрых реквизитах не взлетало. Можно убрать - должно и так работать МассивТиповЗначений.Добавить(тТип); //+ Добавил на всякий случай это условие. На некотрых реквизитах не взлетало. Можно убрать - должно и так работать КонецЕсли; //- Добавил на всякий случай это условие. На некотрых реквизитах не взлетало. Можно убрать - должно и так работать КонецЕсли; КонецЦикла; МассивРеквизитов.Добавить(Новый РеквизитФормы(Колонка.Имя, Новый ОписаниеТипов(МассивТиповЗначений), ИмяТЗ)); КонецЦикла;