Имя: Пароль:
1C
1С v8
Очень медленная запись движений
0 Adept
 
18.06.16
09:34
Надо задним числом обработать документы с движениями
отдельно при необходимости записываю документ

ТекущийОбъект.ОбменДанными.Загрузка = Истина;
ТекущийОбъект.Записать();


Отдельно движения по определенным регистрам
ТекущиеДвижения = ТекущийОбъект.Движения[элДвижения.Ключ];
ТекущиеДвижения.Прочитать();
// тут что то делаю
ТекущиеДвижения.Записать(Истина);


заметил, запись движений занимает 80% времени, а запись документа около 7%, хотя грубо говоря на один документ приходиться два движения(из тех которые перезаписываются)

в чем причина такой сильной разницы?
1 romix
 
18.06.16
09:50
У регистров по сравнению с документом есть индексы, таблицы остатков и оборотов, блокировки (параллельно может кто-то читать). Можно посмотреть, нет ли нехороших полей, дающих большой индекс, закрывается ли таблица остатков, сколько весит сама таблица/таблицы регистра (вдруг они в сумме большие), посмотреть, что будет с монопольными режимами - блокировками - записью некоего множества данных в одной транзакции (начать транзакцию - зафиксировать транзакцию).
2 bolder
 
18.06.16
09:52
(0) Попробуй в первом случае написать
ТекущийОбъект.Записать(РежимЗаписиДокумента.Проведение)
тогда все поймёшь.
3 sda553
 
18.06.16
09:53
При массовой обработке движений задним числом надо выключить пересчет итогов. После записи всез движений, вклбчить пересчет и один раз пересчитать
4 Adept
 
18.06.16
10:04
(3) то что надо, спасибо
AdBlock убивает бесплатный контент. 1Сергей