Получение данных из двух разных документов запросом

1. Дон Кихот 16.09.19 10:27 Сейчас в теме
Нужно получить данные из двух документов (не из табличных частей) поступление на расчетный счет и приходный кассовый ордер, реквизиты надо получить разные, реквизит дата одинаковый у обоих документов, как сделать это в одном запросе и упорядочить по дате
По теме из базы знаний
Найденные решения
10. Fe9_min 50 16.09.19 11:28 Сейчас в теме
(8)
Ответ на вопрос + сама книга замечательная (нужен логин/пароль итс):
https://its.1c.ru/db/pubqlang#content:50:hdoc
Ph4nt0m3r; NanotekR; +2 Ответить
11. Дон Кихот 16.09.19 15:28 Сейчас в теме
Как получить данные из разных таблиц, не связывая, а дополняя их
При выборке данных с помощью запросов бывает необходимо дополнить данные, получившиеся в результате выполнения одного запроса, данными другого запроса. Например, можно дополнить информацию из приходных накладных со структурой (Контрагент, Товар, Количество, Цена) данными из расходных накладных с такой же структурой.

Для этого в языке запросов существует возможность объединения нескольких запросов. При этом записи, полученные с помощью каждого из объединяемых запросов, собираются в один результат запроса. При объединении каждый запрос получает данные независимо, то есть у каждого из запросов – свое описание выбираемых полей (ВЫБРАТЬ), источников запроса (ИЗ), условий отбора (ГДЕ), полей группировки (СГРУППИРОВАТЬ ПО). Затем данные, получаемые в результате каждого запроса, объединяются, и уже над этим объединением выполняются такие операции, как упорядочивание результатов (УПОРЯДОЧИТЬ ПО) и расчет итогов (ИТОГИ ПО).

Для объединения запросов используется предложение ОБЪЕДИНИТЬ

Пример объединения:

ВЫБРАТЬ
Заказ.Ссылка.Клиент КАК Клиент,
Заказ.Товар КАК Товар,
СУММА(Заказ.Количество) КАК Заказано,
СУММА(0) КАК Продано
ИЗ
Документ.ЗаказТовара.Состав КАК Заказ
СГРУППИРОВАТЬ ПО
Заказ.Ссылка.Клиент,
Заказ.Товар 

ОБЪЕДИНИТЬ ВСЕ 

ВЫБРАТЬ
Накладная.Ссылка.Покупатель,
Накладная.Товар,
СУММА(0),
СУММА(Накладная.Количество)
ИЗ
Документ.РасходнаяНакладная.Состав КАК Накладная
СГРУППИРОВАТЬ ПО
Накладная.Ссылка.Покупатель,
Накладная.Товар 

ИТОГИ ПО

ОБЩИЕ,
Клиент
Показать


В тексте запроса сначала описывается первый запрос, получающий информацию из документа ЗаказТовара, затем следуют ключевые слова ОБЪЕДИНИТЬ ВСЕ, после которых следует описание присоединяемого запроса, получающего информацию из документа РасходнаяНакладная. После этого описывается необходимость расчета итогов для результата объединения запросов.

Названия полей результата запроса описываются в списке полей выборки первого из объединяемых запросов. Поля выборки второго запроса сопоставляются с полями результата в соответствии с порядком их следования в списке полей выборки.

Поэтому объединяемые запросы должны иметь одинаковое количество полей в списке полей выборки. В случае, если поля выборки объединяемых запросов имеют разный тип, поля результата запроса будут иметь составной тип. Но в нашем случае поле выборки результата объединения Клиент имеет тип СправочникСсылка.Клиенты, так как поле Клиент документа ЗаказТовара и поле Покупатель документа РасходнаяНакладная из объединяемых запросов также принадлежат к этому типу.


В общем случае могут объединяться результаты выполнения сразу нескольких запросов.

По умолчанию при объединении запросов полностью одинаковые строки в результате запроса, сформированные разными запросами, заменяются одной. Если требуется, чтобы были оставлены разные строки, необходимо указать ключевое слово ВСЕ.

