Вход | Регистрация
 

групповая регистрация на обмен даных полученных запросом

групповая регистрация на обмен даных полученных запросом
Я
   baglandir111
 
07.02.20 - 12:48
Задача есть 400 000 записей "Договоров контрагентов" вытянутых запросом
Построчно пометка на обмен занимает 30 минут
Можно ли в 1С зарегистрировать на обмен колонку из запроса ?  
Сейчас так
    запрос.УстановитьПараметр ( "ДатаН", КонецДня(ТекущаяДата()) );
    результат = запрос.Выполнить ();
    выборка = результат.Выбрать () ;
    Сообщить ( "Сбор данных окончен: " + ТекущаяДата () );
    узел = ПланыОбмена.ОбменДМС.НайтиПоКоду ( "SQL" );
    
    пока ( выборка.Следующий () ) цикл
        Если   ЗначениеЗаполнено(выборка.Договор) Тогда
            ПланыОбмена.ЗарегистрироватьИзменения ( узел, выборка.Договор );
        КонецЕсли;
    конеццикла;


Хочу как то так :

запрос.УстановитьПараметр ( "ДатаН", КонецДня(ТекущаяДата()) );
    результат = запрос.Выполнить ().выгрузить();

    Сообщить ( "Сбор данных окончен: " + ТекущаяДата () );
    узел = ПланыОбмена.ОбменДМС.НайтиПоКоду ( "SQL" );
    
    
    ПланыОбмена.ЗарегистрироватьИзменения ( узел, результат.ВыгрузитьКолонку("Договор");


Можно ли так сделать ?
 
 
   Ёпрст
 
1 - 07.02.20 - 12:58
(0) нет. Максимум, самому проапдейтить табличку изменений у объекта
   Ёпрст
 
2 - 07.02.20 - 12:59
Если бы были все объекты, то там достаточно метаданные указать было бы, но у вас - коллекция ссылок
   fisher
 
3 - 07.02.20 - 13:01
Не
   pechkin
 
4 - 07.02.20 - 13:01
если тех что не надо сильно меньше, то можно зарегить все и удалить
   fisher
 
5 - 07.02.20 - 13:03
Но 30 мин - это что-то дофига даже для 400 000.
Регай изменения пачками в одной транзакции. Это помогает при мелких транзакциях.
   fisher
 
6 - 07.02.20 - 13:06
Ну, типа 
КвоТранзакцийПачки = 100;
НомерТранзакции = 0;
НачатьТранзакцию();
Пока Выборка.Следующий() Цикл
    НомерТранзакции = НомерТранзакции + 1;
    Если НомерТранзакции % КвоТранзакцийПачки Тогда
         ЗафиксироватьТранзакцию();
         НачатьТранзакцию();
    КонецЕсли;
    ПланыОбмена.ЗарегистрироватьИзменения();
КонецЦикла;
ЗафиксироватьТранзакцию();
   fisher
 
7 - 07.02.20 - 13:12
В принципе, для таблицы изменений размер пачки и до нескольких сотен можно свободно увеличивать. Там уже экспериментально.
   baglandir111
 
8 - 07.02.20 - 13:20
(1) что вы имеете ввиду под словами самому проапдейтить таблицу ?
(6) интересное решение буду пробовать, благодарю

Список тем форума
Рекламное место пустует  Рекламное место пустует
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.