Уважаемые коллеги!

У номенклатуры есть доп. реквизит "Код товара". Необходимо программно присвоить ему значение (Артикул. jpg).
В моем коде значение присваивается, но перезапись не происходит. Помогите, что делаю не так((!

&НаСервере
Процедура ПерезаполнитьНаСервере()

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

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

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

 Пока ВыборкаДетальныеЗаписи.Следующий() Цикл

  Номенкл = ВыборкаДетальныеЗаписи.Ссылка.ПолучитьОбъект();

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

  Значение = Номенкл.ДополнительныеРеквизиты.Найти(ДопСвойство);

 Если Значение = Неопределено Тогда

  Значение = Строка(Номенкл.Артикул) + ".jpg";

 КонецЕсли;

   Номенкл.Записать();

 КонецЦикла;

КонецПроцедуры
---
Если тип вашего доп реквизита просто строка (можно посмотреть в предприятии), то делается вот так:

```1c
    ДопСвойство = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию("Код товара");

    ДопРеквизит = Номенкл.ДополнительныеРеквизиты.Найти(ДопСвойство);

    Если ДопРеквизит <> Неопределено тогда

    ДопРеквизит.Значение = Строка(Номенкл.Артикул) + ".jpg";

    Иначе

    ДопРеквизит = Номенкл.ДополнительныеРеквизиты.Добавить();
    ДопРеквизит.Свойство = ДопСвойство;
    ДопРеквизит.Значение = Строка(Номенкл.Артикул) + ".jpg";

    КонецЕсли;

    Номенкл.Записать();
```
---
Значение = Номенкл.ДополнительныеРеквизиты.Найти(ДопСвойство);
ДополнительныеРеквизиты это табличная часть справочника?
Если да то Значение это строка табличной части а не значение реквизита!

Будет что-то вроде такого:

```1c
    ДопСвойство = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию("Код товара");
    СтрокаТЧ = Номенкл.ДополнительныеРеквизиты.Найти(ДопСвойство);
    Если СтрокаТЧ <> Неопределено Тогда
    СтрокаТЧ.ЗначениеМоегоРеквизита = Строка(Номенкл.Артикул) + ".jpg";
    КонецЕсли;
```
---
Конфигурация УТ 11.4
---
Ставьте точку останова на строке Значение = Строка(Номенкл.Артикул) + ".jpg". Если этот код исполняется, тогда смотрите чему равна переменная "Значение" и её тип.
---
попробуйте сделать запись через
Попытка
Номенкл.Записать();
Предупреждение("Не удалось записать объект """ + Номенкл + """!
                   |" + ОписаниеОшибки(), 60);
КонецПопытки;
---
Дополнительные реквизиты записываются не в справочник "Номенклатура", у Вас запись только объекта "Номенклатура", а его Вы не изменяете.
В УПП это регистр сведений "Значения свойств объектов"
---
извините , а при чем тут вообще УПП?
Дополнительные реквизиты в УТ записываются в ТАбличную часть справочника Номенклатура!
---
Если тип вашего доп реквизита просто строка (можно посмотреть в предприятии), то делается вот так:

```1c
    ДопСвойство = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию("Код товара");

    ДопРеквизит = Номенкл.ДополнительныеРеквизиты.Найти(ДопСвойство);

    Если ДопРеквизит <> Неопределено тогда

    ДопРеквизит.Значение = Строка(Номенкл.Артикул) + ".jpg";

    Иначе

    ДопРеквизит = Номенкл.ДополнительныеРеквизиты.Добавить();
    ДопРеквизит.Свойство = ДопСвойство;
    ДопРеквизит.Значение = Строка(Номенкл.Артикул) + ".jpg";

    КонецЕсли;

    Номенкл.Записать();
```
---
Да, тип строка, сейчас попробую, спасибо
---
Получилось как вы сказали!!!! Спасибо огромное!
---
я в (5) еще это написал.
---
Скрин Отладки. Все выводит
---
"Если значение = Неопределенно" значит программа не нашла доп реквизит. И в переменной "Значение" нет ничего.
После этого вы присваиваете туда строку.
Отладчик это и показывает. Но в доп реквизит то вы не записываете. Сделайте как я написал в (8) и все заработает.
---
Я в ЕРП 2.4 пишу такой код для создания доп реквизита у нового партнера при программном создании.

```1c
    ДопСвед = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию("Тип (Клиенты)", Истина);
    ЗначениеДС = Справочники.ЗначенияСвойствОбъектов.НайтиПоНаименованию("Ч",Истина,,ДопСвед);

    Попытка
    НаборЗаписей = РегистрыСведений.ДополнительныеСведения.СоздатьНаборЗаписей();

    НаборЗаписей.Отбор.Объект.Установить(НовыйПартнер.Ссылка);
    НаборЗаписей.Отбор.Свойство.Установить(ДопСвед);

    НоваяСтрокаНабора = НаборЗаписей.Добавить();
    НоваяСтрокаНабора.Объект = НовыйПартнер.Ссылка;
    НоваяСтрокаНабора.Свойство = ДопСвед;
    НоваяСтрокаНабора.Значение = ЗначениеДС;
    НаборЗаписей.Записать();
    Исключение

    КонецПопытки;
```

Данные мои, так что вам надо подставить свои данные и соответственно не справочник партнеры использовать а справочник номенклатура.