План обмена как количество элементов? #424097


#0 by Alesha
Как определить количество объектов, которые будут выгружены в сообщение при обмене через план обмена. Это нужно для того, что бы определить примерное время, когда закончится обмен.
#1 by Широкий
посчитай запросом
#2 by Alesha
подскажи, пожалуйста, как?
#3 by Serg_1960
#4 by Serg_1960
Т.е я хотел Вам напомнить о том, что количество изменений - это довольно "абстрактная" величина. Напримре, удаление объекта в риб-базе, пожалуй, самое "быстрое" по времени исполнения, - т.к. идет без контроля наличия ссылок...
#5 by Defender aka LINN
Неплохой метод. Подсчет по времени чуть меньше будет идти, чем сам обмен.
#6 by H A D G E H O G s
"И эти люди запрещают ковыряться нам в носу???". Садись, два!
#7 by H A D G E H O G s
Даже не три, а два. Так как это будет работать. И никто не будет разбираться в этом коде, так как "а ну там работает, ну и ладно".
#8 by Широкий
Попробуй как по скорости будет
#9 by H A D G E H O G s
#11 by Широкий
Сам это пробовал?
#12 by Широкий
+ Если внимательно посмотришь код - то увидешь что выборка будет непустой в любом случае
#14 by H A D G E H O G s
Всё. Посыпаю голову пеплом, проворонил начало текста запроса.
#15 by Широкий
Так будет более универсально И по скорости вроде тоже неплохо отрабатывает.. Функция ВернутьКоличествоОбъектовДляВыгрузки(УзелОбмена)
#16 by Alesha
УПП 1.2.22 Сделал запросом. Вернулась ошибка {Форма.Форма(2356)}: Ошибка при вызове метода контекста (Выполнить): {(73, 29)}: Таблица не найдена "РегистрРасчета.РасчетСреднегоЗаработка.Перерасчет.ПерерасчетСреднегоЗаработка.Изменения" ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 1 ИЗ <<? >>РегистрРасчета.РасчетСреднегоЗаработка.Перерасчет.ПерерасчетСреднегоЗаработка.Изменения ГДЕ Узел = &Узел    Результат=Запрос.Выполнить; по причине: {(73, 29)}: Таблица не найдена "РегистрРасчета.РасчетСреднегоЗаработка.Перерасчет.ПерерасчетСреднегоЗаработка.Изменения" ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 1 ИЗ <<?>>РегистрРасчета.РасчетСреднегоЗаработка.Перерасчет.ПерерасчетСреднегоЗаработка.Изменения ГДЕ Узел = &Узел
#17 by Живой Ископаемый
2 Твой регистр расчетов не учавствует в этом плане обмена.. учитывай это
#18 by Alesha
если он не учавствует, то как он попал в УзелОбменаСостав=УзелОбмена.Метаданные.Состав; ? Работает так:    Для каждого ОбъектСостава Из УзелОбменаСостав Цикл
#19 by Широкий
Щас гляну
#20 by Широкий
Тестируй
#21 by Alesha
Спасибо! Так хорошо работает.
#22 by Широкий
Что по времени выполнения?
#23 by Alesha
Количество изменений = 36; время выполнения расчета = 1с ; дата = 06.08.2009 12:19:25 (главный узел) Количество изменений = 5; время выполнения расчета = 4с ; дата = 06.08.2009 12:26:01 (подчиненный узел) Перепровел 1445 документов (7дней) Количество изменений = 21 911; время выполнения расчета = 26с ; дата = 06.08.2009 13:15:31 Причем время на обработку зависит от того откуда вызывать: Из внешней обработки 26 с на 21 000 объектов. Из модуля плана обмена 1 с на 21 000 объектов.
#24 by Alesha
выгрузка длилась 6 минут. Время на подсчет ~ 7% от времени выгрузки
#25 by Dionisious
У меня такой код: Выполняется намного быстрее. Так что рекомендую.
#26 by Dionisious
это потому что есть ОБЪЕДИНИТЬ - не самая быстрая операция. Опять же упираемся в то что может возникнуть ошибка использования 256 таблиц в одном запросе.
#27 by Широкий
Ну нет так нет :)
#28 by Serg_1960
Как и ожидалось - монстры проснулись, зашевелились и выдали "на гора" ответ - что и требовалось :))
#29 by Alesha
А, если без объединить, выполняя каждый запрос отдельно в цикле, то будет сильно быстрее?
#30 by Dionisious
врят ли.
#31 by Живой Ископаемый
2 Можно без объединить и не в цикле, а пакетным запросом.. Правда пока не уверен как это должно выглядеть до конца.. Но - ты ведь можешь попробовать
#32 by Alesha
что такое пакетный запрос?
#33 by Живой Ископаемый
2 Ну вот смотри - я могу полезть в букварь и привести тебе пример пакетного запроса.. С другой стороны - ты сам можешь полезть в букварь.. ведь верно?
#34 by Широкий
Как пакетный запрос может помочь?
#35 by Dionisious
ИМХО: ни как.
#36 by Живой Ископаемый
2 Не знаю если честно, пока просто мысль.. Например каждый запрос из пакета будет валить количество по своему метаданному во временную таблицу...
#37 by Живой Ископаемый
и пакетник будет лишен недостатков выполнения кучи маленьких запросов в цикле, и одного большого с ОБЪЕДИНИТЬ - в плане ограничения по 256 таблицам
#38 by Dionisious
засада в том что: пакетный запрос не добавляет записи в таблицу, а заменяет. Хотя если честно не проверял, мало ли.
#39 by Живой Ископаемый
2э.. да, наверное.. но появится время, я проверю...
#40 by Alesha
Видов документов в УПП ~ 400 + справочники, запрос работает. Почему не сработало ограничение в 256 таблиц? Когда в него упремся?
#41 by Alesha
Запросом Количество изменений = 21 983; время выполнения расчета = 31с ; дата = 06.08.2009 16:38:49 через ВыбратьИзменения: Алгоритм 2: Количество изменений = 21 983; время выполнения расчета = 1с ; дата = 06.08.2009 16:38:50
#42 by Alesha
если поменять местами алгоритмы, то через ВыбратьИзменения: Алгоритм 2: Количество изменений = 21 983; время выполнения расчета = 11с ; дата = 06.08.2009 16:42:51 Запросом Количество изменений = 21 983; время выполнения расчета = 3с ; дата = 06.08.2009 16:42:54
#43 by Живой Ископаемый
2 гы... Так нельзя...  Нужно каждый метод выполнить по 21-му разу и сказать какой среднее время без первого раза...
#44 by Живой Ископаемый
Это из-за кэша
#45 by Dionisious
файловый вариант потому что. Ограничение 256 таблиц в запросе - ограничение SQL.
#46 by Dionisious
(41,42) по любому выбрать изменения быстрее.
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С