Имя: Пароль:
1C
1С v8
проверка результата запроса
0 LivingStar
 
29.11.12
13:31
верно ли вот так проверять запрос на пустую выборку, что бы не обрабатывать её?
   Рез = Запрос.Выполнить().Выбрать();
   Если Не Рез.Пустой() Тогда

P.S. старую тему по этому поводу не нащел
1 Wobland
 
29.11.12
13:32
Пока Выборка.Следующий()
2 DrShad
 
29.11.12
13:33
не правильно!
3 Buster007
 
29.11.12
13:33
Рез = Запрос.Выполнить();
Если Рез.Пустой() Тогда
нафиг-нафиг
КонецЕсли;
4 Buster007
 
29.11.12
13:33
+(3) но я бы делал просто выборку, без всяких проверок
5 DrShad
 
29.11.12
13:33
(1) тогда уж
Если Выборка.Следующий()
6 Oleg_Kag
 
29.11.12
13:33
Рез = Запрос.Выполнить();
Если Не Рез.Пустой() Тогда
Выборка=Рез.Выбрать()
7 МишКа
 
29.11.12
13:33
(0) Извини, что вопросом на вопрос. А какие "подводные камни" ты тут себе представляешь?
8 zladenuw
 
29.11.12
13:34
Рез = Запрос.Выполнить().Выбрать();
Если Рез.Количество() > 0 Тогда
9 Wobland
 
29.11.12
13:34
(5) если Если, тогда Пустой(), но ему ж обрабатывать хочется
10 LivingStar
 
29.11.12
13:37
(7) я и спрашиваю, потому что не представляю
11 LivingStar
 
29.11.12
13:38
(8) да можно так!!!
12 LivingStar
 
29.11.12
13:39
(8) так нормально! можно же брать за эталон этот пример?
13 Wobland
 
29.11.12
13:39
(12) отлей его в граните
14 LivingStar
 
29.11.12
13:39
(8) или так

Рез = Запрос.Выполнить().Выбрать();
Если Рез.Количество() > 0 Тогда
15 LivingStar
 
29.11.12
13:40
так тоесть

Рез = Запрос.Выполнить().Выбрать();
Если Рез.Количество() <> 0 Тогда
16 МишКа
 
29.11.12
13:41
(10) Я хочу получить сумму переменных А и Б.
Могу ли я написать А+Б?
17 Reset
 
29.11.12
13:42
(15) Однофигственно, т.к. <0 не может быть.
Методически верно не выбиать вообще, если результат пустой
см (6)
18 Reset
 
29.11.12
13:43
+(17) и (3)
19 LivingStar
 
29.11.12
13:46
(17) да! вот она истина !!!
20 hhhh
 
29.11.12
13:47
(19) зато код длиннее.
21 LivingStar
 
29.11.12
13:50
Запрос.УстановитьПараметр("Пользователь1с", ПараметрыСеанса.ТекущийПользователь);
   Рез = Запрос.Выполнить();
   Если Не Рез.Пустой() Тогда
       Выборка = Рез.Выбрать();
       Возврат Выборка;
   КонецЕсли;
   Возврат 0;
КонецФункции


{Документ.ЭлектронноеПисьмо.Форма.ФормаСписка.Форма(35)}: Ошибка при вызове метода контекста (ПолучитьУчетнуюЗапись)
   УчЗап = ПолучитьУчетнуюЗапись();
по причине:
Ошибка передачи данных между клиентом и сервером. Значение недопустимого типа.


как обойти ошибку?
22 Bolik1979
 
29.11.12
13:50
С диска ИТС:

Проверку того, что результат выполнения запроса не содержит строк следует выполнять с помощью метода Пустой. Поскольку на получение выборки из результата запроса (выгрузка его в таблицу значений) будет затрачиваться дополнительное время.
23 hhhh
 
29.11.12
13:52
(22) ага, выборка из пустого результата. Займет офигенное время. Не меньше восьми наносекунд.
24 Wobland
 
29.11.12
13:53
(21) зачем твоему клиенту это?
25 Bolik1979
 
29.11.12
13:53
(23) А если выборка не пустая? Да и кода с Результат.Пустой() меньше
26 LivingStar
 
29.11.12
13:54
то есть как в (15) работало как в (21) ввалится на ошибке...
(25) я там делаю прочую обработку
27 Reset
 
29.11.12
13:57
(26) Ошибка в (21) никак не связана с методом проверки
28 mikecool
 
29.11.12
13:59
(23) т.е. тебе нас-рать, как надо правильно, потому что твое решение всего на 8 наносекунд медленнее?
29 LivingStar
 
29.11.12
14:10
(24) просто делаю выборку запроса, и решил заморочиться на все возможные варианты, вижу что очень зря !!!!
30 LivingStar
 
29.11.12
14:11
(27) ясно это клиент серверная особенность....
31 LivingStar
 
29.11.12
14:36
прогнал про передачу значений между клиентом и сервером, это совсем не то что нежно делать.... все должно выполняться на сервере!!!

а за ответы по теме спасибо!!! в 6 тогда верно, так как оптимально!!!
32 Wobland
 
29.11.12
14:39
(31) нежный секас клиента с сервером у тебя там?
33 LivingStar
 
29.11.12
14:47
(32) ...что нужно делать... опечатка там
Ошибка? Это не ошибка, это системная функция.