1С Запрос из нескольких документов

1. halker 10.08.17 11:54 Сейчас в теме
Всем привет!

Возникла вроде простая проблема, которую почему-то не удается решить самостоятельно.

Делаю отчет в СКД: движение денежных средств. Но застрял уже на уровне запроса.
Есть справочник СтатьиЗатрат, документы ВыпискаБанка, АвансовыйОтчет.
В каждом из документов есть 2 реквизита, по которым отбираются конкретные документы: дата и проект. И табличная часть с колонками СЗ (СтатьяЗатрат - ссылка на справочник) и Сумма (число).
Хочу в отчете собрать и просуммировать данные по статьям затрат.

Вот что нужно:



Как я делаю: Беру статью затрат из справочника и присоединяю слева документ.

ВЫБРАТЬ
	СтатьиЗатрат.Ссылка КАК Статья_справ,
	ВыпискаБанкаРасшифровкаПлатежа.СтатьяДвижения,
	ВыпискаБанкаРасшифровкаПлатежа.СуммаПриход,
	ВыпискаБанкаРасшифровкаПлатежа.СуммаРасход, 
	АвансовыйОтчетРасшифровкаПлатежа.СуммаПринятая,
	АвансовыйОтчетРасшифровкаПлатежа.СтатьяДвижения КАК СтатьяДвижения1
ИЗ
	Справочник.СтатьиЗатрат КАК СтатьиЗатрат
		ЛЕВОЕ СОЕДИНЕНИЕ Документ.ВыпискаБанка.РасшифровкаПлатежа КАК ВыпискаБанкаРасшифровкаПлатежа
			ЛЕВОЕ СОЕДИНЕНИЕ Документ.ВыпискаБанка КАК ВыпискаБанка
			ПО ВыпискаБанкаРасшифровкаПлатежа.Ссылка = ВыпискаБанка.Ссылка
		ПО СтатьиЗатрат.Ссылка = ВыпискаБанкаРасшифровкаПлатежа.СтатьяДвижения
		
		ЛЕВОЕ СОЕДИНЕНИЕ Документ.АвансовыйОтчет.РасшифровкаПлатежа КАК АвансовыйОтчетРасшифровкаПлатежа
			ЛЕВОЕ СОЕДИНЕНИЕ Документ.АвансовыйОтчет КАК АвансовыйОтчет
			ПО АвансовыйОтчетРасшифровкаПлатежа.Ссылка = АвансовыйОтчет.Ссылка
		ПО СтатьиЗатрат.Ссылка = АвансовыйОтчетРасшифровкаПлатежа.СтатьяДвижения
ГДЕ
	ВыпискаБанкаРасшифровкаПлатежа.Субконто3 = &Проект
	И АвансовыйОтчетРасшифровкаПлатежа.Субконто2 = &Проект
	И ВыпискаБанка.Дата >= &НачПериода
	И ВыпискаБанка.Дата <= &КонПериода
	И АвансовыйОтчет.Дата >= &НачПериода
	И АвансовыйОтчет.Дата <= &КонПериода
Показать


Получается так:



Хотя если убираю один документ, например, АвансовыйОтчет, и присоединяю к справочнику только Выписку, то получается так (период и проект, естественно, те же):



ВЫБРАТЬ
	СтатьиЗатрат.Ссылка КАК Статья_справ,
	ВыпискаБанкаРасшифровкаПлатежа.СтатьяДвижения,
	ВыпискаБанкаРасшифровкаПлатежа.СуммаПриход,
	ВыпискаБанкаРасшифровкаПлатежа.СуммаРасход, 
	АвансовыйОтчетРасшифровкаПлатежа.СуммаПринятая,
	АвансовыйОтчетРасшифровкаПлатежа.СтатьяДвижения КАК СтатьяДвижения1
ИЗ
	Справочник.СтатьиЗатрат КАК СтатьиЗатрат
		ЛЕВОЕ СОЕДИНЕНИЕ Документ.ВыпискаБанка.РасшифровкаПлатежа КАК ВыпискаБанкаРасшифровкаПлатежа
			ЛЕВОЕ СОЕДИНЕНИЕ Документ.ВыпискаБанка КАК ВыпискаБанка
			ПО ВыпискаБанкаРасшифровкаПлатежа.Ссылка = ВыпискаБанка.Ссылка
		ПО СтатьиЗатрат.Ссылка = ВыпискаБанкаРасшифровкаПлатежа.СтатьяДвижения
ГДЕ
	ВыпискаБанкаРасшифровкаПлатежа.Субконто3 = &Проект
	И ВыпискаБанка.Дата >= &НачПериода
	И ВыпискаБанка.Дата <= &КонПериода
Показать


Т.е. при присоединении двух документов ищутся только общие статьи затрат, а те, что присутствуют только в одном из документов, не выводятся.
И я не понимаю, почему так происходит.

Очень надеюсь на помощь, и большое спасибо за нее.
+
По теме из базы знаний
Найденные решения
4. starjevschik 10.08.17 16:08 Сейчас в теме
(1) картинок не видно, но
1) для начала я бы убрал таблицы документов, к реквизитам документа можно обращаться через реквизит Ссылка табличной части. Да, это будет неявное соединение, но раз уж 1с умеет это, пусть делает.
2) условия ГДЕ неправильно ставить на весь запрос, надо только на соединения, иначе это условие все отрежет

