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