Как передать результат одного запроса в качестве параметра другому запросу?
Добрый день!
Хочу в одном запросе получить даты, и передать их коллекцией в другую запрос,
второй запрос работает с РегистромНакопления (Остатки и Обороты)
Так вот мне нужно чтобы на каждый элемент коллекции (определенный момент времени) выводились информация по оборотам и остаткам.
Как сделать не соображу, подскажите пожалуйста.
Хочу в одном запросе получить даты, и передать их коллекцией в другую запрос,
второй запрос работает с РегистромНакопления (Остатки и Обороты)
Так вот мне нужно чтобы на каждый элемент коллекции (определенный момент времени) выводились информация по оборотам и остаткам.
Как сделать не соображу, подскажите пожалуйста.
По теме из базы знаний
- Что делает "В ИЕРАРХИИ" в запросе?
- Комплексный контроль остатков. Для одного или сразу нескольких логически связанных регистров накопления. Универсальное решение уровня данных для контроля не только складских остатков
- Кому и зачем нужна автоматизация? Кто и как ее должен делать?
- Смотрим запросы 1С через Microsoft SQL Profiler по следам ошибок разработчиков, приводящих к проблемам производительности
- HTTP сервер 1С 7.7 + HTTP асинхронный клиент: внешние компоненты для 1С 7.7
Найденные решения
Остальные ответы
В избранное
Подписаться на ответы
Сортировка:
Древо развёрнутое
Свернуть все
(1) Щастье1: В первом запросе выбираете даты. Например, ВЫБРАТЬ РАЗЛИЧНЫЕ НАЧАЛАПЕРИОДА(Период, ДЕНЬ) КАК Дата ПОМЕСТИТЬ ВТ_ДАТЫ ИЗ (... бла-бла-бла...).
В этом же пакете можно вторым запросом посчитать минимум и максимум дат.
В коде создаете МенеджерВременныхТаблиц и присваиваете его запросу.
Выполняете пакет, получаете период.
Далее меняете текст запроса на выборку из регистра накопления с периодичностью День. И внутренне соединяете по датам с вашей временной таблицей. Параметрами можно присвоить начало-конец периода.
Щастье2: как уже кем-то написано, первый ваш запрос по датам Выполнить().Выгрузить().ВыгрузитьКолонку(); - получаете массив дат. Во втором запросе ваш регистрнакопления.ОстаткиИОбороты выбираете с периодичностью по дням, добавляете что-то вроде ГДЕ Период В(&МассивДат), и устанавливаете параметр "МассивДат" этим выгруженным из первого запроса массивом.
В этом же пакете можно вторым запросом посчитать минимум и максимум дат.
В коде создаете МенеджерВременныхТаблиц и присваиваете его запросу.
Выполняете пакет, получаете период.
Далее меняете текст запроса на выборку из регистра накопления с периодичностью День. И внутренне соединяете по датам с вашей временной таблицей. Параметрами можно присвоить начало-конец периода.
Щастье2: как уже кем-то написано, первый ваш запрос по датам Выполнить().Выгрузить().ВыгрузитьКолонку(); - получаете массив дат. Во втором запросе ваш регистрнакопления.ОстаткиИОбороты выбираете с периодичностью по дням, добавляете что-то вроде ГДЕ Период В(&МассивДат), и устанавливаете параметр "МассивДат" этим выгруженным из первого запроса массивом.
для подобных задач придумали и используют МВТ
а то как вы описали путь решения от лукавого
т.е. запроса должно быть не два, а один.
а пакеты этого запроса можете выполнять
- сразу в одном коде
- разнести выполнение пакетов в отдельные вызовы
- любое другое шаманство с МВТ
а то как вы описали путь решения от лукавого
т.е. запроса должно быть не два, а один.
а пакеты этого запроса можете выполнять
- сразу в одном коде
- разнести выполнение пакетов в отдельные вызовы
- любое другое шаманство с МВТ
(11)Согласен
ВЫБРАТЬ
ТоварыНаСкладах.Регистратор.Дата КАК Дата,
ТоварыНаСкладах.Регистратор КАК Док,
ТоварыНаСкладах.Номенклатура.Код КАК Код,
ТоварыНаСкладах.Номенклатура КАК Номенклатура,
ТоварыНаСкладах.КоличествоНачальныйОстаток КАК НачОст,
ТоварыНаСкладах.КоличествоПриход КАК Приход,
ТоварыНаСкладах.КоличествоРасход КАК Расход,
ТоварыНаСкладах.КоличествоКонечныйОстаток КАК КонОст
ПОМЕСТИТЬ ОстНаСкл
ИЗ
РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты(
&НачалоПериода,
&КонецПериода,
Авто,
,
Номенклатура = &Номенклатура
И Склад = &Склад) КАК ТоварыНаСкладах
;
//////////////////////////////////////////////////////////// ////////////////////
ВЫБРАТЬ
ОстНаСкл.Дата КАК Дата,
ОстНаСкл.Код КАК Код,
ОстНаСкл.Номенклатура КАК Номенклатура,
ОстНаСкл.НачОст КАК НачОст,
ОстНаСкл.Приход КАК Приход,
ОстНаСкл.Расход КАК Расход,
ОстНаСкл.КонОст КАК КонОст,
ТоварыОстаткиИП.КоличествоНачальныйОстаток КАК КоличествоНачальныйОстаток,
ТоварыОстаткиИП.КоличествоПриход КАК КоличествоПриход,
ТоварыОстаткиИП.КоличествоРасход КАК КоличествоРасход,
ТоварыОстаткиИП.КоличествоКонечныйОстаток КАК КоличествоКонечныйОстаток
ИЗ
РегистрНакопления.ТоварыОрганизаций.ОстаткиИОбороты(
&НачалоПериода,
&КонецПериода,
Регистратор,
,
Организация = &ОрганизацияИП
И Номенклатура = &Номенклатура
И Склад = &Склад) КАК ТоварыОстаткиИП,
ОстНаСкл КАК ОстНаСкл
УПОРЯДОЧИТЬ ПО
Дата
Показать
(13)Можно как написано выше поместить все ваши даты во временную таблицу, а в том запросе, что вы показали, убрать параметры &НачалоПериода и &КонецПериода, а вместо них сделать левое соединение, где указать, что Период Между Дата1 и Дата2 из временной таблицы
просто это надо сделать в СКД, там есть связь двух источников данных (запросы) где строчки/значения одного запроса назначаются параметрами другого! Это как раз то что вам надо!
либо результат одного запроса связывать двумя левыми соединениями со вторым запросом для получения ближайшего значения по дате
либо результат одного запроса связывать двумя левыми соединениями со вторым запросом для получения ближайшего значения по дате
В вопросах тестирования 1С:Профессионал по платформе есть такой
"При использовании в запросе параметра вместо указания имени таблицы, при задании значения параметра может использоваться:"
Один из правильных вариантов ответа "результат запроса".
Стало быть можно передавать результат запроса в качестве параметра без шаманства?
"При использовании в запросе параметра вместо указания имени таблицы, при задании значения параметра может использоваться:"
Один из правильных вариантов ответа "результат запроса".
Стало быть можно передавать результат запроса в качестве параметра без шаманства?
Вакансии
Аналитик 1С / Бизнес-аналитик
Нижний Новгород
зарплата от 100 000 руб. до 250 000 руб.
Временный (на проект)
Нижний Новгород
зарплата от 100 000 руб. до 250 000 руб.
Временный (на проект)