Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
13 дек 2024, 21:37

Запрос с параметром

Автор Fenlou, 11 окт 2014, 11:06

0 Пользователей и 1 гость просматривают эту тему.

Fenlou

Здравствуйте, помогите выгрузить результаты запроса в один столбец.
Вот, что я написал:
Процедура Кнопка1Нажатие(Элемент)
       
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
|  Lenovo.ОперативнаяПамять,
|  Lenovo.ОС,
|  Lenovo.Камера,
|  Nokia.ОперативнаяПамять КАК ОперативнаяПамять1,
|  Nokia.ОС КАК ОС1,
|  Nokia.Камера КАК Камера1,
|  Samsung.ОперативнаяПамять КАК ОперативнаяПамять2,
|  Samsung.ОС КАК ОС2,
|  Samsung.Камера КАК Камера2
|ИЗ
|  Документ.Lenovo КАК Lenovo,
|  Документ.Nokia КАК Nokia,
|  Документ.Samsung КАК Samsung
|ГДЕ
|  Lenovo.ОперативнаяПамять >= &ПолеВвода2
|  И Lenovo.ОС = &ПолеВвода3
|  И Lenovo.Камера >= &ПолеВвода1
|  И Nokia.ОперативнаяПамять >= &ПолеВвода2
|  И Nokia.ОС = &ПолеВвода3
|  И Nokia.Камера >= &ПолеВвода1
|  И Samsung.ОперативнаяПамять >= &ПолеВвода2
|  И Samsung.ОС = &ПолеВвода3
|  И Samsung.Камера >= &ПолеВвода1
|
|СГРУППИРОВАТЬ ПО
|  Lenovo.ОперативнаяПамять,
|  Lenovo.ОС,
|  Lenovo.Камера,
|  Nokia.ОперативнаяПамять,
|  Nokia.ОС,
|  Nokia.Камера,
|  Samsung.ОперативнаяПамять,
|  Samsung.ОС,
|  Samsung.Камера";

Результат = Запрос.Выполнить();
Запрос.УстановитьПараметр("ПолеВвода2",ПолеВвода2);
Запрос.УстановитьПараметр("ПолеВвода3",ПолеВвода3); 
Запрос.УстановитьПараметр("ПолеВвода1",ПолеВвода1);

ЭлементыФормы.ТабличноеПоле1.Значение=Результат.Выгрузить();
ЭлементыФормы.ТабличноеПоле1.СоздатьКолонки();
   
КонецПроцедуры

дфтын

Результат.Выгрузить().ВыгрузитьКолонку(«имяколонки»)

Fenlou

Цитата: дфтын от 11 окт 2014, 11:43Результат.Выгрузить().ВыгрузитьКолонку(«имяколонки»)
Не получается. :wacko:
Процедура Кнопка1Нажатие(Элемент)

Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
|  Lenovo.ОперативнаяПамять,
|  Lenovo.ОС,
|  Lenovo.Камера,
|  Nokia.ОперативнаяПамять КАК ОперативнаяПамять1,
|  Nokia.ОС КАК ОС1,
|  Nokia.Камера КАК Камера1,
|  Samsung.ОперативнаяПамять КАК ОперативнаяПамять2,
|  Samsung.ОС КАК ОС2,
|  Samsung.Камера КАК Камера2
|ИЗ
|  Документ.Lenovo КАК Lenovo,
|  Документ.Nokia КАК Nokia,
|  Документ.Samsung КАК Samsung
|ГДЕ
|  Lenovo.ОперативнаяПамять >= &ПолеВвода2
|  И Lenovo.ОС = &ПолеВвода3
|  И Lenovo.Камера >= &ПолеВвода1
|  И Nokia.ОперативнаяПамять >= &ПолеВвода2
|  И Nokia.ОС = &ПолеВвода3
|  И Nokia.Камера >= &ПолеВвода1
|  И Samsung.ОперативнаяПамять >= &ПолеВвода2
|  И Samsung.ОС = &ПолеВвода3
|  И Samsung.Камера >= &ПолеВвода1
|
|СГРУППИРОВАТЬ ПО
|  Lenovo.ОперативнаяПамять,
|  Lenovo.ОС,
|  Lenovo.Камера,
|  Nokia.ОперативнаяПамять,
|  Nokia.ОС,
|  Nokia.Камера,
|  Samsung.ОперативнаяПамять,
|  Samsung.ОС,
|  Samsung.Камера";

