Имя: Пароль:
1C
1С v8
ускорить массовую запись в регистр расчета
0 cons74
 
01.08.14
07:26
Добрый день.
Требуется загрузить данные из сторонней программы в ЗУП по регистрам расчета, за 2 года.
Гружу через обработку ЗагрузкаИзТабличногоДокумента. первые несколько записей идут быстро - а потом все медленнее и медленнее.
Как я понял итоги в РР не отключить (их вроде нет), монопольный режим включил.
Что еще сделать?
1 МихаилМ
 
01.08.14
07:57
воспользоваться поиском по форуму.
2 ИС-2
 
naïve
01.08.14
08:04
Можно распараллелить с помощью нескольких сеансов и фоновых заданий. Но для однакратной перегрузки нет смысла.
Если файловая, то сделать перенос на SSD диске
3 Escander
 
01.08.14
08:09
ОбменДанными.Загрузка = Истина ?
4 Maxus43
 
01.08.14
09:19
>>а потом все медленнее и медленнее.
в одной транзакции значит идёт.
Если не принципиально, то вне транзакции делай
5 cons74
 
01.08.14
09:31
(4) я тоже так подозреваю, но не вижу - где:
в коде-то

Функция ЗаписатьОбъект(Объект, ТекстыЯчеек = Неопределено)
    
        
    Отказ = Ложь;
    НачатьТранзакцию();
    ...
    Если Не Отказ  Тогда
        Попытка
            Объект.Записать();
        Исключение
            Отказ = Истина;
            ОписаниеОшибки = ОписаниеОшибки();
        КонецПопытки;
    КонецЕсли;
    
    ...        
            
    Если Не Отказ Тогда
        ЗафиксироватьТранзакцию();
    Иначе
        мСообщитьОбОшибке(ОписаниеОшибки);
        ОтменитьТранзакцию();
    КонецЕсли;
    
    Возврат Не Отказ;


Т.е. каждая строка пишется вроде-бы в отдельной транзакции.
Есть мысль что виноваты перерасчеты...
6 Maxus43
 
01.08.14
09:47
(5) смысл писать один объект в транзакции, если запись и так в транзакции... я хз
7 Maxus43
 
01.08.14
09:52
копай сюда

РегистрРасчетаНаборЗаписей.<Имя регистра расчета> (CalculationRegisterRecordSet.<Имя регистра расчета>)
Записать (Write)
Синтаксис:

Записать(<Замещать>, <ТолькоЗапись>, <ЗаписьФактическогоПериодаДействия>, <ЗаписьПерерасчетов>)

только запись надо, остальное нафиг. Перерасчеты потом, но будет долго
8 1Сергей
 
01.08.14
09:55
(5) смысл транзакционирования в том, что ты готовишь некий блок данных и записываешь одним махом. В этом есть небольшой (а иногда и большой) выигрыш по времени, нежели каждую запись в отдельной транзакции
9 cons74
 
01.08.14
10:30
(6) это типовая обработка
(7) ага, только что сделал
(8) спасибо, попробую
10 ИС-2
 
naïve
01.08.14
10:31
11 cons74
 
01.08.14
11:41
(10) долго читал, ничего такого не увидел
12 _fvadim
 
01.08.14
11:44
для начала совсем выкини транзакции
AdBlock убивает бесплатный контент. 1Сергей