В общем случае при объединении в запросе результатов нескольких запросов следует использовать конструкцию ОБЪЕДИНИТЬ ВСЕ, а не ОБЪЕДИНИТЬ, поскольку во втором варианте при объединении запросов полностью одинаковые строки заменяются одной, на что затрачивается дополнительное время, даже в случаях, когда одинаковых строк в запросах заведомо быть не может.
Ph4nt0m3r; +1 Ответить
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. DmitriyPopow 33 16.09.19 10:30 Сейчас в теме
3. Дон Кихот 16.09.19 10:41 Сейчас в теме
(2)Да, наверное объединить результаты запросов без сопоставления колонок и упорядочить потом по единому реквизиту дата, попробовал, с ходу не получилось подскажите пожалуйста
4. Den75Ch 16.09.19 10:42 Сейчас в теме
(3) а что не получилось? какой запрос и его результат?
5. Дон Кихот 16.09.19 10:51 Сейчас в теме
(4)
Запрос.Текст = 
		"ВЫБРАТЬ
		|	ПоступлениеНаРасчетныйСчет.Дата,
		|	ПоступлениеНаРасчетныйСчет.НомерВходящегоДокумента,
		|	ПоступлениеНаРасчетныйСчет.ДатаВходящегоДокумента,
		|	ПоступлениеНаРасчетныйСчет.СуммаДокумента,
		|	ПоступлениеНаРасчетныйСчет.ДоговорКонтрагента,
		|	ПоступлениеНаРасчетныйСчет.Контрагент
		|ИЗ
		|	Документ.ПоступлениеНаРасчетныйСчет КАК ПоступлениеНаРасчетныйСчет
		|ГДЕ
		|	ПоступлениеНаРасчетныйСчет.Дата МЕЖДУ &ДатаНач И &ДатаКон
		|	И ПоступлениеНаРасчетныйСчет.Организация = &Организация
		|	И ПоступлениеНаРасчетныйСчет.СтатьяДвиженияДенежныхСредств = &СтатьяДвиженияДенежныхСредств
		|;
		|
		|////////////////////////////////////////////////////////////­////////////////////
		|ВЫБРАТЬ
		|	ПриходныйКассовыйОрдер.Дата,
		|	ПриходныйКассовыйОрдер.Номер,
		|	ПриходныйКассовыйОрдер.СуммаДокумента
		|ИЗ
		|	Документ.ПриходныйКассовыйОрдер КАК ПриходныйКассовыйОрдер";
Показать

Искал возможность конструктором просто объединить два запроса и упорядочить строки по одинаковому реквизиту ДАТА, не получается найти как это сделать
7. DmitriyPopow 33 16.09.19 11:14 Сейчас в теме
(5)
ВЫБРАТЬ
	ЗаказКлиента.Ссылка КАК Ссылка,
	ЗаказКлиента.Дата КАК Дата
ПОМЕСТИТЬ ВТ
ИЗ
	Документ.ЗаказКлиента КАК ЗаказКлиента

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
	ЗаказПоставщику.Ссылка,
	ЗаказПоставщику.Дата
ИЗ
	Документ.ЗаказПоставщику КАК ЗаказПоставщику
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	ВТ.Ссылка КАК Ссылка,
	ВТ.Дата КАК Дата
ИЗ
	ВТ КАК ВТ

УПОРЯДОЧИТЬ ПО
	Дата
Показать


https://yadi.sk/i/2GLcYO_02HdecA
8. Дон Кихот 16.09.19 11:17 Сейчас в теме
(7) Получается все что идет после
ОБЪЕДИНИТЬ ВСЕ
тоже будет помещено в ВТ?
9. DmitriyPopow 33 16.09.19 11:18 Сейчас в теме
(8)конечно. поля сопоставляете и эти поля пойдут в врем табл
10. Fe9_min 50 16.09.19 11:28 Сейчас в теме
(8)
Ответ на вопрос + сама книга замечательная (нужен логин/пароль итс):
https://its.1c.ru/db/pubqlang#content:50:hdoc
Ph4nt0m3r; NanotekR; +2 Ответить
6. Дон Кихот 16.09.19 11:04 Сейчас в теме
(4)А вариант получить данные отдельно в двух запросах и полученные таблицы значений объединить и потом упорядочить по дате по моему проще, только это не оптимально наверное
13. Seraph6 17.09.19 14:09 Сейчас в теме
(3) Да есть же вкладка объединения прямо в Конструкторе, там же, где псевдонимы.
Тут самая сложность в том, что набор полей должен быть единый в результирующей таблице. Поэтому те поля, которые есть в обоих объединяемых таблицах состыкуются автоматом, а вот с уникальными полями надо будет немного повозиться (добить нулями или NULL там, где из нет).
11. Дон Кихот 16.09.19 15:28 Сейчас в теме
Как получить данные из разных таблиц, не связывая, а дополняя их
При выборке данных с помощью запросов бывает необходимо дополнить данные, получившиеся в результате выполнения одного запроса, данными другого запроса. Например, можно дополнить информацию из приходных накладных со структурой (Контрагент, Товар, Количество, Цена) данными из расходных накладных с такой же структурой.

