Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
14 дек 2024, 00:58

Таблица значений. Заполнение выборкой запроса

Автор Андрей Федотов, 20 июл 2011, 21:32

0 Пользователей и 2 гостей просматривают эту тему.

Андрей Федотов

Всем добрый вечер!
Интересует следующий вопрос.
Сразу отмечу, что речь идёт о толстом клиенте (не управляемые формы)
На форме документа размещена ТаблицаЗначений. В неё в конфигураторе интерфейсно добавлены три колонки:
1) Получатель
2) Сумма
3) Валюта

Далее, в модуле формы документа есть соответственно запрос, который выбирает из регистра получателя,сумму и валюту.
Не спрашивайте зачем сделана ТаблицаЗначений - было до меня.
Сейчас там написан код такой:

МояТаблицаЗначений = Запрос.Выполнить.Выгрузить(); // МояТаблицаЗначений находится на форме

Работает очень долго.
Если написать ВыборкаЗапроса = Запрос.Выполнить.Выбрать(); то на точке останова выполнение пролетает моментально.
В связи с этим возникает два вопроса:
1) Действительно ли Выгрузить() работает намного дольше чем Выбрать()
2) Как можно через выборку заполнить МояТаблицаЗначений:

Пробовал писать такой код:
Пока ВыборкаЗапроса.Следующий() Цикл;
МояТаблицаЗначений.Получатель = ВыборкаЗапроса.Получатель;
КонецЦикла;


Естественно возникает ошибка, что не найден реквизит Получатель.

Dethmontt

Пока Выборка.Следующий() Цикл
СтрокаТаблицыЗначений = МояТаблицаЗначений.Добавить();
СтрокаТаблицыЗначений.Получатель = Выборка.Получатель;
КонецЦикла;
Если долго всматриваться в учебник...то в голову может прийти мысль его открыть!

Андрей Федотов

Спасибо! Так работает)
А что работает быстрее:
Выгрузить() или Выбрать() и потом заполнение в цикле?

has

Цитата: Андрей Федотов от 21 июл 2011, 08:57
Спасибо! Так работает)
А что работает быстрее:
Выгрузить() или Выбрать() и потом заполнение в цикле?
Я бы Выгрузить() использовал, писать меньше. Что такая большая разница по времени?

CyberNut

Цитата: Андрей Федотов от 21 июл 2011, 08:57
Спасибо! Так работает)
А что работает быстрее:
Выгрузить() или Выбрать() и потом заполнение в цикле?

В конфигураторе "Отладка -> Замер производительности".
Нажимаешь, выполняешь код, отжимаешь, смотришь результат.
Повторяешь для другого варианта кода и сравниваешь результаты.

Андрей Федотов

Цитата: has от 21 июл 2011, 09:48
Я бы Выгрузить() использовал, писать меньше. Что такая большая разница по времени?

Ну получалось 1/3 где-то. Это если я делал через Сообщить (ТекущаяДата());
Причём на 1/3 меньше у Выбрать()

А через Замер производительности получается в 10 раз быстрее работает Выгрузить()

Вот и не ясно кто прав)

has

Цитата: Андрей Федотов от 21 июл 2011, 10:17

Ну получалось 1/3 где-то. Это если я делал через Сообщить (ТекущаяДата());
Причём на 1/3 меньше у Выбрать()

А через Замер производительности получается в 10 раз быстрее работает Выгрузить()

Вот и не ясно кто прав)
Замер производительности смотри и все, без всяких сообщить.

Dethmontt

В данном случае по любому Выгрузить() быстрее т.к. ЦИКЛ гонять не нужно!!!
Если долго всматриваться в учебник...то в голову может прийти мысль его открыть!

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск