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

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

групповая регистрация на обмен даных полученных запросом
Я
   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) интересное решение буду пробовать, благодарю

Список тем форума
Рекламное место пустует  Рекламное место пустует
Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование.
Фредерик Брукс-младший
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.