|
v7: Вывод данных из двух запросов | ☑ | ||
---|---|---|---|---|
0
_Alex1984
06.04.16
✎
07:13
|
Добрый день!
Подскажите пожалуйста, как мне вывести данные в таблицу из двух документов запросом. _________________________________________________________________________________________________ Агент | Количество, кг| Сумма, руб. |Всего с НДС, руб.|Реализация(Количество) ИВАНОВ ИВАН ИВАНОВИЧ | 122.550 | 15524.24 |15547.85 | ?????? ________________________|_____________________|_________________|_________________|_______________ Есть такой код, который выводит данные в таблицу запросом из документа Поступление Товаров, а как мне плюс к этому запросу добавить другой запрос который будет брать данные из Документа Реализация Продукции и выводить в столбец рядом. Т.е. в таблице отображается информация сколько вернулось товара (Количество, Сумма, ...), а еще нужна информация сколько было реализовано этим агентом товара? Надеюсь понятно объяснил). Заранее спасибо за ответ! //******************************************* // Процедура генерации запроса ВозвратМенеджерКонтрагент. // Процедура ВозвратМенеджерКонтрагент() Перем Запрос, ТекстЗапроса, Таб; ПодготовитьУсловия(); //Создание объекта типа Запрос Запрос = СоздатьОбъект("Запрос"); ТекстЗапроса = "//{{ЗАПРОС(ВозвратМенеджерКонтрагент) |Период с ВыбНачПериода по ВыбКонПериода; |Договор = Документ.ПоступлениеТоваров.Договор.Владелец; |ВидДоговора = Документ.ПоступлениеТоваров.Договор.ВидДоговора; |Количество = Документ.ПоступлениеТоваров.Количество; |ЕдиницаИзмерения = Документ.ПоступлениеТоваров.ЕдиницаИзмерения; |Сумма = Документ.ПоступлениеТоваров.Сумма; |Всего = Документ.ПоступлениеТоваров.Всего; |ПричинаВозврата = Документ.ПоступлениеТоваров.ПричинаВозврата; |Агент = Документ.ПоступлениеТоваров.Договор.Владелец.Агент; |Товар = Документ.ПоступлениеТоваров.Товар; |ТоварНоменкл = Документ.ПоступлениеТоваров.Товар;"; Если флГрНоменклатуру=1 Тогда ТекстЗапроса=ТекстЗапроса+" |ВозврПродукция = Документ.ПоступлениеТоваров.ВозврПродукция.Родитель; |"; Иначе ТекстЗапроса=ТекстЗапроса+" |ВозврПродукция = Документ.ПоступлениеТоваров.ВозврПродукция; |"; КонецЕсли; ТекстЗапроса=ТекстЗапроса+" |Функция ФСумма = Сумма(Сумма); |Функция ВсегоСумма = Сумма(Всего); |Функция КоличествоСумма = Сумма(глПолучитьБазовоеКоличество(Количество,ЕдиницаИзмерения)); |Группировка Агент без групп; |Группировка Договор без групп; |Группировка Товар без групп; |Группировка ПричинаВозврата без групп; |Группировка ВозврПродукция без групп;"+УслЗапроса; ; // Если ошибка в запросе, то выход из процедуры Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда Возврат; КонецЕсли; // Подготовка к заполнению выходных форм данными запроса Таб = СоздатьОбъект("Таблица"); Таб.ИсходнаяТаблица("ВозвратМенеджерКонтрагент"); // Заполнение полей "Заголовок" Таб.ВывестиСекцию("Заголовок"); Состояние("Заполнение выходной таблицы..."); Таб.Опции(0, 0, Таб.ВысотаТаблицы(), 0); Пока Запрос.Группировка(1) = 1 Цикл // Заполнение полей Агент Таб.ВывестиСекцию("Агент"); Пока Запрос.Группировка(2) = 1 Цикл // Заполнение полей Договор Таб.ВывестиСекцию("Договор"); Пока Запрос.Группировка(3) = 1 Цикл // Заполнение полей Товар Таб.ВывестиСекцию("Товар"); Пока Запрос.Группировка(4) = 1 Цикл // Заполнение полей ПричинаВозврата Таб.ВывестиСекцию("ПричинаВозврата"); Пока Запрос.Группировка(5) = 1 Цикл Таб.ВывестиСекцию("ВозврПродукция"); КонецЦикла; КонецЦикла; КонецЦикла; КонецЦикла; КонецЦикла; // Заполнение полей "Итого" Таб.ВывестиСекцию("Итого"); // Вывод заполненной формы Таб.ТолькоПросмотр(1); Таб.Показать("ВозвратМенеджерКонтрагент", ""); КонецПроцедуры //******************************************* Мне нужно, добавить к этой таблице столбец в котором будет информация браться из Документа РеализацияПродукции Типа вот так: "//{{ЗАПРОС(НовыйЗапрос) |Период с ВыбНачПериода по ВыбКонПериода; |Контрагент = Документ.РеализацияПродукции.Контрагент; |Количество = Документ.РеализацияПродукции.Количество; |Функция КоличестСумма = Сумма(Количество); |Группировка Контрагент; |"//}}ЗАПРОС |
|||
1
gSha
06.04.16
✎
07:19
|
вообще даже в 7 ке не очень правильно брать данные из документов - все же лучше из регистров.
потом представь что ты умножаешь две таблицы поступлений и реализаций и прикинь что на выходе получится и как это выводить.. поэтому обычно данные собирались в таблицу значений и уже оттуда выводились в таких случаях. |
|||
2
gSha
06.04.16
✎
07:21
|
вообще в 7 ке есть метод позиционирования внутри запроса .. так же можешь в нужный момент в цикле первого запроса гулять по второму - что там со скоростью будет не помню.
|
|||
3
VladZ
06.04.16
✎
07:28
|
Через запятую
|Контрагент = Документ.ПоступлениеТоваров.Договор.Владелец, Документ.РеализацияПродукции.Контрагент; |КоличествоПоступление = Документ.ПоступлениеТоваров.Количество; |КоличествоРеализация = Документ.РеализацияПродукции.Количество; и т.д. |
|||
4
varelchik
06.04.16
✎
09:47
|
можешь сделать по аналогии как я выбираю контрагента из Расходных и Приходных:
|select |t.idd IDD, |sum(t.стоимость)/sum(t.остаток)*"+Курс+" Цена |from( |select |$Товары.IDD IDD, |COALESCE($РасходнаяНакладная.Контрагент,$ПриходнаяНакладная.Контрагент) Контрагент, |$Рег.Стоимость Стоимость, |$Рег.ОстатокТовара Остаток |from $Регистр.ПартииТоваров Рег (nolock) |inner join _1sjourn j (nolock) on j.iddoc=Рег.iddoc |inner join $Справочник.Номенклатура Товары (nolock) on Товары.id=$Рег.Товар |left join $Документ.РасходнаяНакладная РасходнаяНакладная (nolock) on РасходнаяНакладная.iddoc=Рег.iddoc |left join $Документ.ПриходнаяНакладная ПриходнаяНакладная(nolock) on ПриходнаяНакладная.iddoc=Рег.iddoc |inner join _1sjourn j1 (nolock) on j1.iddoc=right($Рег.ПрихДокумент,9) |WHERE |j.date_time_iddoc BETWEEN :НачДата AND :КонДата~ |and |Рег.debkred=1 |and |j.iddocdef in($ВидДокумента.РасходнаяНакладная,$ВидДокумента.ПриходнаяНакладная) |
|||
5
_Alex1984
06.04.16
✎
10:46
|
Спасибо за советы.
Пробовал способ VladZ, но результатов не принес. Возможно будет работать в сочетании со способом gSha позиционирование. |
|||
6
Злопчинский
06.04.16
✎
12:02
|
(0) не надо изобретать, юзай в тис "Отчет по продажам"
ты там что, задания припоступлении на работу решаешь? или велосипед изобретаешь? |
|||
7
Mikeware
06.04.16
✎
12:11
|
(5) можешь еще попробовать писать через строчку. Или сменить шрифт в конфигураторе...
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |