Имя: Пароль:
1C
1С v8
Как проще выбрать из Запроса
0 igoza
 
10.07.13
13:07
Запрос = Новый Запрос;
           Запрос.Текст = "ВЫБРАТЬ ПЕРВЫЕ 1
           |    Остатки.ШтрихКод КАК ШтрихКод,
           |    Остатки.МестоХранения КАК МестоХранения,
           |    Остатки.Комплектующая КАК Комплектующая
           |ИЗ
           |    РегистрНакопления.ОстаткиКомлектующих.Остатки КАК Остатки
           |ГДЕ
           |    Остатки.Комплектующая = &Ком
           |";            
           
           Запрос.УстановитьПараметр("Ком", ТекСтрока.Откуда);
Выборка = Запрос.Выполнить().Выгрузить();


Из запроса выходит 1 строка но как сделать проще, не через цикл:

   Для Каждого Строка ИЗ Выборка Цикл
           лялялял.....
       Прервать;
   КонецЦикла;
1 vicof
 
10.07.13
13:08
Пока Выборка.Следующий() Цикл...
2 vicof
 
10.07.13
13:08
Ну ил ипросто Выборка.Следующий()
3 Рэйв
 
10.07.13
13:09
Сообщить(Выборка[0].ШтрихКод)
4 Рэйв
 
10.07.13
13:09
(2) У него выборка ТЗ :-)
5 Classic
 
10.07.13
13:13
(3)
Вылетит на пустом результате
6 Ненавижу 1С
 
гуру
10.07.13
13:13
(0) убери прервать и не мучайся - оставь
7 Рэйв
 
10.07.13
13:15
(5)Ну поди хватит ума проверить на .количество()
8 Fragster
 
гуру
10.07.13
13:15
нафига выгрузить? выбрать(), .следующий()
9 Fragster
 
гуру
10.07.13
13:16
Если Выборка.Следующий() Тогда
 Возврат Выборка.ШтрихКод
Иначе
 Возврат "";
Конец
10 Пеппи
 
10.07.13
13:17
Выборка = Запрос.Выполнить().Выбрать();
Выборка.Следующий()
Выборка.ШтрихКод
11 Godofsin
 
10.07.13
13:17
да даже если и в ТЗ, зачем там прервать; и чем плох цикл?
12 Пеппи
 
10.07.13
13:17
3 строчки всего))
13 Irbis
 
10.07.13
13:18
СП пропит ещё некупленным?
14 Fragster
 
гуру
10.07.13
13:18
Возврат ?(Выборка.Следующий(), Выборка.Штрихкод, "");
15 vicof
 
10.07.13
13:18
(4) не  разделяю слепую любовь к тз)
16 Godofsin
 
10.07.13
13:19
(12) а если выборка пустая? )))
17 Godofsin
 
10.07.13
13:20
(14) хороший вариант )))
18 Пеппи
 
10.07.13
13:21
(16) ))) ?(Выборка.количество()=0,"",Выборка.ШтрихКод)
19 Godofsin
 
10.07.13
13:23
(18) не взлетит )))
20 Godofsin
 
10.07.13
13:23
(18) см. (14)
21 Fragster
 
гуру
10.07.13
13:24
Запрос = Новый Запрос();
Запрос.Текст = "Выбрать 1 КАК Поле";

Итераций = 100000;
РезультатЗапроса = Запрос.Выполнить();

Д = ТекущаяДата();
Для Сч = 1 по Итераций Цикл
   ТЗ = РезультатЗапроса.Выгрузить();
   Результат = "";
   Для каждого Стр Из ТЗ Цикл
       Результат = Стр.Поле;
   КонецЦикла;
КонецЦикла;
Сообщить(ТекущаяДата() - Д);

Д = ТекущаяДата();
Для Сч = 1 по Итераций Цикл
   Выборка = РезультатЗапроса.Выбрать();
   Результат = ?(Выборка.Следующий(),Выборка.Поле,"");
КонецЦикла;
Сообщить(ТекущаяДата() - Д);


Выводит у меня 7 и 3
22 Fragster
 
гуру
10.07.13
13:27
Д = ТекущаяДата();
Для Сч = 1 по Итераций Цикл
   ТЗ = РезультатЗапроса.Выгрузить();
   Результат = ?(ТЗ.Количество()<>0,ТЗ[0].Поле,"");
КонецЦикла;
Сообщить(ТекущаяДата() - Д);

тоже 6-7 секунд
23 1Сергей
 
10.07.13
13:29
пелять... такая тема должна была закончится ещё на первом-втором посте. Нет, блин, раздули
24 Fragster
 
гуру
10.07.13
13:29
для пустой выборки -
перебор - 5,
по индексу с проверкой количества - 4,
выборка - 2
25 igoza
 
10.07.13
14:50
(10) спасибо
Компьютеры — прекрасное средство для решения проблем, которых до их появления не было.