Имя: Пароль:
1C
 
Оптимизация записи/очистки регистра сведений (РС) СоздатьНаборЗаписей
0 ИС-2
 
naïve
18.05.23
13:07
Есть такой код для очистки связанного с документом регистра.

Т.к в ТЧ может быть несколько тысяч строк, то  

        НЗ.Прочитать(); занимает 4 % времени
        нз.записать(); занимает 14% времени

Проверок при записи регистров нет.

Как можно ускорить запись регистра сведений?

Для Каждого Стр из Источник.товары Цикл
        Ключ = Новый Структура("Документ,Номенклатура,ХарактеристикаНоменклатуры,СерияНоменклатуры");
        ЗаполнитьЗначенияСвойств(Ключ,Стр);
        НЗ = РегистрыСведений.мк_ПогрузкаПачек.СоздатьНаборЗаписей();
        НЗ.Отбор.Документ.Установить(Источник.ДокументПередачи);
        НЗ.Отбор.Номенклатура.Установить(Стр.Номенклатура);
        НЗ.Отбор.ХарактеристикаНоменклатуры.Установить(Стр.ХарактеристикаНоменклатуры);
        НЗ.Отбор.СерияНоменклатуры.Установить(Стр.СерияНоменклатуры);
        НЗ.Прочитать();
        
        нз.Очистить();
        нз.записать();
    КонецЦикла;
1 RomanYS
 
18.05.23
13:09
вот это лишнее

        НЗ.Прочитать();
        
        нз.Очистить();
2 asady
 
18.05.23
13:09
(0) имхо прочитать()+Очистить() - лишнее
3 butterbean
 
18.05.23
13:09
не надо Прочитать и Очистить
4 RomanYS
 
18.05.23
13:10
Если удаляются все записи по Источник.ДокументПередачи, то удалять одним набором без цикла
5 asady
 
18.05.23
13:11
(0) и ключ зачем-то создаешь и заполняеь
6 OldCondom
 
18.05.23
13:11
+ к (4) также отбор по документу за цикл вынести
Это до цикла:
НЗ = РегистрыСведений.мк_ПогрузкаПачек.СоздатьНаборЗаписей();
НЗ.Отбор.Документ.Установить(Источник.ДокументПередачи);
7 RomanYS
 
18.05.23
13:12
(4) а если НЕ все, то читаем набор по Отбор.Документ, удаляем из него лишние записи и записываем... один раз
8 ИС-2
 
naïve
18.05.23
15:05
(1) да, правы это не надо
(4) нет, там могут и быть не все записи для удаления

Но больше вопрос был в том "почему на запись регистра к коотрому нет отбращений и проверок при записи уходит так много времени"
9 RomanYS
 
18.05.23
15:50
(8) как много? Каждая запись это обращение к БД и куча накладных расходов.
Попробуй менеджер записи, хотя быстрее как раз писать одним набором как в (7)
10 H A D G E H O G s
 
18.05.23
17:34
ОбменДанными.Загрузка
Выдавать глобальные идеи — это удовольствие; искать сволочные маленькие ошибки — вот настоящая работа. Фредерик Брукс-младший