Нужно изменить значение реквизита "Минимальный остаток" у конкретной номенклатуры.
Делаю это вот так:
Если СпрТовар.НайтиПоКоду("21-21") = 1 тогда
а=СпрТовар.ТекущийЭлемент();
Сообщить(а.ПолучитьАтрибут("МинОстаток"));
а.УстановитьАтрибут("МинОстаток",300);
СпрТовар.Записать();
Сообщить(а.ПолучитьАтрибут("МинОстаток"));
КонецЕсли
При выполнении ошибок не выдает, считывает и выводит правильное значение 540. Записывает, опять выводит нужное значение 300, но в карточке номенклатуры значение не меняется.
P.S. Я в 1С пишу первый раз, до этого писал на С#, где-то туплю, но не могу понять где.
В твоем варианте ты получаешь ССЫЛКУ на объект, при первом обращении (получитьАтрибут) все заново читается из БД и получаешь/устанавливаешь ты как бы уже не в СпрТовар а в другой копии объекта.
+ еще мысля как объяснить :)
СпрТовар.ТекущийЭлемент() - возращает ссылку не на СпрТовар (как тебе показалось бы логичным в C#) а внутренний ИД этого элемента в базе, тобишь типа гуид в базе. И при обращении к элементам по этому гуиду заново перечитываются данные и в памяти формируется новый экземпляр этого справочника.