Для этого в языке запросов существует возможность объединения нескольких запросов. При этом записи, полученные с помощью каждого из объединяемых запросов, собираются в один результат запроса. При объединении каждый запрос получает данные независимо, то есть у каждого из запросов – свое описание выбираемых полей (ВЫБРАТЬ), источников запроса (ИЗ), условий отбора (ГДЕ), полей группировки (СГРУППИРОВАТЬ ПО). Затем данные, получаемые в результате каждого запроса, объединяются, и уже над этим объединением выполняются такие операции, как упорядочивание результатов (УПОРЯДОЧИТЬ ПО) и расчет итогов (ИТОГИ ПО).

Для объединения запросов используется предложение ОБЪЕДИНИТЬ

Пример объединения:

ВЫБРАТЬ
Заказ.Ссылка.Клиент КАК Клиент,
Заказ.Товар КАК Товар,
СУММА(Заказ.Количество) КАК Заказано,
СУММА(0) КАК Продано
ИЗ
Документ.ЗаказТовара.Состав КАК Заказ
СГРУППИРОВАТЬ ПО
Заказ.Ссылка.Клиент,
Заказ.Товар 

ОБЪЕДИНИТЬ ВСЕ 

ВЫБРАТЬ
Накладная.Ссылка.Покупатель,
Накладная.Товар,
СУММА(0),
СУММА(Накладная.Количество)
ИЗ
Документ.РасходнаяНакладная.Состав КАК Накладная
СГРУППИРОВАТЬ ПО
Накладная.Ссылка.Покупатель,
Накладная.Товар 

ИТОГИ ПО

ОБЩИЕ,
Клиент
Показать


В тексте запроса сначала описывается первый запрос, получающий информацию из документа ЗаказТовара, затем следуют ключевые слова ОБЪЕДИНИТЬ ВСЕ, после которых следует описание присоединяемого запроса, получающего информацию из документа РасходнаяНакладная. После этого описывается необходимость расчета итогов для результата объединения запросов.

Названия полей результата запроса описываются в списке полей выборки первого из объединяемых запросов. Поля выборки второго запроса сопоставляются с полями результата в соответствии с порядком их следования в списке полей выборки.

Поэтому объединяемые запросы должны иметь одинаковое количество полей в списке полей выборки. В случае, если поля выборки объединяемых запросов имеют разный тип, поля результата запроса будут иметь составной тип. Но в нашем случае поле выборки результата объединения Клиент имеет тип СправочникСсылка.Клиенты, так как поле Клиент документа ЗаказТовара и поле Покупатель документа РасходнаяНакладная из объединяемых запросов также принадлежат к этому типу.


В общем случае могут объединяться результаты выполнения сразу нескольких запросов.

По умолчанию при объединении запросов полностью одинаковые строки в результате запроса, сформированные разными запросами, заменяются одной. Если требуется, чтобы были оставлены разные строки, необходимо указать ключевое слово ВСЕ.

В общем случае при объединении в запросе результатов нескольких запросов следует использовать конструкцию ОБЪЕДИНИТЬ ВСЕ, а не ОБЪЕДИНИТЬ, поскольку во втором варианте при объединении запросов полностью одинаковые строки заменяются одной, на что затрачивается дополнительное время, даже в случаях, когда одинаковых строк в запросах заведомо быть не может.
Ph4nt0m3r; +1 Ответить
12. DrZombi 304 17.09.19 07:52 Сейчас в теме
Просто, выполняешь запрос

ВЫБРАТЬ
Заказ.Ссылка
ИЗ
Документ.ЗаказТовара.Состав КАК Заказ

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
Накладная.Ссылка
ИЗ
Документ.РасходнаяНакладная.Состав КАК Накладная
14. Дон Кихот 18.09.19 08:30 Сейчас в теме
(12)Так будет работать если из каждого документа выбираешь одинаковое количество реквизитов, расположенные в обоих частях запроса в одинаковом порядке и с одинаковым типом значения (можно и разные типы, тогда тип данных станет составным)
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот