Имя: Пароль:
1C
1С v8
Запрос, выполнить/выбрать как тут значение получить?
0 MrZLO
 
30.09.13
11:06
Хочу из последнего поступления выбрать цену для номенклатуры...

Запрос.Текст = "ВЫБРАТЬ ПЕРВЫЕ 1
|    ПоступлениеТоваровУслуг.Товары.(
|        Цена
|    )
|ИЗ
|    Документ.ПоступлениеТоваровУслуг КАК ПоступлениеТоваровУслуг
|ГДЕ
|    ПоступлениеТоваровУслуг.Дата <= &Дата
|    И ПоступлениеТоваровУслуг.Проведен = Истина
|    И ПоступлениеТоваровУслуг.Товары.Номенклатура.Ссылка = &Номенклатура
|
|УПОРЯДОЧИТЬ ПО
|    ПоступлениеТоваровУслуг.Дата УБЫВ";

Запрос.УстановитьПараметр("Номенклатура", Номенклатура);
Запрос.УстановитьПараметр("Дата", ДатаПараметр);

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

Если Результат.Пустой() <> Истина Тогда

    ПолученнаяЦена = Результат.Выбрать().Товары.Выбрать()[0];

КонецЕсли;

Вообще, результат запроса - таблица значений, в ней уже цена лежит...

Как тут присвоить результат запроса в ПолученнаяЦена

Чета запутался с этими выбрать уже...
1 Галахад
 
гуру
30.09.13
11:09
Заменить
Документ.ПоступлениеТоваровУслуг
на
Документ.ПоступлениеТоваровУслуг.Товары
2 Живой Ископаемый
 
30.09.13
11:10
Результат = Запрос.Выполнить().Выгрузить();

Если Результат.Пустой() <> Истина Тогда

    ПолученнаяЦена = Результат[0].Товары.Цена;

КонецЕсли;
3 Живой Ископаемый
 
30.09.13
11:12
не, фигню написал.
4 Heckfy
 
30.09.13
11:12
Результат = Запрос.Выполнить().Выбрать();
Цена=РезультатЗапроса.Следующий();
5 Heckfy
 
30.09.13
11:15
В смысле:

РезультатЗапроса= Запрос.Выполнить().Выбрать();
Цена=РезультатЗапроса.Следующий();
6 MrZLO
 
30.09.13
11:16
(4) ща не ругается, но вот Цена содержит "ДА"
7 Живой Ископаемый
 
30.09.13
11:16
2(5) и это будет строка табличной части, если я ничего не путаю
8 MrZLO
 
30.09.13
11:16
Результат = Запрос.Выполнить();

Если Результат.Пустой() <> Истина Тогда

    Выборка = Результат.Выбрать();
    ПолученнаяЦена = Выборка.Следующий();

КонецЕсли;

Возврат ПолученнаяЦена;
9 Живой Ископаемый
 
30.09.13
11:16
2(6) какой запрос такая и цена
10 Heckfy
 
30.09.13
11:18
(6) Блин, ну подравь:

РезультатЗапроса= Запрос.Выполнить().Выбрать();
РезультатЗапроса.Следующий();
Цена=РезультатЗАпроса.Цена;

Как то так. СП под рукой нету.
11 MrZLO
 
30.09.13
11:23
чета не то
{ОбщийМодуль.Ценообразование.Модуль(783)}: Значение не является значением объектного типа (Цена)
    ПолученнаяЦена = Выборка.Цена;






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

Если Результат.Пустой() <> Истина Тогда    
    
    Выборка = Результат.Выбрать().Следующий();
    ПолученнаяЦена = Выборка.Цена;

КонецЕсли;
12 Галахад
 
гуру
30.09.13
11:25
А так?

ПолученнаяЦена = Выборка[0].Цена;
13 MrZLO
 
