|
Запись с такими ключевыми полями существует (при повторной загрузке) |
☑ |
0
Mary01
29.06.15
✎
15:51
|
Добрый день!
Как сделать, чтобы в регистре сведений данные замещались при совпадении ключевых полей?
Есть ТЗ, из нее в цикле заполняю регистр ЦеныНоменклатуры.
Регистр периодический, периодичность - день.
До начала цикла я создаю набор записей, в цикле заполняю, после цикла записываю: НаборЗаписей.Записать();
Но при этом, вместо того, чтобы заместить повторяющиеся записи, программа выдает ошибку, что запись с такими ключевыми полями существует.
|
|
1
Enterprise
29.06.15
✎
15:56
|
(0) Может надо еще Прочитать() ?
|
|
2
pavelul73
29.06.15
✎
15:59
|
Записать (Write)
Синтаксис:
Записать(<Замещать>)
Параметры:
<Замещать> (необязательный)
Тип: Булево.
Определяет режим замещения существующей записи в соответствии с текущими установками отбора. Истина - перед записью существующие записи будут удалены. Ложь - записи будут дописаны к уже существующим в информационной базе записям.
|
|
3
Ненавижу 1С
гуру
29.06.15
✎
16:00
|
если регистраторы разные, то не взлетит, записи другого регистратора придется очистить
|
|
4
Mary01
29.06.15
✎
16:01
|
(2) Истина по умолчанию, поэтому не указываю параметр
|
|
5
Mary01
29.06.15
✎
16:01
|
(3) Регистр не подчинен регистратору, он независимый
|
|
6
hhhh
29.06.15
✎
16:08
|
значит 2 одинаковые номенклатуры в набор записей пишете
|
|
7
Mary01
29.06.15
✎
16:12
|
(1) Если Прочитать() перед циклом, то та же ошибка, если после цикла, то ошибки нет, но и не записывает ничего.
Если в цикле, то тогда надо и НаборЗаписей.Записать() писать в цикле - но при этом опять та же ошибка
|
|
8
anatoly
29.06.15
✎
16:29
|
(6) надо чтобы все измерения совпали.
|
|
9
hhhh
29.06.15
✎
17:49
|
(6) они и совпадают. разница в номенклатуре.
|
|
10
Maniac
29.06.15
✎
17:56
|
НаборЗаписей = РегистрыСведений.НоменклатураКонтрагентов.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.Контрагент.Установить(Контрагент);
НаборЗаписей.Отбор.Номенклатура.Установить(Стр.Номенклатура);
НаборЗаписей.Отбор.ХарактеристикаНоменклатуры.Установить(Стр.ХарактеристикаНоменклатуры);
НаборЗаписей.Прочитать();
Если НаборЗаписей.Количество() = 0 Тогда
Запись = НаборЗаписей.Добавить();
Иначе
Запись = НаборЗаписей.Получить(0);
КонецЕсли;
|
|
11
Рэйв
29.06.15
✎
18:46
|
(10)Не учи плохому.
А если несколько ?
|
|
12
Mary01
30.06.15
✎
07:00
|
(10) мне нужно без отбора, т.к. в таблице строки не по одной какой-то номенклатуре, а по многим.
Просто в регистре уже есть абсолютно аналогичные строки, на них и ругается и не записывает. А мне надо чтобы эти строки просто замещались, а новые добавлялись
|
|
13
Mary01
30.06.15
✎
08:00
|
(6) Вы оказались правы, в ТЗ действительно было 2 строки, где все поля были одинаковы (кроме цены - в одной строке цена нормальная, в другой цена = 0). Удалила строку с нулевой ценой, и все стало нормально загружаться.
Всем спасибо!
|
|
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший