Работа с Дополнительными Реквизитами в УНФ1,5

1. vlastapov 49 24.07.15 18:12 Сейчас в теме
Прошу показать, как обратиться программно к Дополнительному Реквизиту элемента Справочника Номенклатура? Это нужно для дальнейшей обработки Номенклатуры в Заказе Покупателя, например Длина фиксированная или произвольная.
По теме из базы знаний
Вознаграждение за ответ
Показать полностью
Найденные решения
5. weissfeuer 45 24.07.15 19:59 Сейчас в теме
Пример работающего кода
//ФормаДокумента, при создании на сервере

//выгрузим таблицу товаров в таблицузначений
	ТаблицаТовары = Объект.Запасы.Выгрузить();
	НужноеСвойство = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию("Длина фиксирована"); //наше свойство 
	//обход товаров
	Для каждого ТекСтрока Из ТаблицаТовары Цикл
		ДопРеквизиты = ТекСтрока.Номенклатура.ДополнительныеРеквизиты.Выгрузить();
		
		//обход доп реквизитов
		Для каждого СтрокаДоп Из ДопРеквизиты Цикл
			Если  СтрокаДоп.Свойство = НужноеСвойство И СтрокаДоп.Значение = Истина Тогда
				//выполняем произвольный код
				Сообщить ("фиксированная длина");
			КонецЕсли; 
		КонецЦикла; 
	КонецЦикла; 

Показать


Несколько замечаний:
1. В ПВХ ДополнительныеРеквизитыИСведения основное представление - в виде наименования, кода у элемента нет. Это означает, что для корректной программной обработки свойства вам придется создавать константу, иначе при смене пользователем наименования свойства ваш код перестанет работать.

2. Дополнительные Реквизиты и сведения предназначены для быстрого, самостоятельного внесения пользователем необходимых изменений в структуру хранения данных. Если эти данные уже необходимо обрабатывать в коде - то правильней добавить свои реквизиты и перенести туда данные из доп свойств. По крайней мере, я делаю так.
У доп реквизитов же есть еще одна особенность - их расположение на форме сохраняется в настройках пользователя, то есть придется настраивать формы или копировать настройки для всех пользователей. И при добавлении каждого нового пользователя повторять эту процедуру.
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. weissfeuer 45 24.07.15 18:40 Сейчас в теме
Наборы свойств хранятся в справочнике НаборыДополнительныхРеквизитовИСведений. Каждый элемент соответствует определенному типу метаданных (например, номенклатура), эти типы заданы как предопределенные элементы.

У элемента набора есть две табличные части - дополнительные реквизиты и дополнительные свойства. У них есть единственный значимый реквизит "Свойство" типа ПВХ ДополнительныеРеквизитыИСведения. То есть в табличной части хранятся виды свойств (создаются пользователем), доступные для объекта метаданных.

В качестве основного справочника для хранения списка доступных значений свойств указан справочник ЗначенияСвойствОбъектов.

Значения свойства для конкретного объекта хранится в ТЧ ДополнительныеРеквизиты (поле ключа - свойство, поле отбора - ссылка на элемент набора) и в регистре ДополнительныеСведения (если имеют смысл вне объекта)

То есть вам наверное нужно выбирать данные из справочника ЗначенияСвойствОбъектов с отбором по свойству.
3. vlastapov 49 24.07.15 18:42 Сейчас в теме
Хотелось бы пример кода работающий...
natarezn; +1 Ответить
4. capitan 2499 24.07.15 18:42 Сейчас в теме
1. Поискать в гугле - первая ссылка сверху
2. Встать отладчиком при открытии позиции номенклатуры
5. weissfeuer 45 24.07.15 19:59 Сейчас в теме
Пример работающего кода
//ФормаДокумента, при создании на сервере

//выгрузим таблицу товаров в таблицузначений
	ТаблицаТовары = Объект.Запасы.Выгрузить();
	НужноеСвойство = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию("Длина фиксирована"); //наше свойство 
	//обход товаров
	Для каждого ТекСтрока Из ТаблицаТовары Цикл
		ДопРеквизиты = ТекСтрока.Номенклатура.ДополнительныеРеквизиты.Выгрузить();
		
		//обход доп реквизитов
		Для каждого СтрокаДоп Из ДопРеквизиты Цикл
			Если  СтрокаДоп.Свойство = НужноеСвойство И СтрокаДоп.Значение = Истина Тогда
				//выполняем произвольный код
				Сообщить ("фиксированная длина");
			КонецЕсли; 
		КонецЦикла; 
	КонецЦикла; 

Показать


Несколько замечаний:
1. В ПВХ ДополнительныеРеквизитыИСведения основное представление - в виде наименования, кода у элемента нет. Это означает, что для корректной программной обработки свойства вам придется создавать константу, иначе при смене пользователем наименования свойства ваш код перестанет работать.

2. Дополнительные Реквизиты и сведения предназначены для быстрого, самостоятельного внесения пользователем необходимых изменений в структуру хранения данных. Если эти данные уже необходимо обрабатывать в коде - то правильней добавить свои реквизиты и перенести туда данные из доп свойств. По крайней мере, я делаю так.
У доп реквизитов же есть еще одна особенность - их расположение на форме сохраняется в настройках пользователя, то есть придется настраивать формы или копировать настройки для всех пользователей. И при добавлении каждого нового пользователя повторять эту процедуру.
6. dlink 25.07.15 10:46 Сейчас в теме
у договора доп реквизит КПП, ищем в запросе КПП
//+запрос по доп реквизиту договора КПП для организации
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ДоговорыКонтрагентовДополнительныеРеквизиты.Значение,
| ДоговорыКонтрагентовДополнительныеРеквизиты.Свойство
|ИЗ
| Справочник.ДоговорыКонтрагентов.ДополнительныеРеквизиты КАК ДоговорыКонтрагентовДополнительныеРеквизиты
|ГДЕ
| ДоговорыКонтрагентовДополнительныеРеквизиты.Ссылка = &Ссылка
| И ДоговорыКонтрагентовДополнительныеРеквизиты.Свойство = &Свойство";

Запрос.УстановитьПараметр("Ссылка", СтрокаЗапроса.ДоговорКонтрагента);
Свойство= ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию("КПП");
Запрос.УстановитьПараметр("Свойство", Свойство);
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот