|
Запрос. Как передать результат одного запроса в другой | ☑ | ||
---|---|---|---|---|
0
Wefast
25.06.15
✎
09:29
|
РезультатЗапроса = Запрос.Выполнить().Выгрузить();
Запрос2 = Новый Запрос; Запрос2.УстановитьПараметр("ИсхТаблица", РезультатЗапроса); Запрос2.УстановитьПараметр("Ссылка", Объект.СсылкаНаОбъкт); Запрос2.Текст = "ВЫБРАТЬ | ИсхТаблица.ИспользуетсяАвтовыбор, | ИсхТаблица.КлючСвязиПродукция КАК КлючСвязиПродукция |ПОМЕСТИТЬ ВТ_1 |ИЗ | &ИсхТаблица КАК ИсхТаблица |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ВТ_1.ИспользуетсяАвтовыбор, | ВТ_1.КлючСвязиПродукция |ИЗ | ВТ_1 КАК ВТ_1"; РезультатЗапроса2 = Запрос2.Выполнить().Выгрузить(); {Форма.Форма.Форма(86)}: Ошибка при вызове метода контекста (Выполнить) РезультатЗапроса2 = Запрос2.Выполнить().Выгрузить(); по причине: {(3, 2)}: Тип не может быть выбран в запросе <<?>>ИсхТаблица.КлючСвязиПродукция КАК КлючСвязиПродукция |
|||
1
Mirnin
25.06.15
✎
09:38
|
Типизируй колонки - задай тип для КлючСвязиПродукция.
|
|||
2
palpetrovich
25.06.15
✎
09:40
|
покажи первый Запрос
|
|||
3
Timon1405
25.06.15
✎
09:40
|
(0) вообще, для этого есть МенеджерВременныхТаблиц
|
|||
4
Wefast
25.06.15
✎
09:41
|
(1) Если ставлю тип полям - он не сохраняется.
(3) Результат первого запроса я использую еще в другом месте (2) Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ЗаказНаПроизводствоМатериалыИУслуги.Ссылка, | ЗаказНаПроизводствоМатериалыИУслуги.НомерСтроки, | ЗаказНаПроизводствоМатериалыИУслуги.Этап, | ЗаказНаПроизводствоМатериалыИУслуги.Склад, | ЗаказНаПроизводствоМатериалыИУслуги.СтатьяКалькуляции, | ВЫБОР | КОГДА АналогиВПроизводствеСрезПоследних.Аналог <> NULL | ТОГДА 0 | ИНАЧЕ ЗаказНаПроизводствоМатериалыИУслуги.ИспользуетсяАвтовыбор | КОНЕЦ КАК ИспользуетсяАвтовыбор, | ЗаказНаПроизводствоМатериалыИУслуги.СведенияАвтовыбора, | ЗаказНаПроизводствоМатериалыИУслуги.ПрименениеМатериала, | ЗаказНаПроизводствоМатериалыИУслуги.ПроизводитсяВПроцессе, | ЗаказНаПроизводствоМатериалыИУслуги.СпецификацияПолуфабриката, | ЗаказНаПроизводствоМатериалыИУслуги.ВариантОбеспечения, | ЗаказНаПроизводствоМатериалыИУслуги.ДатаПотребности, | ЗаказНаПроизводствоМатериалыИУслуги.ЗаказатьНаСклад, | ЗаказНаПроизводствоМатериалыИУслуги.КлючСвязи, | ЗаказНаПроизводствоМатериалыИУслуги.КлючСвязиПродукция, | ЗаказНаПроизводствоМатериалыИУслуги.КлючСвязиЭтапы, | ЗаказНаПроизводствоМатериалыИУслуги.КлючСвязиСпецификация, | ЗаказНаПроизводствоМатериалыИУслуги.Запланировать, | ЗаказНаПроизводствоМатериалыИУслуги.СтатусУказанияСерий, | ЗаказНаПроизводствоМатериалыИУслуги.УказыватьСерии, | ЗаказНаПроизводствоМатериалыИУслуги.Серия, | ЗаказНаПроизводствоМатериалыИУслуги.КодСтроки, | ЗаказНаПроизводствоМатериалыИУслуги.СтатусУказанияСерийОтправитель, | ЗаказНаПроизводствоМатериалыИУслуги.СтатусУказанияСерийПолучатель, | ЗаказНаПроизводствоМатериалыИУслуги.Подразделение, | ЗаказНаПроизводствоМатериалыИУслуги.КлючСвязиЭтапыСтрока, | ЕСТЬNULL(АналогиВПроизводствеСрезПоследних.Аналог, ЗаказНаПроизводствоМатериалыИУслуги.Номенклатура) КАК Номенклатура, | ЕСТЬNULL(АналогиВПроизводствеСрезПоследних.ХарактеристикаАналога, ЗаказНаПроизводствоМатериалыИУслуги.Характеристика) КАК Характеристика, | ЕСТЬNULL(АналогиВПроизводствеСрезПоследних.УпаковкаАналога, ЗаказНаПроизводствоМатериалыИУслуги.Упаковка) КАК Упаковка, | ЕСТЬNULL(АналогиВПроизводствеСрезПоследних.КоличествоАналога, ЗаказНаПроизводствоМатериалыИУслуги.Количество) КАК Количество, | ЕСТЬNULL(АналогиВПроизводствеСрезПоследних.КоличествоУпаковокАналога, ЗаказНаПроизводствоМатериалыИУслуги.КоличествоУпаковок) КАК КоличествоУпаковок |ИЗ | Документ.ЗаказНаПроизводство.МатериалыИУслуги КАК ЗаказНаПроизводствоМатериалыИУслуги | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.АналогиВПроизводстве.СрезПоследних(&дата, ) КАК АналогиВПроизводствеСрезПоследних | ПО ЗаказНаПроизводствоМатериалыИУслуги.Номенклатура = АналогиВПроизводствеСрезПоследних.Материал |ГДЕ | ЗаказНаПроизводствоМатериалыИУслуги.Ссылка = &Ссылка"; Запрос.УстановитьПараметр("дата", ТекущаяДата()); Запрос.УстановитьПараметр("Ссылка",Объект.СсылкаНаОбъкт); |
|||
5
Рэйв
25.06.15
✎
09:43
|
(4)Составные типы помоему в вт не ходят
|
|||
6
Wefast
25.06.15
✎
09:44
|
В общем задача такова если попроще.
Есть мышка и клавиатура со спецификациями в ТЧ1 А есть их спецификации в ТЧ2 И связать получится только ключом. Я меняю номенклатуру в ТЧ2 и делаю подмену Но мне нужно понять спецификацию какой номенклатуры из ТЧ1 я изменил. |
|||
7
patria0muerte
25.06.15
✎
09:44
|
Для первого запроса:
1) Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц 2) Запрос помещаешь в ВТЗаказНаПроизводство. Во втором запросе ЗАпрос2 = Новый ЗАпрос; Запрос2.менеджерВременныхТаблиц = Запрос.МенеджерВременныхТаблиц; И в запросе2 уже обращаешься к нужной ВТ... А вообще чего ты в один запрос все не положишь? ТАм бы уже нужных ВТ наплодил, да по пакетам распихал бы... |
|||
8
Timon1405
25.06.15
✎
09:47
|
(5) +1 Если уж так нужен дальше "результат первого запроса", выберите в нем конце все поля из последней ВТ в запросе, у вам будет и результат и последняя ВТ в менеджере
|
|||
9
patria0muerte
25.06.15
✎
09:49
|
(4) Так ты сделай пакетами. Если по твоему примеру брать - то у тебя два пакета на выходе будет:
1) тот который "Результат первого запроса я использую еще в другом месте " 2) и то, что тебе нужно по сабжу А табличку свою корневую в ВТ прям в запросе положь |
|||
10
Wefast
25.06.15
✎
09:49
|
(5) Я же передаю Ключ и булево значение. Нет там составного типа данных.
(7) Т.е. в первом запросе я помещаю ее во временную таблицу. Пишу Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц Пишу перед вторым запросом Запрос2.менеджерВременныхТаблиц = Запрос.МенеджерВременныхТаблиц; И у меня во втором запросе становятся доступны все временные таблицы из первого запроса? А вот работать с несколькими пакетами мне не приходилось. |
|||
11
patria0muerte
25.06.15
✎
09:54
|
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ | ЗаказНаПроизводствоМатериалыИУслуги.Ссылка, | ЗаказНаПроизводствоМатериалыИУслуги.НомерСтроки, | ЗаказНаПроизводствоМатериалыИУслуги.Этап, | ЗаказНаПроизводствоМатериалыИУслуги.Склад, | ЗаказНаПроизводствоМатериалыИУслуги.СтатьяКалькуляции, | ВЫБОР | КОГДА АналогиВПроизводствеСрезПоследних.Аналог <> NULL | ТОГДА 0 | ИНАЧЕ ЗаказНаПроизводствоМатериалыИУслуги.ИспользуетсяАвтовыбор | КОНЕЦ КАК ИспользуетсяАвтовыбор, | ЗаказНаПроизводствоМатериалыИУслуги.СведенияАвтовыбора, | ЗаказНаПроизводствоМатериалыИУслуги.ПрименениеМатериала, | ЗаказНаПроизводствоМатериалыИУслуги.ПроизводитсяВПроцессе, | ЗаказНаПроизводствоМатериалыИУслуги.СпецификацияПолуфабриката, | ЗаказНаПроизводствоМатериалыИУслуги.ВариантОбеспечения, | ЗаказНаПроизводствоМатериалыИУслуги.ДатаПотребности, | ЗаказНаПроизводствоМатериалыИУслуги.ЗаказатьНаСклад, | ЗаказНаПроизводствоМатериалыИУслуги.КлючСвязи, | ЗаказНаПроизводствоМатериалыИУслуги.КлючСвязиПродукция, | ЗаказНаПроизводствоМатериалыИУслуги.КлючСвязиЭтапы, | ЗаказНаПроизводствоМатериалыИУслуги.КлючСвязиСпецификация, | ЗаказНаПроизводствоМатериалыИУслуги.Запланировать, | ЗаказНаПроизводствоМатериалыИУслуги.СтатусУказанияСерий, | ЗаказНаПроизводствоМатериалыИУслуги.УказыватьСерии, | ЗаказНаПроизводствоМатериалыИУслуги.Серия, | ЗаказНаПроизводствоМатериалыИУслуги.КодСтроки, | ЗаказНаПроизводствоМатериалыИУслуги.СтатусУказанияСерийОтправитель, | ЗаказНаПроизводствоМатериалыИУслуги.СтатусУказанияСерийПолучатель, | ЗаказНаПроизводствоМатериалыИУслуги.Подразделение, | ЗаказНаПроизводствоМатериалыИУслуги.КлючСвязиЭтапыСтрока, | ЕСТЬNULL(АналогиВПроизводствеСрезПоследних.Аналог, ЗаказНаПроизводствоМатериалыИУслуги.Номенклатура) КАК Номенклатура, | ЕСТЬNULL(АналогиВПроизводствеСрезПоследних.ХарактеристикаАналога, ЗаказНаПроизводствоМатериалыИУслуги.Характеристика) КАК Характеристика, | ЕСТЬNULL(АналогиВПроизводствеСрезПоследних.УпаковкаАналога, ЗаказНаПроизводствоМатериалыИУслуги.Упаковка) КАК Упаковка, | ЕСТЬNULL(АналогиВПроизводствеСрезПоследних.КоличествоАналога, ЗаказНаПроизводствоМатериалыИУслуги.Количество) КАК Количество, | ЕСТЬNULL(АналогиВПроизводствеСрезПоследних.КоличествоУпаковокАналога, ЗаказНаПроизводствоМатериалыИУслуги.КоличествоУпаковок) КАК КоличествоУпаковок | ПОМЕСТИТЬ ВТЗаказНаПроизводство |ИЗ | Документ.ЗаказНаПроизводство.МатериалыИУслуги КАК ЗаказНаПроизводствоМатериалыИУслуги | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.АналогиВПроизводстве.СрезПоследних(&дата, ) КАК АналогиВПроизводствеСрезПоследних | ПО ЗаказНаПроизводствоМатериалыИУслуги.Номенклатура = АналогиВПроизводствеСрезПоследних.Материал |ГДЕ | ЗаказНаПроизводствоМатериалыИУслуги.Ссылка = &Ссылка |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ * ИЗ ВТЗаказНаПроизводство |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ВТЗаказНаПроизводство.ИспользуетсяАвтовыбор, | ВТЗаказНаПроизводство.КлючСвязиПродукция |ИЗ | ВВТЗаказНаПроизводство КАК ВТЗаказНаПроизводство"; Запрос.УстановитьПараметр("дата", ТекущаяДата()); Запрос.УстановитьПараметр("Ссылка",Объект.СсылкаНаОбъкт); МассивРезультатовЗапроса = Запрос.ВыполнитьПакет(); РезультатЗапроса1 = МассивРезультатовЗапроса[1]; ///тут то, что у тебя в первом запросе РезультатЗапроса2 = МассивРезультатовЗапроса[2]; /// тут то, что искал по сабжу.. |
|||
12
Wefast
25.06.15
✎
09:58
|
(11) Спасибо.
|
|||
13
patria0muerte
25.06.15
✎
09:58
|
(10) Да, так и есть... но если тебе нужен потом будет еще первый запрос, то тебе нужно будет его из той ВТ еще запросом достать...
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |