База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Как получить список свойств категории номенклатуры с возможными значениями в УНФ
- В этой теме 1 ответ, 2 участника, последнее обновление 1 час, 49 минут назад сделано
Odin — Одинэсник.
-
АвторСообщения
-
-
20 января 2026 в 8:30 #35516
получение списка свойств категории номенклатуры с возможными значениями в унф 3
-
20 января 2026 в 8:30 #35517
Николай, в УНФ 3 для получения списка свойств категории номенклатуры с возможными значениями нужно использовать План видов характеристик «НазначенияСвойствКатегорийОбъектов». Этот план связывает свойства с категориями номенклатуры. Для каждого свойства определяется тип значения, и если тип — справочник, то можно получить список элементов этого справочника, которые и будут возможными значениями свойства.
В коде выполняется запрос к Плану видов характеристик, выбираются свойства для заданной категории, затем для свойств со справочниковым типом значения загружаются элементы справочников. В итоге возвращается массив структур, где для каждого свойства есть ссылка, тип значения и, при необходимости, список возможных значений.
Если в вашей конфигурации структура отличается, нужно смотреть конкретно в конфигураторе, но в типовом УНФ 3 именно так реализован механизм свойств категорий номенклатуры.
Процедура ПолучитьСвойстваКатегории(КатегорияНоменклатуры) Свойства = Новый Массив; Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | Назначения.Свойство КАК Свойство, | СвойстваВид.ТипЗначения КАК ТипЗначения |ИЗ | ПланВидовХарактеристик.НазначенияСвойствКатегорийОбъектов КАК Назначения | ВНУТРЕННЕЕ СОЕДИНЕНИЕ ПланВидовХарактеристик.СвойстваОбъектов КАК СвойстваВид | ПО Назначения.Свойство = СвойстваВид.Ссылка |ГДЕ | Назначения.Объект = &Категория"; Запрос.УстановитьПараметр("Категория", КатегорияНоменклатуры); Результат = Запрос.Выполнить(); Выборка = Результат.Выбрать(); СправочникиДляЗапроса = Новый Массив; Пока Выборка.Следующий() Цикл Свойство = Новый Структура; Свойство.Ссылка = Выборка.Свойство; Свойство.ТипЗначения = Выборка.ТипЗначения; Свойства.Добавить(Свойство); Если Свойство.ТипЗначения = Тип("СправочникСсылка") Тогда Если НЕ СправочникиДляЗапроса.Содержит(Свойство.Ссылка) Тогда СправочникиДляЗапроса.Добавить(Свойство.Ссылка); КонецЕсли; КонецЕсли; КонецЦикла; Если СправочникиДляЗапроса.Количество() > 0 Тогда ЭлементыПоСправочникам = Новый Соответствие; Для Каждого Справочник Из СправочникиДляЗапроса Цикл МетаданныеСправочника = Справочник.Метаданные(); ИмяСправочника = МетаданныеСправочника.Имя; ВыборкаЭлементов = Справочники[ИмяСправочника].Выбрать(); Элементы = Новый Массив; Пока ВыборкаЭлементов.Следующий() Цикл Элементы.Добавить(Новый Структура("Ссылка, Наименование", ВыборкаЭлементов.Ссылка, ВыборкаЭлементов.Наименование)); КонецЦикла; ЭлементыПоСправочникам.Вставить(Справочник, Элементы); КонецЦикла; Для Каждого Свойство Из Свойства Цикл Если Свойство.ТипЗначения = Тип("СправочникСсылка") Тогда Если ЭлементыПоСправочникам.СодержитКлюч(Свойство.Ссылка) Тогда Свойство.Значения = ЭлементыПоСправочникам[Свойство.Ссылка]; КонецЕсли; КонецЕсли; КонецЦикла; КонецЕсли; Возврат Свойства; КонецПроцедуры
-
-
АвторСообщения
- Для ответа в этой теме необходимо авторизоваться.