Запрос.УстановитьПараметр("ПолеВвода2",ПолеВвода2);
Запрос.УстановитьПараметр("ПолеВвода3",ПолеВвода3); 
Запрос.УстановитьПараметр("ПолеВвода1",ПолеВвода1);
Результат = Запрос.Выполнить();


ЭлементыФормы.ТабличноеПоле1.Значение=Результат.Выгрузить().ВыгрузитьКолонку(,ПолеВвода2,ПолеВвода3,ПолеВвода1);
ЭлементыФормы.ТабличноеПоле1.СоздатьКолонки();
   
КонецПроцедуры

дфтын

А... Поле1, поле2,поле3 - это название колонок?
ВЫ лучше напишите нормлаьно что вы хотите. выгрузить в одну колонку - это странное желание
Добавлено: 11 окт 2014, 12:42


ТаблицаЗначений (ValueTable)
ВыгрузитьКолонку (UnloadColumn)
Синтаксис:

ВыгрузитьКолонку(<Колонка>)
Параметры:

<Колонка> (обязательный)

Тип: Число; Строка; КолонкаТаблицыЗначений.
Колонка, значения которой необходимо выгрузить. В качестве значения параметра может выступать индекс колонки, имя колонки, сама колонка.

Fenlou

Цитата: дфтын от 11 окт 2014, 12:37
А... Поле1, поле2,поле3 - это название колонок?
ВЫ лучше напишите нормлаьно что вы хотите. выгрузить в одну колонку - это странное желание
Добавлено: 11 окт 2014, 12:42


ТаблицаЗначений (ValueTable)
ВыгрузитьКолонку (UnloadColumn)
Синтаксис:

ВыгрузитьКолонку(<Колонка>)
Параметры:

<Колонка> (обязательный)

Тип: Число; Строка; КолонкаТаблицыЗначений.
Колонка, значения которой необходимо выгрузить. В качестве значения параметра может выступать индекс колонки, имя колонки, сама колонка.
Просто результат этого запроса выводится в одну строку

дфтын

Согласитесь не имея вашей конфигурации очень сложно телепатически придумать как выводится ваш запрос. А конфа не стандартная.
Ладно
Допустим мы считаем , что вам надо не в строку, а в колонку
Рез = Запрос.ВЫполнить().ВЫбрать();
Пока Рез.Следующий() Цикл
//заполняем таблитцу значения
Стр = ТЗ.Добавить();
Стр.....
КонецЦИкла;

ЭлементыФормы.ТабличноеПоле1.Значение = ТЗ;
ЭлементыФормы.ТабличноеПоле1.СоздатьКолонки();


Это первый вариант не самый лучший.
Второй вариант использовать в запросе - ОБЪЕДИНИТЬ ВСЕ

Fenlou

Цитата: дфтын от 11 окт 2014, 13:20
Согласитесь не имея вашей конфигурации очень сложно телепатически придумать как выводится ваш запрос. А конфа не стандартная.
Ладно
Допустим мы считаем , что вам надо не в строку, а в колонку
Рез = Запрос.ВЫполнить().ВЫбрать();
Пока Рез.Следующий() Цикл
//заполняем таблитцу значения
Стр = ТЗ.Добавить();
Стр.....
КонецЦИкла;

ЭлементыФормы.ТабличноеПоле1.Значение = ТЗ;
ЭлементыФормы.ТабличноеПоле1.СоздатьКолонки();


Это первый вариант не самый лучший.
Второй вариант использовать в запросе - ОБЪЕДИНИТЬ ВСЕ
Добавлено: 11 окт 2014, 13:33


