|
Запрос не возвращает результат | ☑ | ||
---|---|---|---|---|
0
socradt
23.03.13
✎
19:03
|
Хочу получить ссылку на первый документ, почему-то не работает.
Заемщик = Объект.ДокументСсылка.Заемщик; Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ |мко_РеестрКредитныхСоглашенийСрезПоследних.КредитноеСоглашение |ИЗ | РегистрСведений.мко_РеестрКредитныхСоглашений.СрезПоследних КАК мко_РеестрКредитныхСоглашенийСрезПоследних |ГДЕ | мко_РеестрКредитныхСоглашенийСрезПоследних.КредитноеСоглашение.Заемщик = &Заемщик"; Запрос.УстановитьПараметр("Заемщик", Заемщик); Возврат Запрос.Выполнить().Выгрузить()[0].КредитноеСоглашение; Помогите разобраться, пжлст, что я делаю не так? |
|||
1
rphosts
23.03.13
✎
19:08
|
ну так выбирай прям в запросе первую запись... а не выбираем много, выгружаем в таблицу их все, берём из них только первую...
и ещё, скорее всего запрос не отбирает ни 1 записи |
|||
2
socradt
23.03.13
✎
19:09
|
(1) В консоли запросов - отбирает, там и получается одна запись.
|
|||
3
pumbaEO
23.03.13
✎
19:09
|
Результат = Документ.Бла.ПустаяСсылка()
РезультатЗапроса = Запрос.Выполнить(); Если НЕ Результат.Пустой() Тогда Выборка = Результат.Выбрать(); Если Выборка.Следующий() Тогда Результат = Выборка.КредитноеСоглашение; КонецЕсли КонецЕсли; Возврат Результат; |
|||
4
Pashkaa
23.03.13
✎
19:09
|
Сообщить(?(Запрос.Выполнить().Пустой(), "Запрос пустой", "Запрос не пустой"))
|
|||
5
Pashkaa
23.03.13
✎
19:10
|
Проверь что в Заемщике передаешь ссылку
|
|||
6
rphosts
23.03.13
✎
19:11
|
(2) чудес не бывает: знаит или текст азщпроса или параметры отличаются или база над которой запросы выполнял
|
|||
7
socradt
23.03.13
✎
19:21
|
Нда, приведённые примеры попробовал, результат почему-то не выходит. Странно, проверю ещё раз, може действительно, чудес не бывает :)
|
|||
8
rs_trade
23.03.13
✎
19:24
|
(7) и код перепиши. а то не кошерный он. вот так не надо - Запрос.Выполнить().Выгрузить()[0].КредитноеСоглашение;
|
|||
9
socradt
23.03.13
✎
19:24
|
(4) Сообщение должно выйти при любом раскладе? Независимо от тонкоты-толстоты клиента и неважно где(на клиенте или на сервере оно прописано?)
|
|||
10
socradt
23.03.13
✎
19:27
|
(8) А как порекоммендуете? Как в (3) ? Или как-то выбрать первый док в запросе? Не знаю, как это... Башка пухнет)
|
|||
11
rs_trade
23.03.13
✎
19:30
|
(10)
можно как то так: Результат = Справочники.КредитныеСоглашения.ПустаяСсылка(); ... Выборка = Запрос.Выполнить.Выбрать(); Если Выборка.Следующий() Тогда Результат = Выборка.Ссылка(); КонецЕсли; Возврат Результат; |
|||
12
rs_trade
23.03.13
✎
19:31
|
Выгрузить()[0] валиться же будет на пустом результате
|
|||
13
socradt
23.03.13
✎
19:32
|
(11) (12) усёк, спасибо
|
|||
14
socradt
23.03.13
✎
20:03
|
Всё собрал в кучу, работает :)
Попытка Результат = Документы.мко_КредитноеСоглашение.ПустаяСсылка(); Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | мко_РеестрКредитныхСоглашенийСрезПоследних.КредитноеСоглашение |ИЗ | РегистрСведений.мко_РеестрКредитныхСоглашений.СрезПоследних КАК мко_РеестрКредитныхСоглашенийСрезПоследних |ГДЕ | мко_РеестрКредитныхСоглашенийСрезПоследних.КредитноеСоглашение.Заемщик = &Клиент"; Запрос.УстановитьПараметр("Клиент", Источник); Сообщить(?(Запрос.Выполнить().Пустой(),"ЗапросПустой","ЗапросНеПустой")); Выборка = Запрос.Выполнить().Выбрать(); Если Выборка.Следующий() Тогда Результат = Выборка.Получить(0); Иначе Сообщить("ВыборкиНиХренаНет!"); КонецЕсли; Возврат Результат; Исключение Сообщить(ОписаниеОшибки()); КонецПопытки; |
|||
15
pumbaEO
23.03.13
✎
20:24
|
(14) ужас.
|
|||
16
EugeniaK
23.03.13
✎
20:42
|
(14)
М-да... Зачем 2 раза запрос выполнять? И "попытка" явно лишняя |
|||
17
socradt
23.03.13
✎
22:36
|
(15) (16)
Ага, ужас. Но это уже от безысходности, разумеется так не пойдёт... |
|||
18
rs_trade
23.03.13
✎
22:40
|
Результат = Документы.мко_КредитноеСоглашение.ПустаяСсылка();
Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | мко_РеестрКредитныхСоглашенийСрезПоследних.КредитноеСоглашение |ИЗ | РегистрСведений.мко_РеестрКредитныхСоглашений.СрезПоследних КАК мко_РеестрКредитныхСоглашенийСрезПоследних |ГДЕ | мко_РеестрКредитныхСоглашенийСрезПоследних.КредитноеСоглашение.Заемщик = &Клиент"; Запрос.УстановитьПараметр("Клиент", Источник); Выборка = Запрос.Выполнить().Выбрать(); Если Выборка.Следующий() Тогда Результат = Выборка.Получить(0); Иначе Сообщить("ВыборкиНиХренаНет!"); КонецЕсли; Возврат Результат; |
|||
19
rs_trade
23.03.13
✎
22:42
|
(18) Иначе Сообщить("ВыборкиНиХренаНет!");
это тоже выкинуть. НиХренаНет надо говорить там где функцию вызываешь, а она тебе пустую ссылку возвращает. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |