Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
18 сен 2021, 01:22

Объединение запросов

Автор JOG, 15 ноя 2016, 21:20

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

JOG

В очередной раз прошу помощи. Вопрос наверное банален и должен решаться на счет раз, но нет. Итак есть документ с ТЧ. Нужно на печать вывести макет в котором есть реквизиты этого документа, табличная часть, этого документа и реквизиты другого документа.
С первой задачей справился. Как вывести реквизиты другого документа никак не разберусь. Ни то объединять надо, ни то через пакеты запросов. Но тем не менее ни так ни так не выходит.
В документе Касса:
1.
2.

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

В результате:

Теперь в эту печатную форму нужно добавить 2 реквизита из Документа.Залог ( Это Клиент и СуммаКредита.Клиент в Наименование, а СуммаКредита в Расход). Как это правильно делается объединением или через соединение? Делаю через объединение, но вылезают ошибки содержания, что нельзя добавить виртуальную таблицу т.к. у второго документа нет ТЧ.
Или всё таки нужно сначала сделать запрос 1 к таб части Касса, запрос 2 к реквизитам Кассы и 3 запрос к документу Залог? :dfbsdfbsdf:

JOG


"ВЫБРАТЬ
| Касса.РасходПриход.(
| ПриходНаименование,
| СуммаПриход,
| РасходНаименование,
| СуммаРасход
| ),
| Касса.Дата КАК Дата,
| Касса.НачальноеСальдо,
| Касса.СуммаПриходИтог,
| Касса.СуммаРасходИтог,
| Залог.Клиент,
| Залог.СуммаКредита
|ИЗ
| Документ.Касса КАК Касса
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.Залог КАК Залог
| ПО Касса.РасходПриход.РасходНаименование = Залог.Клиент
|ГДЕ
| Касса.Ссылка В(&Ссылка)";

Написал вот такой запрос, но выводится всё из документа Касса. Кто-нибудь может подсказать как решить вопрос?

DmitriyF

Цитата: JOG от 16 ноя 2016, 14:35

"ВЫБРАТЬ
| Касса.РасходПриход.(
| ПриходНаименование,
| СуммаПриход,
| РасходНаименование,
| СуммаРасход
| ),
| Касса.Дата КАК Дата,
| Касса.НачальноеСальдо,
| Касса.СуммаПриходИтог,
| Касса.СуммаРасходИтог,
| Залог.Клиент,
| Залог.СуммаКредита
|ИЗ
| Документ.Касса КАК Касса
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.Залог КАК Залог
| ПО Касса.РасходПриход.РасходНаименование = Залог.Клиент
|ГДЕ
| Касса.Ссылка В(&Ссылка)";

Написал вот такой запрос, но выводится всё из документа Касса. Кто-нибудь может подсказать как решить вопрос?
Нормальное сопоставление Строка и Ссылка на Клиента если не ошибаюсь! Думаю вам надо подумать и изменить структуру хранения данных. А если по делу то лучше выбрать 3 раза, положить в виртуальные таблицы, а потом уже из них выбрать требуемые данные.

JOG


ВЫБРАТЬ
| Касса.Дата КАК Дата,
| Касса.НачальноеСальдо,
| Касса.СуммаПриходИтог,
| Касса.СуммаРасходИтог,
| Касса.Ссылка
|ПОМЕСТИТЬ ОснЧастьКасса
|ИЗ
| Документ.Касса КАК Касса
|ГДЕ
| Касса.Ссылка В(&Ссылка)
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| КассаРасходПриход.ПриходНаименование,
| КассаРасходПриход.СуммаПриход,
| КассаРасходПриход.РасходНаименование,
| КассаРасходПриход.СуммаРасход,
| КассаРасходПриход.Ссылка
|ПОМЕСТИТЬ ТабЧастьКасса
|ИЗ
| Документ.Касса.РасходПриход КАК КассаРасходПриход
|ГДЕ
| КассаРасходПриход.Ссылка В(&Ссылка)
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ОснЧастьКасса.Дата,
| ОснЧастьКасса.НачальноеСальдо,
| ОснЧастьКасса.СуммаПриходИтог,
| ОснЧастьКасса.СуммаРасходИтог,
| ТабЧастьКасса.ПриходНаименование,
| ЕСТЬNULL(ТабЧастьКасса.СуммаПриход, 0) КАК СуммаПриход,
| ТабЧастьКасса.РасходНаименование,
| ЕСТЬNULL(ТабЧастьКасса.СуммаРасход, 0) КАК СуммаРасход,
| ОснЧастьКасса.Ссылка
|ИЗ
| ОснЧастьКасса КАК ОснЧастьКасса
| ЛЕВОЕ СОЕДИНЕНИЕ ТабЧастьКасса КАК ТабЧастьКасса
| ПО ОснЧастьКасса.Ссылка = ТабЧастьКасса.Ссылка

Попробовал так. В итоге выводит

А как в одну табличку сложить? Различные объединения не дают эффекта. Причем сколько строк в таб части документа, столько и табличек выводится

DmitriyF

Цитата: JOG от 16 ноя 2016, 16:07

ВЫБРАТЬ
| Касса.Дата КАК Дата,
| Касса.НачальноеСальдо,
| Касса.СуммаПриходИтог,
| Касса.СуммаРасходИтог,
| Касса.Ссылка
|ПОМЕСТИТЬ ОснЧастьКасса
|ИЗ
| Документ.Касса КАК Касса
|ГДЕ
| Касса.Ссылка В(&Ссылка)
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| КассаРасходПриход.ПриходНаименование,
| КассаРасходПриход.СуммаПриход,
| КассаРасходПриход.РасходНаименование,
| КассаРасходПриход.СуммаРасход,
| КассаРасходПриход.Ссылка
|ПОМЕСТИТЬ ТабЧастьКасса
|ИЗ
| Документ.Касса.РасходПриход КАК КассаРасходПриход
|ГДЕ
| КассаРасходПриход.Ссылка В(&Ссылка)
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ОснЧастьКасса.Дата,
| ОснЧастьКасса.НачальноеСальдо,
| ОснЧастьКасса.СуммаПриходИтог,
| ОснЧастьКасса.СуммаРасходИтог,
| ТабЧастьКасса.ПриходНаименование,
| ЕСТЬNULL(ТабЧастьКасса.СуммаПриход, 0) КАК СуммаПриход,
| ТабЧастьКасса.РасходНаименование,
| ЕСТЬNULL(ТабЧастьКасса.СуммаРасход, 0) КАК СуммаРасход,
| ОснЧастьКасса.Ссылка
|ИЗ
| ОснЧастьКасса КАК ОснЧастьКасса
| ЛЕВОЕ СОЕДИНЕНИЕ ТабЧастьКасса КАК ТабЧастьКасса
| ПО ОснЧастьКасса.Ссылка = ТабЧастьКасса.Ссылка

Попробовал так. В итоге выводит

А как в одну табличку сложить? Различные объединения не дают эффекта. Причем сколько строк в таб части документа, столько и табличек выводится
Так смотри слева будут виртуальные таблицы. А вообще почитай ка как строятся запросы. Без практики все равно не научиться, но для практики нужна теоррия)

JOG

Почитал, попрактиковался. Путём плясок с бубном и методом "попробуем так" добился чтобы табличная часть документа Касса выводилась в одной таблице и даже из документа залог смог достать и клиента и сумму кредита. Но не тут то было. Теперь если, к примеру, в этот день был не один клиент, а 2 или 3, то на печать в документе касса выводится соответственно 1 или 2 или 3 таблички. Где ТабЧасть от Кассы вкучу, так и надо, а вот каждый клиент в отдельной. Код запроса такой (как выяснилось не надо было ничего объединять и соединять, а я, начитавшись теории, как только ни пробовал кроме "ничего не делать":) )

ВЫБРАТЬ
| Касса.Дата,
| Касса.НачальноеСальдо,
| Касса.СуммаПриходИтог,
| Касса.СуммаРасходИтог,
| Касса.РасходПриход.(
| ПриходНаименование,
| СуммаПриход,
| РасходНаименование,
| СуммаРасход
| ),
| Залог.Клиент,
| Залог.СуммаКредита
|ИЗ
| Документ.Касса КАК Касса,
| Документ.Залог КАК Залог
|ГДЕ
| Касса.Ссылка В(&Ссылка)

Так то верно, вывожу всё это дело через цикл Пока Выборка.Следующий, поэтому и выбирается каждый документ из Залога в этот день.

Несколько пакетов запросов делать (к табчасти, к основной части и к залогу) работает, но опять же выводится столько табличек сколько строк в ТЧ+сколько клиентов в залоге.

Дайте совет как сделать по уму, в одну кучу, а не так чтобы каждый клиент в новой табличке?


JOG

Вдруг кому пригодится. Вопрос решил сам путём отдельного запроса к Документу Касса, а потом совершенно отдельный запрос к Документу залог. И через макет печати всё успешно вывелось :zebzdr:

Теги:

Похожие темы (5)

Рейтинг@Mail.ru Rambler's Top100

Поиск