|
проверка выборки на содержимое | ☑ | ||
---|---|---|---|---|
0
LivingStar
22.10.12
✎
11:09
|
если выборка произведена следующим образом
Выборка = Запрос.Выполнить().Выбрать(); как можно проверить Выборка на содержимое, что бы не обрабатывать пустую выборку в моем примере Выборка.Следующий() не выполнилась, но ЗначениеЗаполнено(Выборка) выдает значение Истина |
|||
1
Cube
22.10.12
✎
11:10
|
(0) Туповатые вопросы...
СП украли? |
|||
2
lxndr
22.10.12
✎
11:11
|
РезультатЗапроса.Пустой()
|
|||
3
Cube
22.10.12
✎
11:11
|
Из СП:
ВыборкаИзРезультатаЗапроса.Количество (QueryResultSelection.Count) ВыборкаИзРезультатаЗапроса (QueryResultSelection) Количество (Count) Синтаксис: Количество() Возвращаемое значение: Тип: Число. Описание: Получает количество записей в выборке из результата запроса. Доступность: Сервер, толстый клиент, внешнее соединение. |
|||
4
rutony
22.10.12
✎
11:12
|
(0)
РезультатЗапроса = Запрос.Выполнить(); Если РезультатЗапроса.Пустой() Тогда Сообщить("Дак нет же нифига!"); Возврат; КонецЕсли; |
|||
5
LivingStar
22.10.12
✎
11:12
|
(4) это Результат, а Выборку как в (0) не проверить?
|
|||
6
Cube
22.10.12
✎
11:13
|
(5) Ещё и слепой?))) Смотри (3) до просветления.
|
|||
7
LivingStar
22.10.12
✎
11:14
|
(3) спасибо!!! Выборка.Количество() сработало
|
|||
8
Fragster
гуру
22.10.12
✎
11:14
|
(5) а зачем делать выборку, если результат пустой?
Да и пока выборка.Следующий() Цикл работает... если 1 строка то цикл заменяется на если и продолжаем танцы... |
|||
9
Shurjk
22.10.12
✎
11:14
|
(5) Правильней сначала результат проверить а потом выборку делать.
|
|||
10
LivingStar
22.10.12
✎
11:14
|
(7+) думал неработает как и Пустой()
спасибо! |
|||
11
rutony
22.10.12
✎
11:14
|
(5) А зачем тебе вообще выборку делать если там ничего нет...
Ну а если хочется всеравно ------> (3) <------- |
|||
12
LivingStar
22.10.12
✎
11:15
|
(9) а чем правильнее? что можно проверить?
|
|||
13
rutony
22.10.12
✎
11:15
|
(12) Правильнее проверить на Пустой()
|
|||
14
LivingStar
22.10.12
✎
11:15
|
не люблю лишние строки кода, в одну все умещать решил, и проверять Выборку(), выходит это совсем не оптимально?!
|
|||
15
LivingStar
22.10.12
✎
11:16
|
(13) на пустой() тогда нужно результат проверять, что в (0) для этого не подойдет
|
|||
16
ssh2006
22.10.12
✎
11:17
|
(0) > что бы не обрабатывать пустую выборку
Что там обрабатывать? |
|||
17
Wern
22.10.12
✎
11:18
|
Смысла нет проверять результат если можно проверить выборку. на скорость выполнения это не повлияет, если выборка пустая то время выполнения незначительно, а если не пустая, то выборку все равно получать.
|
|||
18
LivingStar
22.10.12
✎
11:20
|
(17) тогда можно использовать
Если Выборка.Количество() <> 0 Тогда для проверки |
|||
19
sidalexsandr
22.10.12
✎
11:20
|
(0) Смотри (3),(4) правильно говорит.
|
|||
20
Wern
22.10.12
✎
11:20
|
Я вообще обычно через следующий проверяю, чтоб строчки не плодить. "Если Выборка.Следующий() Тогда ..." С количеством тоже лишняя строчка получается. смысла мало.
|
|||
21
LivingStar
22.10.12
✎
11:21
|
(20) со следующий это в цикле, а если так вот
Если Не Выборка.Количество() <> 0 Тогда Пока Выборка.Следующий() Цикл Движение = Движения.ОстаткиНоменклатуры.Добавить(); Движение.ВидДвижения = ВидДвиженияНакопления.Расход; Движение.Период = Дата; Движение.Номенклатура = Выборка.Номенклатура; Движение.СрокГодности = Выборка.СрокГодности; Движение.Партия = Выборка.Партия; Движение.Количество = - Выборка.Количество; Движение.Сумма = - Выборка.Сумма; КонецЦикла; Движения.ОстаткиНоменклатуры.Записать(); // ФОРМИРОВАНИЕ НОВОГО СПИСАНИЯ ВычисленияНаСервере.СписаниеТоваров(ВТ, Движения, Ссылка, Отказ); КонецЕсли; |
|||
22
LivingStar
22.10.12
✎
11:21
|
Если Выборка.Количество() <> 0 Тогда
Пока Выборка.Следующий() Цикл Движение = Движения.ОстаткиНоменклатуры.Добавить(); Движение.ВидДвижения = ВидДвиженияНакопления.Расход; Движение.Период = Дата; Движение.Номенклатура = Выборка.Номенклатура; Движение.СрокГодности = Выборка.СрокГодности; Движение.Партия = Выборка.Партия; Движение.Количество = - Выборка.Количество; Движение.Сумма = - Выборка.Сумма; КонецЦикла; Движения.ОстаткиНоменклатуры.Записать(); // ФОРМИРОВАНИЕ НОВОГО СПИСАНИЯ ВычисленияНаСервере.СписаниеТоваров(ВТ, Движения, Ссылка, Отказ); КонецЕсли; |
|||
23
rutony
22.10.12
✎
11:26
|
(17) Вот оно подрастающее поколение, если работает и так чего париться, ну купим компьютер помощнее если что...
А если будет несколько вложенных выборок, например, 5 для вывода сложного отчета... Уже наверное не так быстро будет... (22) Как о стенку горох.. |
|||
24
Cube
22.10.12
✎
11:28
|
(23) А что, если результат пустой, то он будет отличаться в зависимости от количества вложенных выборок? Или я что-то не так понял?
|
|||
25
hhhh
22.10.12
✎
11:29
|
(23) сейчас новые времена. Пять выборок - это во времена динозавров было. Сейчас всегда только одна выборка.
|
|||
26
tdm
22.10.12
✎
11:30
|
(22)
Если Выборка.Количество() Тогда тоже по идее работать будет (неявное преобразование) ...хот я в свете "ну купим компьютер помощнее если что..." ваш вариант кошернее)) |
|||
27
Cube
22.10.12
✎
11:30
|
(23) Давно известно, что разименовывание полей в запросах не оптимально по производительности, но ничего, все хавают, все довольны... А ты не пользуешься разименовыванием?
|
|||
28
rutony
22.10.12
✎
11:33
|
(24)(25) Не все и всегда можно решить универсальными средствами, либо одним циклом/выборкой, бывало что приходилось делать выборки по группам, и по деталям групп, либо по подгрупам и тд...
|
|||
29
tdm
22.10.12
✎
11:34
|
(21)(22) интересно а как быстрее ?
Не Выборка.Количество() = 0 или Выборка.Количество() <> 0 прост знал одного колегу исключительно "Не Выборка.Количество() = 0" конструкцию использовал)) |
|||
30
hhhh
22.10.12
✎
11:36
|
(28) новое поколение использует СКД.
|
|||
31
Cube
22.10.12
✎
11:37
|
(29) А так: "Если Выборка.Количество() Тогда" =))
|
|||
32
rutony
22.10.12
✎
11:41
|
(30) Сделай мне отчет на СКД, с возможностью изменения данных прямо на табличном поле с пересчетом, и возможностью формирования документа на основе введенных данных. И давай, что б совсем просто небыло, давай еще добавим картинок =)
|
|||
33
Cube
22.10.12
✎
11:42
|
(32) Так это ж обработка, а не отчет... :)
|
|||
34
Fragster
гуру
22.10.12
✎
12:02
|
(25) кстати да, я тут недавно сделал ФИФО через итоги и обход.прямой, код понятнее, чем через ВыборкаУлюлю = ВыброкаТратата.Выбрать(), ВыборкаГыгыгы = ВыборкаУлюлю.Выбрать()...
Примерно так: Выборка = Построитель.Результат.Выбрать(ОбходРезультатаЗапроса.Прямой); Пока Выборка.Следующий() Цикл Если Выборка.ТипЗаписи() = ТипЗаписиЗапроса.ИтогПоГруппировке И Выборка.Группировка() = "Количество" Тогда ОстатокКоличества = Выборка.Количество; Если ОстатокКоличества > Выборка.КоличествоОстаток Тогда Отказ = Истина; КонецЕсли; КонецЕсли; Если Не Отказ И Выборка.ТипЗаписи() = ТипЗаписиЗапроса.ДетальнаяЗапись Тогда ......... КонецЕсли; КонецЦикла; |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |