0
- 26.06.2013 - 10:13
|
Пытаюсь найти разницу между двумя методами обработки результата запроса между Выборка = Запрос.Выполнить().Выбрать(); Пока Выборка.Следующий() Цикл КонецЦикла и Итог = Запрос.Выполнить().Выгрузить(); Для каждого Выборка из Итог Цикл КонецЦикла в чем принципиальная разница между этими двумя способами ? Для варианта, когда группировок нет. Собственно история вопроса - столкнулся с тем, что первый вариант, почему то не всегда выдает информацию Один и тот же запрос в отладчике .Количество() выдает цифру, скажем - 2 Но Выборка.Следующий() выдает ложь, а Для каждого Выборка из Итог Цикл отрабатывает нормально В чем прикол ? | | |
1
- 27.06.2013 - 11:24
|
Выбрать - это перебор результата запроса выгрузить - выгружается результат запроса в таблицу значений | | |
2
- 27.06.2013 - 11:27
|
+(1) можно выгрузить и в дерево значений если выгружаешь с иерархией | | |
3
- 27.06.2013 - 11:29
| +(2) вернее сказать с группировками | | |
4
- 28.06.2013 - 13:18
| Цитата:
Чем перебор так сказать в лоб через выбрать отличается от перебора после выгрузки в ТЗ ? Почему при выгрузке в ТЗ и перебор - строки есть а при обработке в лоб через Выбрать() - строк нет, т.е. цикл Пока Выборка.Следующий() Цикл КонецЦикла вообще не отрабатывается Выборка.Следующий() = Ложь сразу же. Почему ? | | |
5
- 28.06.2013 - 13:51
| Цитата:
не верю! | | |
6
- 28.06.2013 - 13:52
| смотря какая выборка, может там несколько выборок с итогами | | |
7
- 01.07.2013 - 07:27
| Цитата:
Скажем Выборка.Количество() выдает - 2 есть две строки у самого запроса нет ни группировок ни итогов единственное это полное объединение (объединить всё) двух запросов , конкретно - двух типов приходных документов из которых берутся одни и те же поля. Но вот такая катавасия... | | |
8
- 01.07.2013 - 07:28
| Т.е. похоже это глюк 1С, т.е. по правилам оба эти варианта должны обрабатываться одинаково ? | | |
9
- 02.07.2013 - 09:34
| фигня, ошибка в коде, ну или версия платформы какая-нибудь экзотическая | | |
10
- 02.07.2013 - 11:51
| Код я весь привел платформа - может быть ... | | |
11
- 02.07.2013 - 11:59
| это далеко не весь код | | |
12
- 02.07.2013 - 12:07
| Пожалуйста: Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | Данные.Ссылка, | Данные.Дата, | Данные.Склад, | Данные.Организация |ИЗ | (ВЫБРАТЬ | РеализацияТоваровУслуг.Ссылка КАК Ссылка, | НАЧАЛОПЕРИОДА(РеализацияТоваровУслуг.Дата, ДЕНЬ) КАК Дата, | РеализацияТоваровУслуг.Склад КАК Склад, | РеализацияТоваровУслуг.Организация КАК Организация | ИЗ | Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг | ГДЕ | РеализацияТоваровУслуг.Проведен | И РеализацияТоваровУслуг.Дата >= &ДатаНачала | И РеализацияТоваровУслуг.Дата <= &ДатаОкончания | И РеализацияТоваровУслуг.Организация В(&Организации) | И ВЫБОР | КОГДА &ЕстьОтбор | ТОГДА РеализацияТоваровУслуг.Контрагент <> &Контрагент | ИНАЧЕ ИСТИНА | КОНЕЦ | И ВЫБОР | КОГДА &ЕстьОтбор2 | ТОГДА РеализацияТоваровУслуг.Контрагент <> &Контрагент2 | ИНАЧЕ ИСТИНА | КОНЕЦ | И ВЫБОР | КОГДА &ЕстьСклад | ТОГДА РеализацияТоваровУслуг.Склад = &Склад | ИНАЧЕ ИСТИНА | КОНЕЦ | | ОБЪЕДИНИТЬ ВСЕ | | ВЫБРАТЬ | ТребованиеНакладная.Ссылка, | НАЧАЛОПЕРИОДА(ТребованиеНакладная.Дата, ДЕНЬ), | ТребованиеНакладная.Склад, | ТребованиеНакладная.Организация | ИЗ | Документ.ТребованиеНакладная КАК ТребованиеНакладная | ГДЕ | ТребованиеНакладная.Проведен | И ТребованиеНакладная.Дата >= &ДатаНачала | И ТребованиеНакладная.Дата <= &ДатаОкончания | И ТребованиеНакладная.Организация В(&Организации) | И ВЫБОР | КОГДА &ЕстьСклад | ТОГДА ТребованиеНакладная.Склад = &Склад | ИНАЧЕ ИСТИНА | КОНЕЦ) КАК Данные | |УПОРЯДОЧИТЬ ПО | Данные.Дата, | Данные.Организация, | Данные.Склад |АВТОУПОРЯДОЧИВАНИЕ"; Запрос.УстановитьПараметр("ЕстьОтбор",НЕ ПокупательИсключение.Пустая()); Запрос.УстановитьПараметр("ЕстьОтбор2",НЕ ПокупательИсключение2.Пустая()); Запрос.УстановитьПараметр("Контрагент",ПокупательИ сключение); Запрос.УстановитьПараметр("Контрагент2",Покупатель Исключение2); Запрос.УстановитьПараметр("ДатаНачала",НачалоДня(Д атаНачала)); Запрос.УстановитьПараметр("ДатаОкончания",КонецДня (ДатаОкончания)); Запрос.УстановитьПараметр("Организации",Организаци и.ВыгрузитьКолонку("Организация")); Запрос.УстановитьПараметр("ЕстьСклад",НЕ Склад.Пустая()); Запрос.УстановитьПараметр("Склад",Склад); // Выборка = Запрос.Выполнить().Выбрать(); Итог = Запрос.Выполнить().Выгрузить(); // Всего = Выборка.Количество(); Всего = Итог.Количество(); Сч = 0; ОшибочныхДокументов = 0; ТабКПроведению.Очистить(); МассивВПроведению = Новый Массив; МассивРеализаций = Новый Массив; СтарДата = Неопределено; СтарСклад = Неопределено; СтарОрганизация = Неопределено; ТипРТУ = Тип("ДокументСсылка.РеализацияТоваровУслуг"); // Пока Выборка.Следующий() Цикл Для каждого Выборка из Итог Цикл Никакой группировки никаких итогов... | | |
13
- 02.07.2013 - 12:18
|
если закрыть глаза на сам ужасный запрос, то в принципе должно работать ЗЫ. реквизита Выборка случаем нигде нет, или может быть, если смотришь через отладчик, в табло что-нибудь гадкое написано... | | |
14
- 02.07.2013 - 12:32
|
Запрос не мой :-), но общий смысл понятен было так, как закомментировано. реквизита Выборка нет в отладчике отображается обычная таблица | |
| Интернет-форум Краснодарского края и Краснодара |