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

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 57 06.02.21 02:24 Сейчас в теме
Получить конкретное свойство конкретного объекта. В том же модуле УправлениеСвойствами.

// Возвращает значение дополнительного свойства объекта.
//
// Параметры:
//  Объект   - ЛюбаяСсылка - ссылка на объект, например, СправочникСсылка.Номенклатура,
//                           ДокументСсылка.ЗаказПокупателя, ...
//  Свойство - ПланВидовХарактеристикСсылка.ДополнительныеРеквизитыИСведения - ссылка на
//                           дополнительный реквизит, значение которого нужно получить.
//           - Строка - имя дополнительного свойства.
//
// Возвращаемое значение:
//  Произвольный - любое значение, допустимое для свойства.
//
Функция ЗначениеСвойства(Объект, Свойство) Экспорт
Показать
EMelihoff; wild83; rabota.v8.1c; 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 3 10.01.22 09:24 Сейчас в теме
(2) у меня такая штука НЕ сработала при использовании в расширении.
пробовал на самом последнем релизе движка 8.3.20 в последнем релизе УНФ 1.6.
при вызове УправлениеСвойствами.ЗаписатьСвойстваУОбъекта()
выполнение кода как-будто бы прерывалось.
т.е. и ошибка не вылетала, но и ничего не происходило.
вызов я пытался использовать в _ПриЗаписиНаСервереВместо.
3. Sergex 57 06.02.21 02:24 Сейчас в теме
Получить конкретное свойство конкретного объекта. В том же модуле УправлениеСвойствами.

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

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

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

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

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

Руководитель направления 1С
Москва
зарплата от 350 000 руб.
Полный день

1С Программист
Москва
зарплата от 180 000 руб.
Полный день

Программист 1С
Москва
зарплата от 180 000 руб. до 220 000 руб.
Полный день

Аналитик 1С / Бизнес-аналитик
Нижний Новгород
зарплата от 100 000 руб. до 250 000 руб.
Временный (на проект)