Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Долго получает данные из другой базы (через COM подключение)

Долго получает данные из другой базы (через COM подключение)
Я
   ac13
 
09.04.19 - 17:30
Подключась к базе и получаю из нее данные через запросы

...
База = Соединение.Connect(Параметры);

Запрос = База.NewObject("Запрос");
Запрос.Текст = "...";
Выборка = Запрос.Выполнить.Выбрать();

Выборка из таких запросов обрабатывается долго, хотя данных не так уж и много. Процесс можно как-то ускорить или это нормально, когда выборка из другой базы?
 
 
   ptiz
 
1 - 09.04.19 - 17:33
(0) "Выборка из таких запросов обрабатывается долго" - смотря что в обрабатывающем коде понаписано.
   ac13
 
2 - 09.04.19 - 17:35
(1) Выборка.Количество() = 500, элементарно
Пока Выборка.Следующий() Цикл
     Сообщить("123");
КонецЦикла;

будет долго ...
   Nuobu
 
3 - 09.04.19 - 17:36
(2) А выгрузить()?
   ac13
 
4 - 09.04.19 - 17:41
(3) Выгрузить не пробовал
   Cyberhawk
 
5 - 09.04.19 - 17:41
Ну попробуй не выборку обходить, а ТЗ
   Вафель
 
6 - 09.04.19 - 17:42
получать только примитивные типы из запроса: число, строка, дата
   ac13
 
7 - 09.04.19 - 17:43
(5) сейчас попробую, (6) да да
   Вафель
 
8 - 09.04.19 - 17:44
(7) тз не поможет, тк это будет ком тз, а не тз приемника
   Cyberhawk
 
9 - 09.04.19 - 17:47
(8) Большая выборка-то в файлики будет сбрасываться, а ТЗ - не будет
   Cyberhawk
 
10 - 09.04.19 - 17:49
На специалисте за такое насилование ОЗУ (выгрузка в ТЗ) конечно же балл снимут, но в жизни оно по-всякому бывает)
   ac13
 
11 - 09.04.19 - 17:49
(8) ну да, че-то быстрее не стало, как бы не медленнее
   Cyberhawk
 
12 - 09.04.19 - 17:50
Так ты замером код замерь, что занимает дольше времени - Следующий() или шаг цикла
   ac13
 
13 - 09.04.19 - 17:52
(12) выборка результата запроса быстрее
   Вафель
 
14 - 09.04.19 - 17:52
(9) Выборка - такое же насилование ОЗУ. в файлики только на 32 битах
   Nuobu
 
15 - 09.04.19 - 17:53
(11) Попробуй еще сделать функцию, которая сделана полностью в базе, куда ты обращаешься, и пусть она ТЗ с примитивными типами оборачивает в "ЗначениеВСтрокуВнутр".
   Провинциальный 1сник
 
16 - 09.04.19 - 17:54
Это да. Вообще конечно странно это. Я ранее предполагал, что выборка это открытый курсор на sql-сервере. Оказалось это заполненный буфер в памяти.
   Вафель
 
17 - 09.04.19 - 17:55
никогда выборка в 1с не была открытым курсором
   ac13
 
18 - 09.04.19 - 17:58
ладно, пусть пока будет так, на самом деле вся обработка длится секунд 30, потрепеть можно
   Cyberhawk
 
19 - 09.04.19 - 17:59
(13) Ты отвечаешь на какой-то незаданный вопрос
   Cyberhawk
 
20 - 09.04.19 - 18:06
(14) Спс
   TormozIT
 
21 - 10.04.19 - 06:57
   Жан Пердежон
 
22 - 10.04.19 - 07:00
(10) и давно на специалисте через COM заставляют данные гонять?
   Провинциальный 1сник
 
23 - 10.04.19 - 07:16
(8) Финт ушами с ЗначениеВСтрокуВнутр туда-сюда - и готова ТЗ приемника
   Cyberhawk
 
24 - 10.04.19 - 08:33
(22) Хз о чем ты. Походу ты что-то напутал.
   ac13
 
25 - 10.04.19 - 08:47
(21) спасибо!
   Кирпич
 
26 - 10.04.19 - 08:59
(23) Вот вот. А еще лучше ЗначениеВФайл(), а потом ЗначениеИзФайла()
   Кирпич
 
27 - 10.04.19 - 09:00
чтобы памяти не ужирало, если выборка большая
   ac13
 
28 - 10.04.19 - 10:37
(23) (26) это надо делать в базе источнике (откуда данные выгружаются) и потом из обработки в базе приемнике обращаться к модулю базы источника, к которой подключаюсь?
   Провинциальный 1сник
 
29 - 10.04.19 - 10:41
(28) НашаТабЗнач=ЗначениеИзСтрокиВнутр(БАЗА.ЗначениеВСтрокуВнутр(ЧужаяТабЗнач))
   Провинциальный 1сник
 
30 - 10.04.19 - 10:42
И вообще таким финтом лучше всё передавать, особенно числа - чтобы не получить потери точности.
 
 


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