|
Запись в набор записей регистра сведений
| ☑ |
0
NurSagen
14.01.22
✎
13:32
|
Есть непереодический независимый регистр сведений, с одним измерением. Он имеет уже некоторые записи. Нужно массово в него добавить еще записей.
Я сделал примерно так:
НаборЗаписей = РегистрыСведений.РС.СоздатьНаборЗаписей();
НаборЗаписей.Прочитать();
Для Каждого Документ Из МассивДокументов Цикл
НовЗапись = НаборЗаписей.Добавить();
НовЗапись.Измерение1 = Документ;
КонецЦикла;
НаборЗаписей.Записать(Истина);
И получаю ошибку, что запись с такими ключевыми полями уже существует. Логично, один из записываемых документов уже есть в регистре, но как тогда переписать код?
Писать через менеджер записей - вроде неправильно, ведь массив большой, записей осуществляется много.
P.S. я честно говоря, думал, что в "НаборЗаписей.Записать(Истина)" параметр Истина как-раз таки и будет замещать повторяющиеся записи..
|
|
1
NurSagen
14.01.22
✎
13:33
|
Делать каждый раз отбор по документу и прочитывать в цикле заново и проверять есть ли что-то уже тоже мне не нравиться, кажется что будет долго.
|
|
2
Галахад
гуру
14.01.22
✎
13:37
|
В массиве-то дублей нет?
|
|
3
hhhh
14.01.22
✎
13:38
|
(1) делай в транзакции, тогда будет быстро
|
|
4
NurSagen
14.01.22
✎
13:40
|
(2) нет
|
|
5
youalex
14.01.22
✎
14:44
|
А Прочитать() зачем?
|
|
6
Ёпрст
14.01.22
✎
14:46
|
(0) выкинуть прочитать, добавить отбор
|
|
7
Kassern
14.01.22
✎
14:47
|
(0)
НаборЗаписей = РегистрыСведений.РС.СоздатьНаборЗаписей();
НаборЗаписей.Загрузить(ПодготовленнаяТаблицаСДокументами);
НаборЗаписей.записать();
|
|
8
Kassern
14.01.22
✎
14:48
|
(7) Запросом получаете все необходимые записи для РС и пихаете в таблицу значений
|
|
9
timurhv
14.01.22
✎
15:01
|
(8) И через 0.05 сек другой сеанс загружает свои данные, удаляя изменения предыдущего? Блокировки тогда ставить на весь регистр.
|
|
10
Kassern
14.01.22
✎
15:04
|
(9) надо с пониманием к этому способу подходить. Актуален, когда надо перезаполнить львиную долю регистра
|
|