Процедура Кнопка1Нажатие(Элемент)
    Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ
                   |    Lenovo.ОперативнаяПамять,
                   |    Lenovo.ОС,
                   |    Lenovo.Камера
                   |ИЗ
                   |    Документ.Lenovo КАК Lenovo,
                   |    Документ.Nokia КАК Nokia,
                   |    Документ.Samsung КАК Samsung
                   |ГДЕ
                   |    Lenovo.ОперативнаяПамять > &ПолеВвода2
                   |    И Lenovo.ОС = &ПолеВвода3
                   |    И Lenovo.Камера >= &ПолеВвода1
                   |
                   |ОБЪЕДИНИТЬ ВСЕ
                   |
                   |ВЫБРАТЬ
                   |    Nokia.ОперативнаяПамять,
                   |    Nokia.ОС,
                   |    Nokia.Камера
                   |ИЗ
                   |    Документ.Nokia КАК Nokia
                   |ГДЕ
                   |    Nokia.ОперативнаяПамять = &ПолеВвода2
                   |    И Nokia.ОС = &ПолеВвода3
                   |    И Nokia.Камера = &ПолеВвода1
                   |
                   |ОБЪЕДИНИТЬ ВСЕ
                   |
                   |ВЫБРАТЬ
                   |    Samsung.ОперативнаяПамять,
                   |    Samsung.ОС,
                   |    Samsung.Камера
                   |ИЗ
                   |    Документ.Samsung КАК Samsung
                   |ГДЕ
                   |    Samsung.ОперативнаяПамять = &ПолеВвода2
                   |    И Samsung.ОС = &ПолеВвода3
                   |    И Samsung.Камера = &ПолеВвода1";
   
   
       

Запрос.УстановитьПараметр("ПолеВвода2",ПолеВвода2);
Запрос.УстановитьПараметр("ПолеВвода3",ПолеВвода3); 
Запрос.УстановитьПараметр("ПолеВвода1",ПолеВвода1);
Результат = Запрос.Выполнить();
ЭлементыФормы.ТабличноеПоле1.Значение=Результат.Выгрузить();
ЭлементыФормы.ТабличноеПоле1.СоздатьКолонки();
   
КонецПроцедуры

Но запрос не правильно работает

дфтын

эээээ?
Используйте ОБЪЕДИНИТЬ ВСЕ

Примерно так:

Запрос.Текст = "ВЫБРАТЬ
|  Lenovo.ОперативнаяПамять,
|  Lenovo.ОС,
|  Lenovo.Камера
|ИЗ докленова
| Где... условия
|Объединить все
|выбрать
|  Nokia.ОперативнаяПамять КАК ОперативнаяПамять1,
|  Nokia.ОС КАК ОС1,
|  Nokia.Камера КАК Камера1,
| из донокиа
| Где... условия
|объединить все
|выбрать
|  Samsung.ОперативнаяПамять КАК ОперативнаяПамять2,
|  Samsung.ОС КАК ОС2,
|  Samsung.Камера КАК Камера2
|из док самсунг
| Где... условия";


Fenlou

Цитата: дфтын от 11 окт 2014, 13:36
эээээ?
Используйте ОБЪЕДИНИТЬ ВСЕ

Примерно так:

Запрос.Текст = "ВЫБРАТЬ
|  Lenovo.ОперативнаяПамять,
|  Lenovo.ОС,
|  Lenovo.Камера
|ИЗ докленова
| Где... условия
|Объединить все
|выбрать
|  Nokia.ОперативнаяПамять КАК ОперативнаяПамять1,
|  Nokia.ОС КАК ОС1,
|  Nokia.Камера КАК Камера1,
| из донокиа
| Где... условия
|объединить все
|выбрать
|  Samsung.ОперативнаяПамять КАК ОперативнаяПамять2,
|  Samsung.ОС КАК ОС2,
|  Samsung.Камера КАК Камера2
|из док самсунг
| Где... условия";

Я загрузил файл dt, сможете проверить?

дфтын

не, не хочу проверять.
Могу точно сказать - работать будет!

500 рублей - проверю:)

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск