Подскажите как с помощью бсп работать с доп реквизитами
Найти доп реквизит по "для разработчика" (Имя)
Или Заполнить доп реквизит
Или проверить существование реквизита и создать его
просто хочется какие то использовать универсальный механизмы а не как я сейчас делаю например

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

```1c
    Функция ПолучитьДопРеквизитыХарактеристики(Характеристика)

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

    Запрос.УстановитьПараметр("Характеристика", Характеристика);

    Результат = Запрос.Выполнить().Выгрузить();

    Возврат Результат

    КонецФункции
```

или

Проверить существование я делаю так :

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

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

```1c
    СвойствоGUID = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоРеквизиту("Заголовок",ЗаголовокСвойства);
    Если НЕ ЗначениеЗаполнено(СвойствоGUID) Тогда

    СвойствоGUID = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.СоздатьЭлемент();
    СвойствоGUID.Наименование = НаименованиеСвойства;
    СвойствоGUID.НаборСвойств = Справочники.НаборыДополнительныхРеквизитовИСведений.Справочник_Склады;
    СвойствоGUID.Заголовок = ЗаголовокСвойства;
    СвойствоGUID.ТипЗначения = Новый ОписаниеТипов("Строка", Новый КвалификаторыСтроки(36));
    СвойствоGUID.Записать();

    СвойствоGUID = СвойствоGUID.Ссылка;

    НаборСвойствСклады= Справочники.НаборыДополнительныхРеквизитовИСведений.Справочник_Склады.ПолучитьОбъект();
    НовоеСвойство = НаборСвойствСклады.ДополнительныеРеквизиты.Добавить();
    НовоеСвойство.Свойство = СвойствоGUID;
    НаборСвойствСклады.Записать();
    КонецЕсли;
    Возврат СвойствоGUID;
```
---
Получить конкретное свойство конкретного объекта. В том же модуле УправлениеСвойствами.

```1c
    // Возвращает значение дополнительного свойства объекта.
    //
    // Параметры:
    // Объект - ЛюбаяСсылка - ссылка на объект, например, СправочникСсылка.Номенклатура,
    // ДокументСсылка.ЗаказПокупателя, ...
    // Свойство - ПланВидовХарактеристикСсылка.ДополнительныеРеквизитыИСведения - ссылка на
    // дополнительный реквизит, значение которого нужно получить.
    // - Строка - имя дополнительного свойства.
    //
    // Возвращаемое значение:
    // Произвольный - любое значение, допустимое для свойства.
    //
    Функция ЗначениеСвойства(Объект, Свойство) Экспорт
```
---
Для работы с доп. реквизитами/свойствами - есть общий модуль "УправлениеСвойствами"

Найти доп реквизит/Свойство :

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

Создать доп реквизит/свойство:

```1c
    УправлениеСвойствами.ЗаписатьСвойстваУОбъекта(ВладелецСвойств, ТаблицаСвойствИЗначений);
    // Параметры:
    // ВладелецСвойств - Ссылка - например, СправочникСсылка.Номенклатура, ДокументСсылка.ЗаказПокупателя и т.д.
    // ТаблицаСвойствИЗначений - ТаблицаЗначений:
    // * Свойство - ПланВидовХарактеристикСсылка.ДополнительныеРеквизитыИСведения - свойство владельца.
    // * Значение - Произвольный - любое значение, допустимое для свойства (указано в элементе свойства).
    //
```
---
Для работы с доп. реквизитами/свойствами - есть общий модуль "УправлениеСвойствами"

Найти доп реквизит/Свойство :

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

Создать доп реквизит/свойство:

```1c
    УправлениеСвойствами.ЗаписатьСвойстваУОбъекта(ВладелецСвойств, ТаблицаСвойствИЗначений);
    // Параметры:
    // ВладелецСвойств - Ссылка - например, СправочникСсылка.Номенклатура, ДокументСсылка.ЗаказПокупателя и т.д.
    // ТаблицаСвойствИЗначений - ТаблицаЗначений:
    // * Свойство - ПланВидовХарактеристикСсылка.ДополнительныеРеквизитыИСведения - свойство владельца.
    // * Значение - Произвольный - любое значение, допустимое для свойства (указано в элементе свойства).
    //
```
---
у меня такая штука НЕ сработала при использовании в расширении.
пробовал на самом последнем релизе движка 8.3.20 в последнем релизе УНФ 1.6.
при вызове УправлениеСвойствами.ЗаписатьСвойстваУОбъекта()
выполнение кода как-будто бы прерывалось.
т.е. и ошибка не вылетала, но и ничего не происходило.
вызов я пытался использовать в _ПриЗаписиНаСервереВместо.
---
Получить конкретное свойство конкретного объекта. В том же модуле УправлениеСвойствами.

```1c
    // Возвращает значение дополнительного свойства объекта.
    //
    // Параметры:
    // Объект - ЛюбаяСсылка - ссылка на объект, например, СправочникСсылка.Номенклатура,
    // ДокументСсылка.ЗаказПокупателя, ...
    // Свойство - ПланВидовХарактеристикСсылка.ДополнительныеРеквизитыИСведения - ссылка на
    // дополнительный реквизит, значение которого нужно получить.
    // - Строка - имя дополнительного свойства.
    //
    // Возвращаемое значение:
    // Произвольный - любое значение, допустимое для свойства.
    //
    Функция ЗначениеСвойства(Объект, Свойство) Экспорт
```
---
ПланВидовХарактеристикСсылка.ДополнительныеРеквизитыИСведения
Добрый день.
Подскажите пожалуйста, а как мне узнать "свойство"? Как указать то этот конкретный реквизит?
Заранее, благодарю
---
Если мы говорим о доп. реквизите то в нем есть поле для разработчиков и там можно указать имя, по которому к нему можно обращаться
Далее я делаю так:

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

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

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