|
Изменить измерение регистра сведений
| ☑ |
0
Momus
13.12.19
✎
10:33
|
Есть независимый периодический регистр сведений. Нужно массово изменить измерение регистра за определенный период. Делал через запрос с изменением по одной записи в цикле через набор записей. Поскольку записей достаточно много, изменение идет очень медленно. Есть ли какой-то другой способ изменить ИЗМЕРЕНИЕ регистра с отбором по ПЕРИОДУ?
Делал вот так:
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
Набор = РегистрыСведений.ИмяРегистра.СоздатьНаборЗаписей();
Для каждого Стр Из Набор.Отбор Цикл
Стр.Установить(Выборка[Стр.Имя]);
КонецЦикла;
Набор.Прочитать();
ВТ = Набор.Выгрузить();
ВТ.ЗаполнитьЗначения(Выборка.НовыйПользователь, "Пользователь");
НовыйНабор = РегистрыСведений.ИмяРегистра.СоздатьНаборЗаписей();
НовыйНабор.Отбор.Пользователь.Установить(Выборка.НовыйПользователь);
НовыйНабор.Загрузить(ВТ);
Набор.Очистить();
НовыйНабор.Записать();
Набор.Записать();
КонецЦикла;
|
|
1
hhhh
13.12.19
✎
10:38
|
(0) сделай в транзакции, по 1000 наборов
|
|
2
Александр Б
13.12.19
✎
10:49
|
(0) Вообще, для работы с отдельными записями в 100 раз удобнее использовать менеджер записи, вместо набора. Это на будущее.
|
|
3
lodger
13.12.19
✎
10:58
|
это надо делать в запросе.
@Набор.Прочитать();
@ВТ = Набор.Выгрузить();
в цикле по выборке только СоздатьНаборЗаписей() Установить() Загрузить(добавить() в цикле по подвыборке) Записать()
|
|
4
Momus
13.12.19
✎
11:42
|
Пока переделывал с учетом всех рекомендация нашел очень грубую ошибку:
при установлении отбора в НовомОтборе я установил его лишь по одному измерению.
Вот что значит лепить набор записей там, где не следует). Изначально я планировал изменить записи в три строчки с использованием набора записей, но для регистра сведений отбор по периоду возможен только на "равно".
|
|