Реклама на этом месте
Форум 1С
Форум 1С
Программистам. Бухгалтерам. Администраторам. Пользователям
Задай вопрос - получи решение проблемы. Без троллинга и флуда.
16 Дек 2017, 17:52
МультиВход
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?
 
collapse

Автор Тема: Объединить 2 запроса в один  (Прочитано 4458 раз)

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

Оффлайн efimovvasya

  • *
  • Сообщений: 1
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2012-08-01
  • Сайт: 
  • Профессия: Программист 1С
Первым запросом отбираю строки из регистра накопления по нужной мне комплектовке, а вторым запросом для каждой строки в другом регистре ищу остаток на складе. Т.е. параметрами второго запроса являются данные первого (Номенклатура и ХарактеристикаНоменклатуры). Вывожу это в отчет.
Разумеется, все это работает очень медленно. Подскажите, пожалуйста, как эти 2 запроса объединить в один?
Запрос = Новый запрос("ВЫБРАТЬ
| еф_ОстаткиПоКомплектовкамОстаткиИОбороты.Номенклатура КАК Номенклатура,
| еф_ОстаткиПоКомплектовкамОстаткиИОбороты.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
| еф_ОстаткиПоКомплектовкамОстаткиИОбороты.КоличествоПриход,
| еф_ОстаткиПоКомплектовкамОстаткиИОбороты.КоличествоКонечныйОстаток
|ИЗ
| РегистрНакопления.еф_ОстаткиПоКомплектовкам.ОстаткиИОбороты КАК еф_ОстаткиПоКомплектовкамОстаткиИОбороты
|ГДЕ
| еф_ОстаткиПоКомплектовкамОстаткиИОбороты.Комплектовка = &Комплектовка");
Запрос.УстановитьПараметр("Комплектовка", Комплектовка);
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий Цикл
ОблСтрока.Параметры.Номенклатура = Выборка.Номенклатура;
ОблСтрока.Параметры.ХарактеристикаНоменклатуры = Выборка.ХарактеристикаНоменклатуры;
ОблСтрока.Параметры.Приход = Выборка.КоличествоПриход;
ОблСтрока.Параметры.Остаток = Выборка.КоличествоКонечныйОстаток;

ЗапросСГП = Новый запрос("ВЫБРАТЬ
| ТоварыНаСкладахОстатки.КоличествоОстаток КАК НаСГП
|ИЗ
| РегистрНакопления.ТоварыНаСкладах.Остатки КАК ТоварыНаСкладахОстатки
|ГДЕ
| ТоварыНаСкладахОстатки.Склад = &Склад
| И ТоварыНаСкладахОстатки.Номенклатура = &Номенклатура
| И ТоварыНаСкладахОстатки.ХарактеристикаНоменклатуры = &ХарактеристикаНоменклатуры");
Запрос.УстановитьПараметр("Склад", СкладСГП);
Запрос.УстановитьПараметр("Номенклатура", Выборка.Номенклатура);
Запрос.УстановитьПараметр("ХарактеристикаНоменклатуры", Выборка.ХарактеристикаНоменклатуры);
ВыборкаСГП = ЗапросСГП.Выполнить().Выбрать();
Пока ВыборкаСГП.Следующий() Цикл
ОблСтрока.Параметры.НаСГП = ВыборкаСГП.НаСГП;
КонецЦикла;
КонецЦикла;


Оффлайн has

  • Модератор
  • *****
  • Сообщений: 1308
  • РЕПУТАЦИЯ: 285
  • КПД: 22%
  • Регистрация: 2011-01-28
  • Сайт: 
  • Профессия: Программист 1С
1. Использовать параметры виртуальных таблиц, а не условие ГДЕ
2. Первый запрос поместить во временную таблицу, потом соединить со вторым запросом
ЗапросСГП = Новый запрос("ВЫБРАТЬ
|    ТоварыНаСкладахОстатки.КоличествоОстаток КАК НаСГП
|ИЗ
|    РегистрНакопления.ТоварыНаСкладах.Остатки(&ТутДатаОСтатков, Склад = &Склад И Номенклатура = &Номенклатура И ХарактеристикаНоменклатуры  = &ХарактеристикаНоменклатуры ) КАК ТоварыНаСкладахОстатки");
Почти также и с первым запросом.

Оффлайн Klyacksa

  • Фрилансер. Милости прошу с задачами в личку.
  • Глобальный модератор
  • *****
  • Сообщений: 1325
  • РЕПУТАЦИЯ: 430
  • КПД: 32%
  • Регистрация: 2010-08-20
  • Сайт: 
  • Профессия: Программист 1С
Ой-ой!!! Это у нас что там? ЗАПРОС В ЦИКЛЕ???
Уберите, уберите немедленно и никому больше не показывайте!!!

По делу:
1. Действительно, как сказал has, первый запрос помещаем во временную таблицу (закладка "Дополнительно")
2. Далее на закладке "Пакет запросов" добавляем новый запрос: берем временную таблицу (из п.1), к ней левым соединением второй ваш запрос. И если хотите отбирать во втором запросе только записи, относящиеся к первому, для ускорения работы рекомендую в виртуальные параметры таблицы добавить еще такое условие:

"ИЗ
|    РегистрНакопления.ТоварыНаСкладах.Остатки(&ТутДействительноДатаОстатков,
|    Склад=&Склад И (Номенклатура, ХарактеристикаНоменклатуры) В
|    (ВЫБРАТЬ
|     ИмяВременнойТаблицы.Номенклатура,
|     ИмяВременнойТаблицы.ХарактеристикаНоменклатуры,
|     ИЗ
|     ИмяВременнойТаблицы КАК ИмяВременнойТаблицы)) КАК ТоварыНаСкладахОстатки"


Кстати, а почему в первом запросе нет отбора по складу? Там нет детализации по складу?
xxx: Спасибо! Я бы загуглил, но ты интересней. Материшься. Злишься. Послать можешь...

Мысль - это оргазм мозга. Кто способен его испытать - получают истинное наслаждение, остальным приходится имитировать


Теги:
 

Из запроса не выводятся значения полей - выводятся пустые значения

Автор Alex1111Раздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 24
Просмотров: 12243
Последний ответ 14 Июн 2012, 17:44
от Alex1111
"ПОДОБНО" в условие связи запроса

Автор Станиславъ ЗверевъРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 8
Просмотров: 3275
Последний ответ 11 Май 2016, 15:29
от LexaK
"Таблица значений" в результате запроса - 1С

Автор mvk843Раздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 8
Просмотров: 740
Последний ответ 15 Июн 2017, 07:53
от mvk843
Возможно ли языком запросов без конкатенации текста запроса и без СКД преобразовать строки таблицы в столбцы (колонки) выходной таблицы?

Автор acces969Раздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 3
Просмотров: 448
Последний ответ 29 Май 2017, 15:29
от alex0402
Ошибка при выполнении запроса - "неоднозначное поле"

Автор Marta_LiРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 14
Просмотров: 11951
Последний ответ 21 Апр 2011, 16:00
от Marta_Li

* Живое общение

Не устроил ответ?

Зарегистрируйся и задай свой вопрос. Живое общение приносит результат намного быстрее.


Зарегистрироваться

* Реклама

* Поиск

* Последние задачи на разработку (фриланс)

* Реклама

* Последние вакансии

* Топ 10 авторов за месяц

Геннадий ОбьГЭС Геннадий ОбьГЭС
157 Сообщений
ilyay ilyay
66 Сообщений
alex0402
53 Сообщений
AIFrame
47 Сообщений
andron81_81
44 Сообщений
oleg-x
44 Сообщений
BuhRust
33 Сообщений
MuI_I_Ika MuI_I_Ika
32 Сообщений
Golickoff Golickoff
31 Сообщений
Dima Dddd Dima Dddd
24 Сообщений

* Кто онлайн

  • Точка Гостей: 257
  • Точка Скрытых: 0
  • Точка Пользователей: 9
  • Точка Сейчас на форуме:

* Облако тэгов

* Форум 1С с мобильного

* Инструменты

* Дополнительно

Поиск

 
SimplePortal 2.3.5 © 2008-2012, SimplePortal