|  | Планы обмена, Зарегистрировать Изменения | ☑ | 
    
        | 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) Т.е. в любом случае всю номенклатуру надо выгружать?     |  | 
        Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший