Нужно получить данные из двух документов (не из табличных частей) поступление на расчетный счет и приходный кассовый ордер, реквизиты надо получить разные, реквизит дата одинаковый у обоих документов, как сделать это в одном запросе и упорядочить по дате
Как получить данные из разных таблиц, не связывая, а дополняя их
При выборке данных с помощью запросов бывает необходимо дополнить данные, получившиеся в результате выполнения одного запроса, данными другого запроса. Например, можно дополнить информацию из приходных накладных со структурой (Контрагент, Товар, Количество, Цена) данными из расходных накладных с такой же структурой.
Для этого в языке запросов существует возможность объединения нескольких запросов. При этом записи, полученные с помощью каждого из объединяемых запросов, собираются в один результат запроса. При объединении каждый запрос получает данные независимо, то есть у каждого из запросов – свое описание выбираемых полей (ВЫБРАТЬ), источников запроса (ИЗ), условий отбора (ГДЕ), полей группировки (СГРУППИРОВАТЬ ПО). Затем данные, получаемые в результате каждого запроса, объединяются, и уже над этим объединением выполняются такие операции, как упорядочивание результатов (УПОРЯДОЧИТЬ ПО) и расчет итогов (ИТОГИ ПО).
Для объединения запросов используется предложение ОБЪЕДИНИТЬ
Пример объединения:
ВЫБРАТЬ
Заказ.Ссылка.Клиент КАК Клиент,
Заказ.Товар КАК Товар,
СУММА(Заказ.Количество) КАК Заказано,
СУММА(0) КАК Продано
ИЗ
Документ.ЗаказТовара.Состав КАК Заказ
СГРУППИРОВАТЬ ПО
Заказ.Ссылка.Клиент,
Заказ.Товар
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
Накладная.Ссылка.Покупатель,
Накладная.Товар,
СУММА(0),
СУММА(Накладная.Количество)
ИЗ
Документ.РасходнаяНакладная.Состав КАК Накладная
СГРУППИРОВАТЬ ПО
Накладная.Ссылка.Покупатель,
Накладная.Товар
ИТОГИ ПО
ОБЩИЕ,
Клиент
Показать
В тексте запроса сначала описывается первый запрос, получающий информацию из документа ЗаказТовара, затем следуют ключевые слова ОБЪЕДИНИТЬ ВСЕ, после которых следует описание присоединяемого запроса, получающего информацию из документа РасходнаяНакладная. После этого описывается необходимость расчета итогов для результата объединения запросов.
Названия полей результата запроса описываются в списке полей выборки первого из объединяемых запросов. Поля выборки второго запроса сопоставляются с полями результата в соответствии с порядком их следования в списке полей выборки.
Поэтому объединяемые запросы должны иметь одинаковое количество полей в списке полей выборки. В случае, если поля выборки объединяемых запросов имеют разный тип, поля результата запроса будут иметь составной тип. Но в нашем случае поле выборки результата объединения Клиент имеет тип СправочникСсылка.Клиенты, так как поле Клиент документа ЗаказТовара и поле Покупатель документа РасходнаяНакладная из объединяемых запросов также принадлежат к этому типу.
В общем случае могут объединяться результаты выполнения сразу нескольких запросов.
По умолчанию при объединении запросов полностью одинаковые строки в результате запроса, сформированные разными запросами, заменяются одной. Если требуется, чтобы были оставлены разные строки, необходимо указать ключевое слово ВСЕ.
В общем случае при объединении в запросе результатов нескольких запросов следует использовать конструкцию ОБЪЕДИНИТЬ ВСЕ, а не ОБЪЕДИНИТЬ, поскольку во втором варианте при объединении запросов полностью одинаковые строки заменяются одной, на что затрачивается дополнительное время, даже в случаях, когда одинаковых строк в запросах заведомо быть не может.
(2)Да, наверное объединить результаты запросов без сопоставления колонок и упорядочить потом по единому реквизиту дата, попробовал, с ходу не получилось подскажите пожалуйста
ВЫБРАТЬ
ЗаказКлиента.Ссылка КАК Ссылка,
ЗаказКлиента.Дата КАК Дата
ПОМЕСТИТЬ ВТ
ИЗ
Документ.ЗаказКлиента КАК ЗаказКлиента
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
ЗаказПоставщику.Ссылка,
ЗаказПоставщику.Дата
ИЗ
Документ.ЗаказПоставщику КАК ЗаказПоставщику
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ВТ.Ссылка КАК Ссылка,
ВТ.Дата КАК Дата
ИЗ
ВТ КАК ВТ
УПОРЯДОЧИТЬ ПО
Дата
(4)А вариант получить данные отдельно в двух запросах и полученные таблицы значений объединить и потом упорядочить по дате по моему проще, только это не оптимально наверное
(3) Да есть же вкладка объединения прямо в Конструкторе, там же, где псевдонимы.
Тут самая сложность в том, что набор полей должен быть единый в результирующей таблице. Поэтому те поля, которые есть в обоих объединяемых таблицах состыкуются автоматом, а вот с уникальными полями надо будет немного повозиться (добить нулями или NULL там, где из нет).
Как получить данные из разных таблиц, не связывая, а дополняя их
При выборке данных с помощью запросов бывает необходимо дополнить данные, получившиеся в результате выполнения одного запроса, данными другого запроса. Например, можно дополнить информацию из приходных накладных со структурой (Контрагент, Товар, Количество, Цена) данными из расходных накладных с такой же структурой.
Для этого в языке запросов существует возможность объединения нескольких запросов. При этом записи, полученные с помощью каждого из объединяемых запросов, собираются в один результат запроса. При объединении каждый запрос получает данные независимо, то есть у каждого из запросов – свое описание выбираемых полей (ВЫБРАТЬ), источников запроса (ИЗ), условий отбора (ГДЕ), полей группировки (СГРУППИРОВАТЬ ПО). Затем данные, получаемые в результате каждого запроса, объединяются, и уже над этим объединением выполняются такие операции, как упорядочивание результатов (УПОРЯДОЧИТЬ ПО) и расчет итогов (ИТОГИ ПО).
Для объединения запросов используется предложение ОБЪЕДИНИТЬ
Пример объединения:
ВЫБРАТЬ
Заказ.Ссылка.Клиент КАК Клиент,
Заказ.Товар КАК Товар,
СУММА(Заказ.Количество) КАК Заказано,
СУММА(0) КАК Продано
ИЗ
Документ.ЗаказТовара.Состав КАК Заказ
СГРУППИРОВАТЬ ПО
Заказ.Ссылка.Клиент,
Заказ.Товар
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
Накладная.Ссылка.Покупатель,
Накладная.Товар,
СУММА(0),
СУММА(Накладная.Количество)
ИЗ
Документ.РасходнаяНакладная.Состав КАК Накладная
СГРУППИРОВАТЬ ПО
Накладная.Ссылка.Покупатель,
Накладная.Товар
ИТОГИ ПО
ОБЩИЕ,
Клиент
Показать
В тексте запроса сначала описывается первый запрос, получающий информацию из документа ЗаказТовара, затем следуют ключевые слова ОБЪЕДИНИТЬ ВСЕ, после которых следует описание присоединяемого запроса, получающего информацию из документа РасходнаяНакладная. После этого описывается необходимость расчета итогов для результата объединения запросов.
Названия полей результата запроса описываются в списке полей выборки первого из объединяемых запросов. Поля выборки второго запроса сопоставляются с полями результата в соответствии с порядком их следования в списке полей выборки.
Поэтому объединяемые запросы должны иметь одинаковое количество полей в списке полей выборки. В случае, если поля выборки объединяемых запросов имеют разный тип, поля результата запроса будут иметь составной тип. Но в нашем случае поле выборки результата объединения Клиент имеет тип СправочникСсылка.Клиенты, так как поле Клиент документа ЗаказТовара и поле Покупатель документа РасходнаяНакладная из объединяемых запросов также принадлежат к этому типу.
В общем случае могут объединяться результаты выполнения сразу нескольких запросов.
По умолчанию при объединении запросов полностью одинаковые строки в результате запроса, сформированные разными запросами, заменяются одной. Если требуется, чтобы были оставлены разные строки, необходимо указать ключевое слово ВСЕ.
В общем случае при объединении в запросе результатов нескольких запросов следует использовать конструкцию ОБЪЕДИНИТЬ ВСЕ, а не ОБЪЕДИНИТЬ, поскольку во втором варианте при объединении запросов полностью одинаковые строки заменяются одной, на что затрачивается дополнительное время, даже в случаях, когда одинаковых строк в запросах заведомо быть не может.
(12)Так будет работать если из каждого документа выбираешь одинаковое количество реквизитов, расположенные в обоих частях запроса в одинаковом порядке и с одинаковым типом значения (можно и разные типы, тогда тип данных станет составным)