30.09.13
11:29
(12) {ОбщийМодуль.Ценообразование.Модуль(783)}: Получение элемента по индексу для значения не определено
    ПолученнаяЦена = Выборка[0].Цена;

Да и по логике Выборка[0] зачем если я итак пишу ВЫБРАТЬ ПЕРВЫЕ 1
14 Живой Ископаемый
 
30.09.13
11:33
2(13) Ну и что? запрос к ТЧ, значит выборка все равно будет просто с одной (0-й) строкой
15 MrZLO
 
30.09.13
11:33
Не работает нифига... Да хотябы логику понять получения данных из этого запроса...
1) Его результат - это таблица Товаров с колонкой Цена
2) Т.е. чтобы получить эту таблицу, я должен её выгрузить и обратится по псевдониму к цене...

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

Если Результат.Пустой() <> Истина Тогда    
    
    Выборка = Результат.Выгрузить();
    ПолученнаяЦена = Выборка.Товары.Цена;

КонецЕсли;

Не работает!
16 MrZLO
 
30.09.13
11:35
(15) вот по индексу обращаюсь тоже ругается {ОбщийМодуль.Ценообразование.Модуль(783)}: Поле объекта не обнаружено (Товары)
    ПолученнаяЦена = Выборка.Товары[0];
17 Галахад
 
гуру
30.09.13
11:35
(13) А "Выборка" это что? Какой тип?
18 Heckfy
 
30.09.13
11:35
(15) и не должен работать
Замени Результат = Запрос.Выполнить(); на Результат = Запрос.Выполнить().Выгрузить();
19 MrZLO
 
30.09.13
11:38
(18)

Результат = Запрос.Выполнить();
Выборка = Результат.Выгрузить();

Это же тоже самое Выборка = Запрос.Выполнить().Выгрузить();
20 Heckfy
 
30.09.13
11:40
(19) А, ну да, не увидел
21 Живой Ископаемый
 
30.09.13
11:43
22 MrZLO
 
30.09.13
11:49
(21) у вас в запросе сразу выбираем цену...
а у меня выбираем товары->цена

оно будет работать если я выбирать в запросе я буду из

Документ.ПоступлениеТоваровУслуг.Товары КАК ПоступлениеТоваровУслугТовары

а не Документ.ПоступлениеТоваровУслуг КАК ПоступлениеТоваровУслуг

но мне же надо учесть дату документа, проведен он или нет... короч запрос переделать надо
23 Живой Ископаемый
 
30.09.13
11:49
2(22) да, именно.
24 MrZLO
 
30.09.13
11:57
ну в общем сделал так

Запрос.Текст = "ВЫБРАТЬ ПЕРВЫЕ 1
               |    ПоступлениеТоваровУслугТовары.Цена КАК Цена
               |ИЗ
               |    Документ.ПоступлениеТоваровУслуг.Товары КАК ПоступлениеТоваровУслугТовары
               |        ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПоступлениеТоваровУслуг КАК ПоступлениеТоваровУслуг
               |        ПО ПоступлениеТоваровУслугТовары.Ссылка = ПоступлениеТоваровУслуг.Ссылка
               |ГДЕ
               |    ПоступлениеТоваровУслугТовары.Номенклатура.Ссылка = &Номенклатура
               |    И ПоступлениеТоваровУслуг.Проведен = Истина
               |    И ПоступлениеТоваровУслуг.Дата <= &Дата
               |
               |УПОРЯДОЧИТЬ ПО
               |    ПоступлениеТоваровУслуг.Дата УБЫВ";

Запрос.УстановитьПараметр("Номенклатура", Номенклатура);
Запрос.УстановитьПараметр("Дата", ДатаПараметр);

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

Если Результат.Пустой() <> Истина Тогда    
    
    ПолученнаяЦена = Результат.Выгрузить()[0].Цена;

КонецЕсли;

Возврат ПолученнаяЦена;
Пользователь не знает, чего он хочет, пока не увидит то, что он получил. Эдвард Йодан