Как работать с доп реквизитами БСП?

1. Raideres 8 05.02.21 20:56 Сейчас в теме
Подскажите как с помощью бсп работать с доп реквизитами
Найти доп реквизит по "для разработчика" (Имя)
Или Заполнить доп реквизит
Или проверить существование реквизита и создать его
просто хочется какие то использовать универсальный механизмы а не как я сейчас делаю например


ДопРеквизитыХарактеристики = ПолучитьДопРеквизитыХарактеристики(Выборка.Характеристика);

Функция ПолучитьДопРеквизитыХарактеристики(Характеристика)
	
	Запрос = Новый Запрос;
	Запрос.Текст = 
	"ВЫБРАТЬ
	|	ХарактеристикиНоменклатурыДополнительныеРеквизиты.Ссылка КАК Характеристика,
	|	ХарактеристикиНоменклатурыДополнительныеРеквизиты.Свойство КАК ДопРеквизит,
	|	ХарактеристикиНоменклатурыДополнительныеРеквизиты.Значение КАК Значение,
	|	ДополнительныеРеквизитыИСведения.Имя КАК Идентификатор
	|ИЗ
	|	Справочник.ХарактеристикиНоменклатуры.ДополнительныеРеквизиты КАК ХарактеристикиНоменклатурыДополнительныеРеквизиты
	|		ЛЕВОЕ СОЕДИНЕНИЕ ПланВидовХарактеристик.ДополнительныеРеквизитыИСведения КАК ДополнительныеРеквизитыИСведения
	|		ПО ХарактеристикиНоменклатурыДополнительныеРеквизиты.Свойство = ДополнительныеРеквизитыИСведения.Ссылка
	|ГДЕ
	|	ХарактеристикиНоменклатурыДополнительныеРеквизиты.Ссылка = &Характеристика";
	
	Запрос.УстановитьПараметр("Характеристика", Характеристика);
	
	Результат = Запрос.Выполнить().Выгрузить();
	
	
	Возврат Результат
	
КонецФункции 
 
Показать


или

Проверить существование я делаю так :
стрОснование = ДопРеквизитыХарактеристики.Найти("Основание_АМ", "Идентификатор");
	Если НЕ стрОснование = Неопределено Тогда
		Основание = СокрЛП(стрОснование.Значение);
	КонецЕсли;



или так я создавал доп реквизит если его нет


СвойствоGUID =  ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоРеквизиту("Заголовок",ЗаголовокСвойства);
	Если НЕ ЗначениеЗаполнено(СвойствоGUID) Тогда
		
		СвойствоGUID = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.СоздатьЭлемент();
		СвойствоGUID.Наименование = НаименованиеСвойства;
		СвойствоGUID.НаборСвойств = Справочники.НаборыДополнительныхРеквизитовИСведений.Справочник_Склады;
		СвойствоGUID.Заголовок = ЗаголовокСвойства;
		СвойствоGUID.ТипЗначения = Новый ОписаниеТипов("Строка", Новый КвалификаторыСтроки(36));
		СвойствоGUID.Записать();
		
		СвойствоGUID = СвойствоGUID.Ссылка;
		
		НаборСвойствСклады= Справочники.НаборыДополнительныхРеквизитовИСведений.Справочник_Склады.ПолучитьОбъект();
		НовоеСвойство = НаборСвойствСклады.ДополнительныеРеквизиты.Добавить();
		НовоеСвойство.Свойство = СвойствоGUID;
		НаборСвойствСклады.Записать();
	КонецЕсли;
	Возврат СвойствоGUID;
Показать
EvgeniyOlxovskiy; +1 Ответить
По теме из базы знаний
Найденные решения
3. Sergex 59 06.02.21 02:24 Сейчас в теме
Получить конкретное свойство конкретного объекта. В том же модуле УправлениеСвойствами.

// Возвращает значение дополнительного свойства объекта.
//
// Параметры:
//  Объект   - ЛюбаяСсылка - ссылка на объект, например, СправочникСсылка.Номенклатура,
//                           ДокументСсылка.ЗаказПокупателя, ...
//  Свойство - ПланВидовХарактеристикСсылка.ДополнительныеРеквизитыИСведения - ссылка на
//                           дополнительный реквизит, значение которого нужно получить.
//           - Строка - имя дополнительного свойства.
//
// Возвращаемое значение:
//  Произвольный - любое значение, допустимое для свойства.
//
Функция ЗначениеСвойства(Объект, Свойство) Экспорт
Показать
EMelihoff; wild83; denis83; de0nis; EvgeniyOlxovskiy; Skyeng; tipovoe_reshenie; user1671563; naumenko_alex@mail.ru; +9 Ответить
2. Cherkashin_Di 06.02.21 01:33 Сейчас в теме
Для работы с доп. реквизитами/свойствами - есть общий модуль "УправлениеСвойствами"

Найти доп реквизит/Свойство :
СвойствоGUID = УправлениеСвойствами.СвойстваОбъекта(Подразделение,Истина,Истина);
// Параметры функции
//  ВладелецСвойств      - Ссылка - например: СправочникСсылка.Номенклатура, ДокументСсылка.ЗаказПокупателя, ...
//                       - Объект - например: СправочникОбъект.Номенклатура, ДокументОбъект.ЗаказПокупателя, ...
//                       - ДанныеФормыСтруктура - коллекция по типу объекта владельца свойств.
//  ПолучатьДопРеквизиты - Булево - в результат включать дополнительные реквизиты.
//  ПолучатьДопСведения  - Булево - в результат включать дополнительные сведения.
Показать



