Перезапись значения в РегистреСведений
☑
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
Да и вообще, тут через СоздатьМенеджерЗаписи() работаь проще.
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn