Имя: Пароль:
1C
1С v8
Планы обмена, Зарегистрировать Изменения
0 rull9ss
 
06.11.13
13:48
Сильно не пинать, только учусь.

Типовая УТ. Настроены планы обмена.

Записываю примерно 300к записей в регистр сведений ЗначенияСвойствОбъектов. 95% времени занимает выполнение типового кода:

Если ТипОбъекта = Тип("РегистрСведенийНаборЗаписей.ЗначенияСвойствОбъектов") Тогда
        
        МассивУзлов = ПолучитьМассивУзловДляРегистрации(Истина);
        Для каждого Запись Из Объект Цикл
            
            ТипДанных = ТипЗнч(Запись.Объект);
            
            Если ТипДанных = Тип("СправочникСсылка.Номенклатура") Тогда
                ПланыОбмена.ЗарегистрироватьИзменения(МассивУзлов, Запись.Объект);
            ИначеЕсли ТипДанных = Тип("СправочникСсылка.ХарактеристикиНоменклатуры") Тогда
                ПланыОбмена.ЗарегистрироватьИзменения(МассивУзлов, Запись.Объект.Владелец);
            КонецЕсли;    
            
            
        КонецЦикла;
КонецЕсли;

Основное время занимает ПланыОбмена.ЗарегистрироватьИзменения(МассивУзлов, Запись.Объект);

Есть ли возможность записать данные разом, не обходя циклом построчно? а то уж очень долго выполняется запись.
1 rull9ss
 
06.11.13
13:55
апну
2 Naumov
 
06.11.13
14:01
использовать транзакцию?
3 Feunoir
 
06.11.13
14:03
(0) Судя по коду, оно регистрирует каждый элемент номенклатуры у которого есть дополнительные свойства. Боюсь, что победить получится только двумя способами

первый: закомментировать строку, загрузить, раскомментировать строку.

второй: записывать набор записей в режиме "загрузка=истина", а регистрировать для обмена потом вручную. Хотя оно может не помочь, так как не очень понятно откуда этот код выдернут.
4 rull9ss
 
06.11.13
14:06
(3) ОМ ПроцедурыОбменаССайтом
Процедура ЗарегистрироватьИзменения(Объект)
5 rull9ss
 
06.11.13
14:07
(2) как использование транзакции поможет уменьшить время выполнения?
6 Галахад
 
гуру
06.11.13
14:09
А номенклатур всего сколько?
7 rull9ss
 
06.11.13
14:10
(6) примерно 300000
8 Feunoir
 
06.11.13
14:13
(4) Ну в общем для обмена с сайтом контроля на "загрузка=истина" нет, поэтому второй вариант отпадает.
9 Serg_1960
 
06.11.13
14:13
(0) Хех. Временно отключи подписки типа "ПриЗаписи...ОбменССайтомПриЗаписи". Но ежели что - я этого не говорил :)
10 Feunoir
 
06.11.13
14:14
+(8) Но есть другой грязный хак :) Перед загрузкой попытаться поставить ПараметрыСеанса.НаличиеОбменаССайтом=Ложь. Может и получится.
11 Галахад
 
гуру
06.11.13
14:15
(7) Т.е. в любом случае всю номенклатуру надо выгружать?