Форум на Kuban.ru (http://forums.kuban.ru/)
-   Территория 1С (http://forums.kuban.ru/f1040/)
-   -   В чем отличие Выбрать() и Выгрузить() (http://forums.kuban.ru/f1040/v_chem_otlichie_vybrat-_i_vygruzit--4409949.html)

med 26.06.2013 10:13

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

и

Итог = Запрос.Выполнить().Выгрузить();
Для каждого Выборка из Итог Цикл
КонецЦикла

в чем принципиальная разница между этими двумя способами ?
Для варианта, когда группировок нет.
Собственно история вопроса - столкнулся с тем, что первый вариант, почему то не всегда выдает информацию
Один и тот же запрос в отладчике .Количество() выдает цифру, скажем - 2
Но Выборка.Следующий() выдает ложь,
а Для каждого Выборка из Итог Цикл отрабатывает нормально
В чем прикол ?

vodoley_ol 27.06.2013 11:24

Выбрать - это перебор результата запроса
выгрузить - выгружается результат запроса в таблицу значений

vodoley_ol 27.06.2013 11:27

+(1)
можно выгрузить и в дерево значений если выгружаешь с иерархией

vodoley_ol 27.06.2013 11:29

+(2) вернее сказать с группировками

med 28.06.2013 13:18

[quote=vodoley_ol;31050034]Выбрать - это перебор результата запроса выгрузить - выгружается результат запроса в таблицу значений [/quote]
Сами действия то , - как раз понятны, меня интересуют их отличия
Чем перебор так сказать в лоб через выбрать отличается от перебора после выгрузки в ТЗ ?
Почему при выгрузке в ТЗ и перебор - строки есть
а при обработке в лоб через Выбрать() - строк нет, т.е. цикл
Пока Выборка.Следующий() Цикл
КонецЦикла
вообще не отрабатывается
Выборка.Следующий() = Ложь сразу же.
Почему ?

Uho 28.06.2013 13:51

[quote=med;31068391]Почему при выгрузке в ТЗ и перебор - строки есть а при обработке в лоб через Выбрать() - строк нет, т.е. цикл Пока Выборка.Следующий() Цикл КонецЦикла вообще не отрабатывается[/quote]
ты хочешь сказать, что при выгрузке в ТЗ есть детальные записи? а при переборе выборки их нет?
не верю!

Jimbo 28.06.2013 13:52

смотря какая выборка, может там несколько выборок с итогами

med 01.07.2013 07:27

[quote=Uho;31069002]ты хочешь сказать, что при выгрузке в ТЗ есть детальные записи? а при переборе выборки их нет? не верю! [/quote]
Сам в шоке :-)
Скажем
Выборка.Количество() выдает - 2 есть две строки
у самого запроса нет ни группировок ни итогов
единственное это полное объединение (объединить всё) двух запросов , конкретно - двух типов приходных документов из которых берутся одни и те же поля.
Но вот такая катавасия...

med 01.07.2013 07:28

Т.е. похоже это глюк 1С, т.е. по правилам оба эти варианта должны обрабатываться одинаково ?

Uho 02.07.2013 09:34

[quote=med;31094836]Выборка.Количество() выдает - 2 есть две строки[/quote][quote=med;31032158]Но Выборка.Следующий() выдает ложь[/quote]


фигня, ошибка в коде, ну или версия платформы какая-нибудь экзотическая

med 02.07.2013 11:51

[quote=Uho;31113935]фигня, ошибка в коде, ну или версия платформы какая-нибудь экзотическая [/quote]
Код я весь привел
платформа - может быть ...

Uho 02.07.2013 11:59

это далеко не весь код

med 02.07.2013 12:07

[quote=Uho;31117694]это далеко не весь код [/quote]
Пожалуйста:
Запрос = Новый Запрос;

Запрос.Текст =

"ВЫБРАТЬ
| Данные.Ссылка,
| Данные.Дата,
| Данные.Склад,
| Данные.Организация
|ИЗ
| (ВЫБРАТЬ
| РеализацияТоваровУслуг.Ссылка КАК Ссылка,
| НАЧАЛОПЕРИОДА(РеализацияТоваровУслуг.Дата, ДЕНЬ) КАК Дата,
| РеализацияТоваровУслуг.Склад КАК Склад,
| РеализацияТоваровУслуг.Организация КАК Организация
| ИЗ
| Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
| ГДЕ
| РеализацияТоваровУслуг.Проведен
| И РеализацияТоваровУслуг.Дата >= &ДатаНачала
| И РеализацияТоваровУслуг.Дата <= &ДатаОкончания
| И РеализацияТоваровУслуг.Организация В(&Организации)
| И ВЫБОР
| КОГДА &ЕстьОтбор
| ТОГДА РеализацияТоваровУслуг.Контрагент <> &Контрагент
| ИНАЧЕ ИСТИНА
| КОНЕЦ
| И ВЫБОР
| КОГДА &ЕстьОтбор2
| ТОГДА РеализацияТоваровУслуг.Контрагент <> &Контрагент2
| ИНАЧЕ ИСТИНА
| КОНЕЦ
| И ВЫБОР
| КОГДА &ЕстьСклад
| ТОГДА РеализацияТоваровУслуг.Склад = &Склад
| ИНАЧЕ ИСТИНА
| КОНЕЦ
|
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ
| ТребованиеНакладная.Ссылка,
| НАЧАЛОПЕРИОДА(ТребованиеНакладная.Дата, ДЕНЬ),
| ТребованиеНакладная.Склад,
| ТребованиеНакладная.Организация
| ИЗ
| Документ.ТребованиеНакладная КАК ТребованиеНакладная
| ГДЕ
| ТребованиеНакладная.Проведен
| И ТребованиеНакладная.Дата >= &ДатаНачала
| И ТребованиеНакладная.Дата <= &ДатаОкончания
| И ТребованиеНакладная.Организация В(&Организации)
| И ВЫБОР
| КОГДА &ЕстьСклад
| ТОГДА ТребованиеНакладная.Склад = &Склад
| ИНАЧЕ ИСТИНА
| КОНЕЦ) КАК Данные
|
|УПОРЯДОЧИТЬ ПО
| Данные.Дата,
| Данные.Организация,
| Данные.Склад
|АВТОУПОРЯДОЧИВАНИЕ";

Запрос.УстановитьПараметр("ЕстьОтбор",НЕ ПокупательИсключение.Пустая());
Запрос.УстановитьПараметр("ЕстьОтбор2",НЕ ПокупательИсключение2.Пустая());
Запрос.УстановитьПараметр("Контрагент",ПокупательИсключение);
Запрос.УстановитьПараметр("Контрагент2",ПокупательИсключение2);
Запрос.УстановитьПараметр("ДатаНачала",НачалоДня(ДатаНачала));
Запрос.УстановитьПараметр("ДатаОкончания",КонецДня(ДатаОкончания));
Запрос.УстановитьПараметр("Организации",Организации.ВыгрузитьКолонку("Организация"));
Запрос.УстановитьПараметр("ЕстьСклад",НЕ Склад.Пустая());
Запрос.УстановитьПараметр("Склад",Склад);


// Выборка = Запрос.Выполнить().Выбрать();
Итог = Запрос.Выполнить().Выгрузить();

// Всего = Выборка.Количество();
Всего = Итог.Количество();
Сч = 0;

ОшибочныхДокументов = 0;

ТабКПроведению.Очистить();
МассивВПроведению = Новый Массив;
МассивРеализаций = Новый Массив;
СтарДата = Неопределено;
СтарСклад = Неопределено;
СтарОрганизация = Неопределено;

ТипРТУ = Тип("ДокументСсылка.РеализацияТоваровУслуг");

// Пока Выборка.Следующий() Цикл
Для каждого Выборка из Итог Цикл

Никакой группировки никаких итогов...

Uho 02.07.2013 12:18

если закрыть глаза на сам ужасный запрос, то в принципе должно работать

ЗЫ. реквизита Выборка случаем нигде нет, или может быть, если смотришь через отладчик, в табло что-нибудь гадкое написано...

med 02.07.2013 12:32

Запрос не мой :-), но общий смысл понятен
было так, как закомментировано.
реквизита Выборка нет
в отладчике отображается обычная таблица


Текущее время: 01:47. Часовой пояс GMT +3.