1. Dimka74 10.09.19 09:31 Сейчас в теме

Как передать результат одного запроса в качестве параметра другому запросу?

Добрый день!
Хочу в одном запросе получить даты, и передать их коллекцией в другую запрос,
второй запрос работает с РегистромНакопления (Остатки и Обороты)
Так вот мне нужно чтобы на каждый элемент коллекции (определенный момент времени) выводились информация по оборотам и остаткам.
Как сделать не соображу, подскажите пожалуйста.
Найденные решения
2. VmvLer 10.09.19 09:33 Сейчас в теме
для подобных задач придумали и используют МВТ
а то как вы описали путь решения от лукавого

т.е. запроса должно быть не два, а один.
а пакеты этого запроса можете выполнять
- сразу в одном коде
- разнести выполнение пакетов в отдельные вызовы
- любое другое шаманство с МВТ
Остальные ответы
Избранное Подписка Сортировка: Древо
16. DrZombi 10.09.19 11:07 Сейчас в теме
(1) Передавать через МенеджерВременныхТаблиц, соответственно, результат свой помещаешь во временную таблицу, и не удаляешь.

Используя МенеджерВременныхТаблиц, просто передаешь свою таблицу от одного запроса к другому :)
18. shatunovs 11.09.19 16:28 Сейчас в теме
(1) Щастье1: В первом запросе выбираете даты. Например, ВЫБРАТЬ РАЗЛИЧНЫЕ НАЧАЛАПЕРИОДА(Период, ДЕНЬ) КАК Дата ПОМЕСТИТЬ ВТ_ДАТЫ ИЗ (... бла-бла-бла...).
В этом же пакете можно вторым запросом посчитать минимум и максимум дат.
В коде создаете МенеджерВременныхТаблиц и присваиваете его запросу.
Выполняете пакет, получаете период.
Далее меняете текст запроса на выборку из регистра накопления с периодичностью День. И внутренне соединяете по датам с вашей временной таблицей. Параметрами можно присвоить начало-конец периода.
Щастье2: как уже кем-то написано, первый ваш запрос по датам Выполнить().Выгрузить().ВыгрузитьКолонку(); - получаете массив дат. Во втором запросе ваш регистрнакопления.ОстаткиИОбороты выбираете с периодичностью по дням, добавляете что-то вроде ГДЕ Период В(&МассивДат), и устанавливаете параметр "МассивДат" этим выгруженным из первого запроса массивом.
2. VmvLer 10.09.19 09:33 Сейчас в теме
для подобных задач придумали и используют МВТ
а то как вы описали путь решения от лукавого

т.е. запроса должно быть не два, а один.
а пакеты этого запроса можете выполнять
- сразу в одном коде
- разнести выполнение пакетов в отдельные вызовы
- любое другое шаманство с МВТ
6. Dimka74 10.09.19 09:39 Сейчас в теме
(2) что такое МВТ? Временные таблицы?
7. Pavel Rodinchenko 10.09.19 09:40 Сейчас в теме
(6)Менеджер временных таблиц
9. Dimka74 10.09.19 09:41 Сейчас в теме
(7)Возможно ли такое реализовать с пакетами запросов или Вложенного запроса?
10. Dimka74 10.09.19 09:46 Сейчас в теме
(9)Как из одного пакета запроса передать результат в качестве параметра в другой пакет?
11. VmvLer 10.09.19 09:52 Сейчас в теме
(10) можно передать параметр таблицу значений, но ее все равно необходимо будет поместить в МВТ.

Лучшее решение сейчас не сыпать вопросами, а подумать и
- выложить то, что вы сделали
- найти примеры самостоятельно
user614822; +1 Ответить
13. Dimka74 10.09.19 10:04 Сейчас в теме
(11)Согласен
ВЫБРАТЬ
	ТоварыНаСкладах.Регистратор.Дата КАК Дата,
	ТоварыНаСкладах.Регистратор КАК Док,
	ТоварыНаСкладах.Номенклатура.Код КАК Код,
	ТоварыНаСкладах.Номенклатура КАК Номенклатура,
	ТоварыНаСкладах.КоличествоНачальныйОстаток КАК НачОст,
	ТоварыНаСкладах.КоличествоПриход КАК Приход,
	ТоварыНаСкладах.КоличествоРасход КАК Расход,
	ТоварыНаСкладах.КоличествоКонечныйОстаток КАК КонОст
ПОМЕСТИТЬ ОстНаСкл
ИЗ
	РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты(
			&НачалоПериода,
			&КонецПериода,
			Авто,
			,
			Номенклатура = &Номенклатура
				И Склад = &Склад) КАК ТоварыНаСкладах
;

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

УПОРЯДОЧИТЬ ПО
	Дата
Показать
14. Pavel Rodinchenko 10.09.19 10:19 Сейчас в теме
(13)Можно как написано выше поместить все ваши даты во временную таблицу, а в том запросе, что вы показали, убрать параметры &НачалоПериода и &КонецПериода, а вместо них сделать левое соединение, где указать, что Период Между Дата1 и Дата2 из временной таблицы
3. omut 10.09.19 09:33 Сейчас в теме
4. VmvLer 10.09.19 09:36 Сейчас в теме
5. tusv 166 10.09.19 09:39 Сейчас в теме
типа?
Запрос1.УстановитьПараметр("Даты",Запрос2.Выполнить().Выгрузить().ВыгрузитьКолонку("Дата"));
shatunovs; +1 Ответить
8. Dimka74 10.09.19 09:40 Сейчас в теме
(5)Да, типа того)) Но возможно ли теперь это сделать в рамках одного запроса?
12. user614822 29 10.09.19 09:53 Сейчас в теме
(8) да в чем проблема то, совершенно не ясно!
Ну помещайте в ВТ_даты свои даты, а потом что-то типа...

ВЫБРАТЬ
ВТ_даты.Дата,
РгистрНакопления.ТекущийОстаток

Из ВТ_даты
ЛЕВОЕ СОЕДИНЕНИЕ РгистрНакопления
PhoenixAOD; Pavel Rodinchenko; +2 Ответить
15. PhoenixAOD 57 10.09.19 10:53 Сейчас в теме
(12)согласен это уже ни один год мусолится на формуах 1с
17. Nick_Angel 10.09.19 12:22 Сейчас в теме
Лучше воспользоваться временными таблицами в запросе - и сделать связку, так проще будет и отлаживать код и в случае чего разобраться что от куда получилось через консоль запросов
19. soft_wind 11.09.19 17:42 Сейчас в теме
просто это надо сделать в СКД, там есть связь двух источников данных (запросы) где строчки/значения одного запроса назначаются параметрами другого! Это как раз то что вам надо!

либо результат одного запроса связывать двумя левыми соединениями со вторым запросом для получения ближайшего значения по дате
Оставьте свое сообщение
Новые вопросы с вознаграждением
Автор темы объявил вознаграждение за найденный ответ, его получит тот, кто первый поможет автору.

Вакансии

Программист 1С
Санкт-Петербург
зарплата от 130 000 руб.
Полный день


Программисты 1С УТ / БУЗ/ЗУП / БИТ ФИНАНС
Москва
зарплата от 100 000 руб. до 180 000 руб.
Полный день

Программист 1С
Москва
зарплата от 150 000 руб. до 150 000 руб.
Полный день

Программист, аналитик, эксперт 1С
Санкт-Петербург
По совместительству