![]() |
![]() |
![]() |
|
Как получить результат запроса, если он единственный? Ø |
☑ | ||
---|---|---|---|---|
0
Elflight
21.10.05
✎
14:00
|
1С 8.0. Есть запрос:
|ВЫБОР | Когда(СУММА(ПродажиОбороты.СуммаОборот)>1000 | И СУММА(ПродажиОбороты.СуммаОборот)<=3000) Тогда 2 | Когда(СУММА(ПродажиОбороты.СуммаОборот)>3000 | И СУММА(ПродажиОбороты.СуммаОборот)<=5000) Тогда 5 | Когда(СУММА(ПродажиОбороты.СуммаОборот)>5000 | И СУММА(ПродажиОбороты.СуммаОборот)<=10000) Тогда 10 | Когда(СУММА(ПродажиОбороты.СуммаОборот)>10000) Тогда 15 | Иначе 0 |КОНЕЦ КАК Процент |ИЗ РегистрНакопления.Продажи.Обороты(&НачПериода, &КонПериода, Период, Контрагент = &Контрагент) КАК ПродажиОбороты"; Как теперь мне изъять этот Процент из запроса и присвоить его переменной? Каким методом? Выполнить().Выбрать() не даёт результата. |
|||
1
КонецЦикла
21.10.05
✎
14:01
|
Выгрузить?
|
|||
2
Elflight
21.10.05
✎
14:07
|
Пишу:
ИтоговаяСкидка = Запрос.Выполнить().Выгрузить(); СтрокаТЧ.Скидка = ИтоговаяСкидка; Отвечает: Значение не является значением объектного типа (Скидка) Реквизит "Скидка" у меня численного типа. Кстати, какого типа значение возвращает запрос? Тоже ведь число? |
|||
3
КонецЦикла
21.10.05
✎
14:15
|
Ну оно же не выгружает в переменную
Возвращаемое значение: Тип: ТаблицаЗначений, ДеревоЗначений. Если тип обхода задан Прямой, результат выгружается в таблицу значений, в противном случае в дерево значений |
|||
4
Apollo
21.10.05
✎
14:15
|
а де групировка?
|
|||
5
Elflight
21.10.05
✎
14:19
|
Я понял, что выгрузка происходит в таблицу значений. Даже пробовал получить нулевой элемент из этой таблицы - не катит :(. Запрос-то выдаёт всего одну цифирку! Мне таблицы значений не нужны, и группировать, ИМХО, нечего. Нужно просто получить эту цифирку :)
|
|||
6
Apollo
21.10.05
✎
14:21
|
ще раз намекаю!
Де у запросі команда "Групировка"? |
|||
7
homutke
21.10.05
✎
14:23
|
to(0)
Таблица = Запрос.Выполнить().Выгрузить() Если Таблица.Количество() > 0 тогда Сообщить(Результат[0].Процент); КонецЕсли; |
|||
8
Elflight
21.10.05
✎
14:28
|
(7) Спасибо! Работает. А более красивого способа нету?
|
|||
9
Filin
21.10.05
✎
14:36
|
(8) вообще-то странно, что (7) работает: выгружаем в ТЗ "Таблица", а сообщаем значение первой строки ТЗ "Результат". Но это и не важно - (7) дает пример как обратиться к результату запроса, а как мне показалось программа ругалась на объект Скидка (не обнаруживая такового). Так что может следует посмотреть и в сторону того, куда собираетесь писать результат запроса?
|
|||
10
Дяпти
21.10.05
✎
14:40
|
На фига все это: по моему без затей проще
Выборка = запрос.Выполнить().Выбрать(); Если Выборка.Следующий() тогда Сообщить(Выборка.Процент); КонецЕсли; |
|||
11
Elflight
21.10.05
✎
14:48
|
(9) Опечатка про "Результат" была сразу исправлена, потому и работает :). А насчёт объекта "Скидка" - вы правы. Но в документе существует реквизит табличной части "Скидка" с типом "Число" и длиной 3 знака. На основе этого реквизита в табличной части документа (ТЧ) существует одноимённая колонка.
Только всё-равно ругается :( Что не так? Я с восьмёркой недавно, так что иногда просто туплю. |
|||
12
Filin
21.10.05
✎
14:56
|
Ну судя по коду в (2) Вы просто не спозиционировались на нужной строке (что из себя представляет "СтрокаТЧ" пока абсолютно непонятно, т.е. ясно, что Вы подразумеваете под ней строку табличной части, но для системы это не так очевидно). Лучший вариант (неоднократно озвученный) - поставьте точку останова и в Отладчике посмотрите какие объекты Вам доступны, чем располагаете и т.д.
|
|||
13
Elflight
21.10.05
✎
15:04
|
(12) Для системы это тоже понятно, потому как строка
"СтрокаТЧ.Цена = ЦенаПродажи;" выполняется прерасно. Штука в том, что в свойствах поля "Скидка" отсутствует строка "Элемент управления", которая есть у свойств остальных колонок, и которая равна "поле ввода". А само поле ввода визуально присутствует. Колонку вставлял с помощью "Размещения данных", и думал, что всё должно быть в порядке. Как исправить? |
|||
14
Elflight
21.10.05
✎
15:10
|
Странно, вставил колонку "скидка" заново, свойство "элемент управления" появилось, а ошибка не уходит... :(
|
|||
15
Elflight
21.10.05
✎
15:12
|
Всё, понял свою глупость, спасибо!
|
|||
16
Filin
21.10.05
✎
15:17
|
Поле Цена является реквизитом табличной части документа, а Скидка - вычисляемым полем. Мне в подобной ситуации помогает в процедуре при выводе строки указать
ОформлениеСтроки.Ячейки.Скидка.ОтображатьТекст = Истина; ОформлениеСтроки.Ячейки.Скидка.Текст = Скидка; (можно использовать метод "УстановитьТекст()") |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |