Вход | Регистрация

1С:Предприятие :: 1С:Предприятие 8 общая

Перезапись регистра сведений (Непериодического, Независимого). Помогите разобраться.

↓ [Волшебник, 30.11.17 - 09:39]
Перезапись регистра сведений (Непериодического, Независимого). Помогите разобраться.
Я
   Румата
 
30.11.17 - 08:51
В процедуре "ПередЗаписью" в форме элемента справочника "Номенклатуры" хочу данные из реквизита справочника записывать в свойство (регистр сведений  "ЗначениеСвойствОбъектов"). Название реквизита "НоменклатурнаяГруппа", название свойства "ВидНоменклатуры".


Вот код :

Процедура ПередЗаписью(Отказ)
УстановитьСвойствоУНоменклатуры("Вид номенклатуры",НоменклатурнаяГруппа.Наименование);
КонецПроцедуры

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

===========================

Вот ошибка :
Ошибка при вызове метода контекста (Записать) НаборЗаписей.Записать(Истина); 
по причине:
Запись с такими ключевыми полями существует!

============================

Помогите пожалуйста разобраться, что я не так делаю. Спасибо !
 
 
   Mankubus
 
1 - 30.11.17 - 08:55
(0)
НашеСвойство = ПланыВидовХарактеристик.СвойстваОбъектов.НайтиПоНаименованию(НаименованиеСвойства);
    НоваяЗапись  = РегистрыСведений.ЗначенияСвойствОбъектов.СоздатьНаборЗаписей();
    НоваяЗапись.Объект = Ссылка; 
    НоваяЗапись.Свойство = НашеСвойство; 
    НоваяЗапись.Значение = Справочники.ЗначенияСвойствОбъектов.НайтиПоНаименованию(ЗначениеСвойства); 
    НаборЗаписей.Записать(Истина);
   Mankubus
 
2 - 30.11.17 - 08:56
(1) то есть так:
НашеСвойство = ПланыВидовХарактеристик.СвойстваОбъектов.НайтиПоНаименованию(НаименованиеСвойства);
    НоваяЗапись  = РегистрыСведений.ЗначенияСвойствОбъектов.СоздатьМенеджерЗаписей();
    НоваяЗапись.Объект = Ссылка; 
    НоваяЗапись.Свойство = НашеСвойство; 
    НоваяЗапись.Значение = Справочники.ЗначенияСвойствОбъектов.НайтиПоНаименованию(ЗначениеСвойства); 
    НаборЗаписей.Записать(Истина);
   rphosts
 
3 - 30.11.17 - 08:57
НаборЗаписей.Прочитать();
   НоваяЗапись = НаборЗаписей.Добавить(); 
замени на
   НаборЗаписей.Прочитать();
   НаборЗаписей.Очистить();
    НоваяЗапись = НаборЗаписей.Добавить();
   Румата
 
4 - 30.11.17 - 09:22
( rphosts) Ошибки не возникает, но не перезаписывает новые значения. Наверное где-то ещё идет запись в этот регистр ...
   Румата
 
5 - 30.11.17 - 09:22
Сейчас буду разбираться ...
   1sanekmaloi1
 
6 - 30.11.17 - 09:23
Чтение набора вообще накой надо, без Прочитать() все будет работать?
   Волшебник
 
Модератор
7 - 30.11.17 - 09:25
Используй менеджер записи или проверяй, что отбор действительно установился
   Mankubus
 
8 - 30.11.17 - 09:43
(4) а мой вариант чем не устроил?
   Румата
 
9 - 30.11.17 - 10:14
( Mankubus) Не рабочий вариант, сейчас подправлю, попробую ...
Что-то не могу разобраться, значения не перезаполняются через набор записей
   Румата
 
10 - 30.11.17 - 10:18
Вот так переделал процедуру, но все равно остаются старые значения в регистре... Голову уже сломал...


Процедура УстановитьСвойствоУНоменклатуры(НаименованиеСвойства,ЗначениеСвойства)
    НашеСвойство = ПланыВидовХарактеристик.СвойстваОбъектов.НайтиПоНаименованию(НаименованиеСвойства);
    НоваяЗапись  = РегистрыСведений.ЗначенияСвойствОбъектов.СоздатьМенеджерЗаписи();
    НоваяЗапись.Объект = Ссылка; 
    НоваяЗапись.Свойство = НашеСвойство; 
    НоваяЗапись.Значение = Справочники.ЗначенияСвойствОбъектов.НайтиПоНаименованию(ЗначениеСвойства); 
    НоваяЗапись.Записать(Истина);
КонецПроцедуры
 
 Рекламное место пустует
   Румата
 
11 - 30.11.17 - 10:24
Господа, помогите пожалуйста... Уже не первый час пытаюсь разобраться )
   Румата
 
12 - 30.11.17 - 11:36
Разобрался. Всему виной Обработка "ЗначенияСвойств" Табличная часть "СвойстваИЗначения" ;)
   Румата
 
13 - 30.11.17 - 11:44
Вот код, может кому-нибудь пригодится :
Процедура УстановитьСвойствоУНоменклатуры(НаименованиеСвойства,ЗначениеСвойства)
    НашеСвойство = ПланыВидовХарактеристик.СвойстваОбъектов.НайтиПоНаименованию(НаименованиеСвойства);
    НайденнаяСтрока = ОбработкаОбъектЗначенияСвойств.СвойстваИЗначения.Найти(НашеСвойство,"Свойство");
    Если НайденнаяСтрока <> Неопределено Тогда
         НайденнаяСтрока.Значение =  Справочники.ЗначенияСвойствОбъектов.НайтиПоНаименованию(ЗначениеСвойства); 
    КонецЕсли;    
КонецПроцедуры

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует