Имя: Пароль:
1C
1С v8
Как перезаписать запись регистра сведений
,
0 Aleksey1989
 
06.09.13
14:30
Есть регистр сведений с одним измерением Номенклатура. Регистр сведений периодический с периодом "День".

Если запись с этим измерением уже существует в регистре сведений, то при попытке записать новую запись, система ругается "запись с такими ключевыми полями существует!"

Использую следующий код (праметр "Замещать" установлен в значение "Истина"):
            НаборЗаписей = РегистрыСведений.ЦеныНоменклатуры.СоздатьНаборЗаписей();
            НаборЗаписей.Отбор.Номенклатура.Установить(Товар);
            НаборЗаписей.Прочитать();
            
            Запись = НаборЗаписей.Добавить();
            Запись.Номенклатура = Товар;
            Запись.Период = Дата('20130901');
            Запись.Цена = Число(Строка[i-1]);
            НаборЗаписей.Записать(Истина);
1 ДенисЧ
 
06.09.13
14:31
Удалить, потом записывать - не предлагать?
2 Irbis
 
06.09.13
14:33
А зачем добавлять?
3 Aleksey1989
 
06.09.13
14:33
(1) Тогда в чем предназначение параметра "Замещать"?
4 Irbis
 
06.09.13
14:34
(3) У тебя в записываемом наборе две одинаковых записи, какую из них оставить?
5 Enders
 
06.09.13
14:35
Менеджер записей использовать, не?
Если набором то циклом перебирать все записи набора и нужную вам изменить.
6 НЕА123
 
06.09.13
14:36
НаборЗаписей.Прочитать();
закомментируй.
7 z0001
 
06.09.13
14:36
"НаборЗаписей = РегистрыСведений.ЦеныНоменклатуры.СоздатьНаборЗаписей();
            НаборЗаписей.Отбор.Номенклатура.Установить(Товар);
            НаборЗаписей.Прочитать();
"
там одно измерение?
8 butterbean
 
06.09.13
14:38
(0) а где отбор по периоду??
9 Aleksey1989
 
06.09.13
14:39
(7) Да, одно.
10 Aleksey1989
 
06.09.13
14:46
(8) Про отбор по периоду забыл. Но все равно, если его установить, по-прежнему появляется ошибка "Запись с такими ключевыми полями существует".
11 z0001
 
06.09.13
14:47
если НаборЗаписей.Прочитать(); то и очистить
(отладчиком смотри что там и что в регистре запросами)
вообще читать не нужно хотя в некоторых случаях читать+чистить + тразакцию фиксировать стабильности добавляет но это уже другая история
12 Aleksey1989
 
06.09.13
14:48
Да, все дело в методе "Прочитать". Всем спасибо за помощь.
Выдавать глобальные идеи — это удовольствие; искать сволочные маленькие ошибки — вот настоящая работа. Фредерик Брукс-младший