Создать доп реквизит/свойство:
УправлениеСвойствами.ЗаписатьСвойстваУОбъекта(ВладелецСвойств, ТаблицаСвойствИЗначений);
// Параметры:
//  ВладелецСвойств - Ссылка - например, СправочникСсылка.Номенклатура, ДокументСсылка.ЗаказПокупателя и т.д.
//  ТаблицаСвойствИЗначений - ТаблицаЗначений:
//    * Свойство - ПланВидовХарактеристикСсылка.ДополнительныеРеквизитыИСведения - свойство владельца.
//    * Значение - Произвольный - любое значение, допустимое для свойства (указано в элементе свойства).
//
Показать
wild83; Nelli_A86; EgorSP; EvgeniyOlxovskiy; Skyeng; user1663711; naumenko_alex@mail.ru; +7 Ответить
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Cherkashin_Di 06.02.21 01:33 Сейчас в теме
Для работы с доп. реквизитами/свойствами - есть общий модуль "УправлениеСвойствами"

Найти доп реквизит/Свойство :
СвойствоGUID = УправлениеСвойствами.СвойстваОбъекта(Подразделение,Истина,Истина);
// Параметры функции
//  ВладелецСвойств      - Ссылка - например: СправочникСсылка.Номенклатура, ДокументСсылка.ЗаказПокупателя, ...
//                       - Объект - например: СправочникОбъект.Номенклатура, ДокументОбъект.ЗаказПокупателя, ...
//                       - ДанныеФормыСтруктура - коллекция по типу объекта владельца свойств.
//  ПолучатьДопРеквизиты - Булево - в результат включать дополнительные реквизиты.
//  ПолучатьДопСведения  - Булево - в результат включать дополнительные сведения.
Показать



Создать доп реквизит/свойство:
УправлениеСвойствами.ЗаписатьСвойстваУОбъекта(ВладелецСвойств, ТаблицаСвойствИЗначений);
// Параметры:
//  ВладелецСвойств - Ссылка - например, СправочникСсылка.Номенклатура, ДокументСсылка.ЗаказПокупателя и т.д.
//  ТаблицаСвойствИЗначений - ТаблицаЗначений:
//    * Свойство - ПланВидовХарактеристикСсылка.ДополнительныеРеквизитыИСведения - свойство владельца.
//    * Значение - Произвольный - любое значение, допустимое для свойства (указано в элементе свойства).
//
Показать
wild83; Nelli_A86; EgorSP; EvgeniyOlxovskiy; Skyeng; user1663711; naumenko_alex@mail.ru; +7 Ответить
4. Scroudge 4 10.01.22 09:24 Сейчас в теме
(2) у меня такая штука НЕ сработала при использовании в расширении.
пробовал на самом последнем релизе движка 8.3.20 в последнем релизе УНФ 1.6.
при вызове УправлениеСвойствами.ЗаписатьСвойстваУОбъекта()
выполнение кода как-будто бы прерывалось.
т.е. и ошибка не вылетала, но и ничего не происходило.
вызов я пытался использовать в _ПриЗаписиНаСервереВместо.
3. Sergex 59 06.02.21 02:24 Сейчас в теме
Получить конкретное свойство конкретного объекта. В том же модуле УправлениеСвойствами.

// Возвращает значение дополнительного свойства объекта.
//
// Параметры:
//  Объект   - ЛюбаяСсылка - ссылка на объект, например, СправочникСсылка.Номенклатура,
//                           ДокументСсылка.ЗаказПокупателя, ...
//  Свойство - ПланВидовХарактеристикСсылка.ДополнительныеРеквизитыИСведения - ссылка на
//                           дополнительный реквизит, значение которого нужно получить.
//           - Строка - имя дополнительного свойства.
//
// Возвращаемое значение:
//  Произвольный - любое значение, допустимое для свойства.
//
Функция ЗначениеСвойства(Объект, Свойство) Экспорт
Показать
EMelihoff; wild83; denis83; de0nis; EvgeniyOlxovskiy; Skyeng; tipovoe_reshenie; user1671563; naumenko_alex@mail.ru; +9 Ответить
5. user1729112 13.10.22 11:46 Сейчас в теме
(3)
ПланВидовХарактеристикСсылка.ДополнительныеРеквизитыИСведения

Добрый день.
Подскажите пожалуйста, а как мне узнать "свойство"? Как указать то этот конкретный реквизит?
Заранее, благодарю
6. Sergex 59 14.10.22 01:38 Сейчас в теме
(5)Если мы говорим о доп. реквизите то в нем есть поле для разработчиков и там можно указать имя, по которому к нему можно обращаться
Далее я делаю так:

Сегмент = УправлениеСвойствами.ЗначениеСвойства(ЗаказОбъект.Соглашение,"_O_Model")

Где ЗаказОбъект.Соглашение - владелец доп реквизита, а "_O_Model" имя заданное в форме настройки доп реквизита в области для разработчиков, в поле имя.

Канонически можно получать свойство по имени: ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоРеквизиту("Имя","_O_Model"),
либо иными методами ПланВидовХарактеристикМенеджер.<Имя плана видов характеристик> : найти по коду или найти по наименованию
EgorSP; xoisim; +2 Ответить
Оставьте свое сообщение

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