День добрый! Столкнулся со следующей проблемой: при программном заполнении дополнительных реквизитов с примитивными типами данных (число и булево) значении в справочнике владельце не пишутся, а затираются. Если, например, в самом элементе справочника указать Число = 10 и перезаполнить его обработкой с Число = 12, то, в итоге, записывается Число = 0. Но, при этом, доп реквизиты с созданными значениями отлично отрабатывают. Прошу помочь.
Код записи в справочник:

```1c
    &НаСервере
    Процедура ЗаписатьДолжностиНаСервере()
    Для Каждого Стр Из Объект.ГрейдДолжностей Цикл
    СпрДолжность = Стр.Должность;
    Если ЭтаФорма.ВидДанных = 1 Тогда
    Значение = Стр.Категория;
    ИначеЕсли ЭтаФорма.ВидДанных = 2 Тогда
    Значение = Стр.Грейд;
    ИначеЕсли ЭтаФорма.ВидДанных = 3 Тогда
    Значение = Стр.Руководитель;
    КонецЕсли;
    ЗаписатьЗначениеДопРеквизита(СпрДолжность,ЭтотОбъект.Характеристика,Значение);
    КонецЦикла;
    КонецПроцедуры

    Функция ЗаписатьЗначениеДопРеквизита(Ссылка, Свойство, Значение)

    Попытка
    ОбъектСсылки = Ссылка.ПолучитьОбъект();

    ПараметрыОтбора = Новый Структура;
    ПараметрыОтбора.Вставить("Свойство",Свойство);
    Массив = ОбъектСсылки.ДополнительныеРеквизиты.НайтиСтроки(ПараметрыОтбора);

    Если Массив.Количество() = 0 Тогда
    НовоеСвойство = ОбъектСсылки.ДополнительныеРеквизиты.Добавить();
    НовоеСвойство.Свойство = Свойство;
    НовоеСвойство.Значение = Значение;
    Иначе
    Массив[0].Значение = Значение;
    КонецЕсли;

    ОбъектСсылки.Записать();
    Исключение
    Возврат Ложь;
    КонецПопытки

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

Код выбора дополнительного реквизита:

```1c
    &НаКлиенте
    Процедура ВидДанныхПриИзменении(Элемент)
    Вид = ";
    Если ЭтаФорма.ВидДанных = 1 Тогда
    Вид = "Категория";
    Элементы.Значение.Видимость = Истина;
    Элементы.ГрейдДолжностей.ПодчиненныеЭлементы.ГрейдДолжностейКатегория.Видимость = Истина;
    Элементы.ГрейдДолжностей.ПодчиненныеЭлементы.ГрейдДолжностейГрейд.Видимость = Ложь;
    Элементы.ГрейдДолжностей.ПодчиненныеЭлементы.ГрейдДолжностейРуководитель.Видимость = Ложь;
    УстановитьХарактеристику(Вид);
    Вид = ";
    ИначеЕсли ЭтаФорма.ВидДанных = 2 Тогда
    Элементы.Значение.Видимость = Ложь;
    Элементы.ГрейдДолжностей.ПодчиненныеЭлементы.ГрейдДолжностейКатегория.Видимость = Ложь;
    Элементы.ГрейдДолжностей.ПодчиненныеЭлементы.ГрейдДолжностейГрейд.Видимость = Истина;
    Элементы.ГрейдДолжностей.ПодчиненныеЭлементы.ГрейдДолжностейРуководитель.Видимость = Ложь;
    Вид = "Грейд";
    УстановитьХарактеристику(Вид);
    Вид = ";
    ИначеЕсли ЭтаФорма.ВидДанных = 3 Тогда
    Элементы.Значение.Видимость = Ложь;
    Элементы.ГрейдДолжностей.ПодчиненныеЭлементы.ГрейдДолжностейКатегория.Видимость = Ложь;
    Элементы.ГрейдДолжностей.ПодчиненныеЭлементы.ГрейдДолжностейГрейд.Видимость = Ложь;
    Элементы.ГрейдДолжностей.ПодчиненныеЭлементы.ГрейдДолжностейРуководитель.Видимость = Истина;
    Вид = "Руководитель";
    УстановитьХарактеристику(Вид);
    Вид = ";
    КонецЕсли;
    КонецПроцедуры

    &НаСервере
    Процедура УстановитьХарактеристику(Вид)
    ЭтотОбъект.Характеристика = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию(Вид);
    КонецПроцедуры
```

Код для значения реквизита

```1c
    &НаКлиенте
    Процедура ЗначениеПриИзменении(Элемент)
    Ответ = Вопрос("Колонка Категория будет заполнена значением " + ЭтаФорма.Значение + ". Продолжить", РежимДиалогаВопрос.ДаНет,0,КодВозвратаДиалога.Нет);
    Если Ответ = КодВозвратаДиалога.Да тогда
    Для Каждого Стр Из Объект.ГрейдДолжностей Цикл
    Стр.Категория = ЭтаФорма.Значение
    КонецЦикла;
    КонецЕсли;
    КонецПроцедуры
```
---
Спасибо. Дело было не в бобине... Просто под вечер запутался в локальных переменных и передавал в реквизит "ничего"
---
Используйте программное апи для работы с доп. свойствами, не надо вручную с ними работать.
Смотрите общий модуль УправлениеСвойствами.
---
Спасибо. Дело было не в бобине... Просто под вечер запутался в локальных переменных и передавал в реквизит "ничего"