![]() |
В чем отличие Выбрать() и Выгрузить() Пытаюсь найти разницу между двумя методами обработки результата запроса между Выборка = Запрос.Выполнить().Выбрать(); Пока Выборка.Следующий() Цикл КонецЦикла и Итог = Запрос.Выполнить().Выгрузить(); Для каждого Выборка из Итог Цикл КонецЦикла в чем принципиальная разница между этими двумя способами ? Для варианта, когда группировок нет. Собственно история вопроса - столкнулся с тем, что первый вариант, почему то не всегда выдает информацию Один и тот же запрос в отладчике .Количество() выдает цифру, скажем - 2 Но Выборка.Следующий() выдает ложь, а Для каждого Выборка из Итог Цикл отрабатывает нормально В чем прикол ? |
Выбрать - это перебор результата запроса выгрузить - выгружается результат запроса в таблицу значений |
+(1) можно выгрузить и в дерево значений если выгружаешь с иерархией |
+(2) вернее сказать с группировками |
[quote=vodoley_ol;31050034]Выбрать - это перебор результата запроса выгрузить - выгружается результат запроса в таблицу значений [/quote] Сами действия то , - как раз понятны, меня интересуют их отличия Чем перебор так сказать в лоб через выбрать отличается от перебора после выгрузки в ТЗ ? Почему при выгрузке в ТЗ и перебор - строки есть а при обработке в лоб через Выбрать() - строк нет, т.е. цикл Пока Выборка.Следующий() Цикл КонецЦикла вообще не отрабатывается Выборка.Следующий() = Ложь сразу же. Почему ? |
[quote=med;31068391]Почему при выгрузке в ТЗ и перебор - строки есть а при обработке в лоб через Выбрать() - строк нет, т.е. цикл Пока Выборка.Следующий() Цикл КонецЦикла вообще не отрабатывается[/quote] ты хочешь сказать, что при выгрузке в ТЗ есть детальные записи? а при переборе выборки их нет? не верю! |
смотря какая выборка, может там несколько выборок с итогами |
[quote=Uho;31069002]ты хочешь сказать, что при выгрузке в ТЗ есть детальные записи? а при переборе выборки их нет? не верю! [/quote] Сам в шоке :-) Скажем Выборка.Количество() выдает - 2 есть две строки у самого запроса нет ни группировок ни итогов единственное это полное объединение (объединить всё) двух запросов , конкретно - двух типов приходных документов из которых берутся одни и те же поля. Но вот такая катавасия... |
Т.е. похоже это глюк 1С, т.е. по правилам оба эти варианта должны обрабатываться одинаково ? |
[quote=med;31094836]Выборка.Количество() выдает - 2 есть две строки[/quote][quote=med;31032158]Но Выборка.Следующий() выдает ложь[/quote] фигня, ошибка в коде, ну или версия платформы какая-нибудь экзотическая |
[quote=Uho;31113935]фигня, ошибка в коде, ну или версия платформы какая-нибудь экзотическая [/quote] Код я весь привел платформа - может быть ... |
это далеко не весь код |
[quote=Uho;31117694]это далеко не весь код [/quote] Пожалуйста: Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | Данные.Ссылка, | Данные.Дата, | Данные.Склад, | Данные.Организация |ИЗ | (ВЫБРАТЬ | РеализацияТоваровУслуг.Ссылка КАК Ссылка, | НАЧАЛОПЕРИОДА(РеализацияТоваровУслуг.Дата, ДЕНЬ) КАК Дата, | РеализацияТоваровУслуг.Склад КАК Склад, | РеализацияТоваровУслуг.Организация КАК Организация | ИЗ | Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг | ГДЕ | РеализацияТоваровУслуг.Проведен | И РеализацияТоваровУслуг.Дата >= &ДатаНачала | И РеализацияТоваровУслуг.Дата <= &ДатаОкончания | И РеализацияТоваровУслуг.Организация В(&Организации) | И ВЫБОР | КОГДА &ЕстьОтбор | ТОГДА РеализацияТоваровУслуг.Контрагент <> &Контрагент | ИНАЧЕ ИСТИНА | КОНЕЦ | И ВЫБОР | КОГДА &ЕстьОтбор2 | ТОГДА РеализацияТоваровУслуг.Контрагент <> &Контрагент2 | ИНАЧЕ ИСТИНА | КОНЕЦ | И ВЫБОР | КОГДА &ЕстьСклад | ТОГДА РеализацияТоваровУслуг.Склад = &Склад | ИНАЧЕ ИСТИНА | КОНЕЦ | | ОБЪЕДИНИТЬ ВСЕ | | ВЫБРАТЬ | ТребованиеНакладная.Ссылка, | НАЧАЛОПЕРИОДА(ТребованиеНакладная.Дата, ДЕНЬ), | ТребованиеНакладная.Склад, | ТребованиеНакладная.Организация | ИЗ | Документ.ТребованиеНакладная КАК ТребованиеНакладная | ГДЕ | ТребованиеНакладная.Проведен | И ТребованиеНакладная.Дата >= &ДатаНачала | И ТребованиеНакладная.Дата <= &ДатаОкончания | И ТребованиеНакладная.Организация В(&Организации) | И ВЫБОР | КОГДА &ЕстьСклад | ТОГДА ТребованиеНакладная.Склад = &Склад | ИНАЧЕ ИСТИНА | КОНЕЦ) КАК Данные | |УПОРЯДОЧИТЬ ПО | Данные.Дата, | Данные.Организация, | Данные.Склад |АВТОУПОРЯДОЧИВАНИЕ"; Запрос.УстановитьПараметр("ЕстьОтбор",НЕ ПокупательИсключение.Пустая()); Запрос.УстановитьПараметр("ЕстьОтбор2",НЕ ПокупательИсключение2.Пустая()); Запрос.УстановитьПараметр("Контрагент",ПокупательИсключение); Запрос.УстановитьПараметр("Контрагент2",ПокупательИсключение2); Запрос.УстановитьПараметр("ДатаНачала",НачалоДня(ДатаНачала)); Запрос.УстановитьПараметр("ДатаОкончания",КонецДня(ДатаОкончания)); Запрос.УстановитьПараметр("Организации",Организации.ВыгрузитьКолонку("Организация")); Запрос.УстановитьПараметр("ЕстьСклад",НЕ Склад.Пустая()); Запрос.УстановитьПараметр("Склад",Склад); // Выборка = Запрос.Выполнить().Выбрать(); Итог = Запрос.Выполнить().Выгрузить(); // Всего = Выборка.Количество(); Всего = Итог.Количество(); Сч = 0; ОшибочныхДокументов = 0; ТабКПроведению.Очистить(); МассивВПроведению = Новый Массив; МассивРеализаций = Новый Массив; СтарДата = Неопределено; СтарСклад = Неопределено; СтарОрганизация = Неопределено; ТипРТУ = Тип("ДокументСсылка.РеализацияТоваровУслуг"); // Пока Выборка.Следующий() Цикл Для каждого Выборка из Итог Цикл Никакой группировки никаких итогов... |
если закрыть глаза на сам ужасный запрос, то в принципе должно работать ЗЫ. реквизита Выборка случаем нигде нет, или может быть, если смотришь через отладчик, в табло что-нибудь гадкое написано... |
Запрос не мой :-), но общий смысл понятен было так, как закомментировано. реквизита Выборка нет в отладчике отображается обычная таблица |
Текущее время: 01:47. Часовой пояс GMT +3. |