поулчится что-то типа такого
ВЫБРАТЬ
    СтатьиЗатрат.Ссылка КАК Статья_справ,
    ВыпискаБанкаРасшифровкаПлатежа.СтатьяДвижения,
    ВыпискаБанкаРасшифровкаПлатежа.СуммаПриход,
    ВыпискаБанкаРасшифровкаПлатежа.СуммаРасход, 
    АвансовыйОтчетРасшифровкаПлатежа.СуммаПринятая,
    АвансовыйОтчетРасшифровкаПлатежа.СтатьяДвижения КАК СтатьяДвижения1
ИЗ
    Справочник.СтатьиЗатрат КАК СтатьиЗатрат
        ЛЕВОЕ СОЕДИНЕНИЕ Документ.ВыпискаБанка.РасшифровкаПлатежа КАК ВыпискаБанкаРасшифровкаПлатежа
        ПО СтатьиЗатрат.Ссылка = ВыпискаБанкаРасшифровкаПлатежа.СтатьяДвижения
и ВыпискаБанкаРасшифровкаПлатежа.Субконто3 = &Проект
 И ВыпискаБанка.Ссылка.Дата >= &НачПериода
    И ВыпискаБанка.Ссылка.Дата <= &КонПериода
      
        ЛЕВОЕ СОЕДИНЕНИЕ Документ.АвансовыйОтчет.РасшифровкаПлатежа КАК АвансовыйОтчетРасшифровкаПлатежа
        ПО СтатьиЗатрат.Ссылка = АвансовыйОтчетРасшифровкаПлатежа.СтатьяДвижения
И АвансовыйОтчетРасшифровкаПлатежа.Субконто2 = &Проект
     И АвансовыйОтчет.Ссылка.Дата >= &НачПериода
    И АвансовыйОтчет.Ссылка.Дата <= &КонПериода
Показать
halker; +1
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. WasiliyMay 8 10.08.17 12:12 Сейчас в теме
(1) Разбейте выборку документов по временным таблицам со своими условиями, а потом по временным таблицам делайте связь.
halker; +1
4. starjevschik 10.08.17 16:08 Сейчас в теме
(1) картинок не видно, но
1) для начала я бы убрал таблицы документов, к реквизитам документа можно обращаться через реквизит Ссылка табличной части. Да, это будет неявное соединение, но раз уж 1с умеет это, пусть делает.
2) условия ГДЕ неправильно ставить на весь запрос, надо только на соединения, иначе это условие все отрежет

поулчится что-то типа такого
ВЫБРАТЬ
    СтатьиЗатрат.Ссылка КАК Статья_справ,
    ВыпискаБанкаРасшифровкаПлатежа.СтатьяДвижения,
    ВыпискаБанкаРасшифровкаПлатежа.СуммаПриход,
    ВыпискаБанкаРасшифровкаПлатежа.СуммаРасход, 
    АвансовыйОтчетРасшифровкаПлатежа.СуммаПринятая,
    АвансовыйОтчетРасшифровкаПлатежа.СтатьяДвижения КАК СтатьяДвижения1
ИЗ
    Справочник.СтатьиЗатрат КАК СтатьиЗатрат
        ЛЕВОЕ СОЕДИНЕНИЕ Документ.ВыпискаБанка.РасшифровкаПлатежа КАК ВыпискаБанкаРасшифровкаПлатежа
        ПО СтатьиЗатрат.Ссылка = ВыпискаБанкаРасшифровкаПлатежа.СтатьяДвижения
и ВыпискаБанкаРасшифровкаПлатежа.Субконто3 = &Проект
 И ВыпискаБанка.Ссылка.Дата >= &НачПериода
    И ВыпискаБанка.Ссылка.Дата <= &КонПериода
      
        ЛЕВОЕ СОЕДИНЕНИЕ Документ.АвансовыйОтчет.РасшифровкаПлатежа КАК АвансовыйОтчетРасшифровкаПлатежа
        ПО СтатьиЗатрат.Ссылка = АвансовыйОтчетРасшифровкаПлатежа.СтатьяДвижения
И АвансовыйОтчетРасшифровкаПлатежа.Субконто2 = &Проект
     И АвансовыйОтчет.Ссылка.Дата >= &НачПериода
    И АвансовыйОтчет.Ссылка.Дата <= &КонПериода
Показать
halker; +1
3. bad_wag 48 10.08.17 12:15 Сейчас в теме
Тянуть данные из документов не есть хорошо, посмотрите по каким регистрам эти документы делают движения и используйте виртуальные таблицы оборотов для получения данных.
halker; +1
5. Nigmatul 10.08.17 16:58 Сейчас в теме
1. Запрос к регистру (смысл обрабатывать документы?, а вдруг они не проведены, а вдруг помечен на удаление и т.д.).
2. Кури внутреннее соединение.
halker; +1
6. Fox-trot 158 10.08.17 22:59 Сейчас в теме
(5)
Кури внутреннее соединение
тогда справочник мона из запроса выбросить
halker; +1
7. Nigmatul 14.08.17 14:27 Сейчас в теме
(6)Да. Какая конфа кстати ?
+
8. halker 14.08.17 17:17 Сейчас в теме
Конфа: УТ 8.1
Спасибо, все получилось.
+
Внимание! Тема сдана в архив

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