Имя: Пароль:
1C
 
Перезапись значения в РегистреСведений
0 leoshko84
 
01.02.18
10:48
Есть регистр "ЗначенияСвойствОбъектов", в нем измерения -Объект, Свойство и ресурс-Значение.

Хочу переписать значение:
НаборЗаписей = РегистрыСведений.ЗначенияСвойствОбъектов.СоздатьНаборЗаписей();
        НаборЗаписей.Отбор.Объект.Установить(Выборка.Ссылка);
        НаборЗаписей.Отбор.Свойство.Установить(Свойство);
        НаборЗаписей.Прочитать();
        
        НоваяЗапись = НаборЗаписей.Добавить();
        НоваяЗапись.Объект=Выборка.Ссылка;
        НоваяЗапись.Свойство=Свойство;
        НоваяЗапись.Значение = выборка.Ссылка.БрендИнтернетМагазин;
        
        НаборЗаписей.Записать(Истина);

Пишет запись с такими ключевыми полями существует.
1 hhhh
 
01.02.18
10:50
(0) НаборЗаписей.Прочитать();  выкинь
2 Стэн5
 
01.02.18
10:53
Вы ее читаете НаборЗаписей.Прочитать();
а потом добавляете новую с запись с такими же измерениями, необходимо эту переписать
3 FIXXXL
 
01.02.18
10:55
(1) или добавь .Очистить() :)
4 Serg_1960
 
01.02.18
11:05
А ещё можно выбросить Добавить() и оставить Прочитать() и изменить. Не знаю зачем, честно говоря, но - можно :)
5 Малыш Джон
 
01.02.18
11:07
(0) Перед тем как добавить запись в набор, проверь, вдруг там такая уже есть. Тогда надо не добавлять новую запись, а брать найденную и работать с ней.

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

Если НаборЗаписей.Количество()>0 Тогда
   Запись = НаборЗаписей[0]; //т.к. отбор по всем измерениям, то запись может быть только одна, если она есть
Иначе
   Запись = НаборЗаписей.Добавить();
   Запись .Объект=Выборка.Ссылка;
   Запись .Свойство=Свойство;
КонецЕсли;
Запись.Значение = выборка.Ссылка.БрендИнтернетМагазин;
НаборЗаписей.Записать(Истина);
6 Serg_1960
 
01.02.18
11:11
Да и вообще, тут через СоздатьМенеджерЗаписи() работаь проще.
Программист всегда исправляет последнюю ошибку.