Имя: Пароль:
1C
1С v8
Не отображаются данные из запроса
0 fdv_83
 
11.09.19
10:59
Здравствуйте, уважаемые форумчане.

Имеется небольшой отчёт. В запросе этого отчёта используются две таблицы: одна РегистрБухгалтерии.Хозрасчетный.ОборотыДтКт в корреспонденции некоторых счетов и присоединяемая к ней левым соединением вторая таблица из документа СчетНаОплатуПокупателю. Вторая таблица присоединяется по двум полям: Контрагент и договор. Проблема в том, что если во второй таблице нет данных, то данные из первой таблице тоже не отображаются, а по идее они должны выходить. Подскажите, пожалуйста, в чём может быть загвоздка. Код запроса прилагаю:

ВЫБРАТЬ
    ХозрасчетныйОборотыДтКт.СубконтоКт1 КАК Контрагент,
    ХозрасчетныйОборотыДтКт.СубконтоКт2 КАК Договор,
    МАКСИМУМ(ХозрасчетныйОборотыДтКт.СуммаОборот) КАК СуммаОплаты,
    ЕСТЬNULL(СчетНаОплатуПокупателю.КурсВзаиморасчетов, 1) КАК КурсВзаиморасчетов,
    ЕСТЬNULL(СчетНаОплатуПокупателю.СтавкаНДС, ЗНАЧЕНИЕ(Перечисление.СтавкиНДС.ПустаяСсылка)) КАК СтавкаНДС,
    СУММА(ЕСТЬNULL(СчетНаОплатуПокупателю.СуммаДокументаБезНДС, 0)) КАК СуммаДокументаБезНДС,
    СУММА(ЕСТЬNULL(СчетНаОплатуПокупателю.СуммаДокумента, 0)) КАК СуммаДокумента
ИЗ
    РегистрБухгалтерии.Хозрасчетный.ОборотыДтКт(&НачалоПериода, &КонецПериода, , СчетДт.Код В ("50.01", "51", "55.03"), , СчетКт.Код В ("62.01", "62.02"), , ) КАК ХозрасчетныйОборотыДтКт
        ЛЕВОЕ СОЕДИНЕНИЕ Документ.СчетНаОплатуПокупателю КАК СчетНаОплатуПокупателю
        ПО ХозрасчетныйОборотыДтКт.СубконтоКт1 = СчетНаОплатуПокупателю.Контрагент
            И ХозрасчетныйОборотыДтКт.СубконтоКт2 = СчетНаОплатуПокупателю.ДоговорКонтрагента
ГДЕ
    СчетНаОплатуПокупателю.Дата МЕЖДУ &НачалоПериодаСчетов И &КонецПериода
    И НЕ СчетНаОплатуПокупателю.ПометкаУдаления

СГРУППИРОВАТЬ ПО
    ХозрасчетныйОборотыДтКт.СубконтоКт1,
    ХозрасчетныйОборотыДтКт.СубконтоКт2,
    ЕСТЬNULL(СчетНаОплатуПокупателю.КурсВзаиморасчетов, 1),
    ЕСТЬNULL(СчетНаОплатуПокупателю.СтавкаНДС, ЗНАЧЕНИЕ(Перечисление.СтавкиНДС.ПустаяСсылка))

УПОРЯДОЧИТЬ ПО
    Контрагент,
    Договор
ИТОГИ
    СУММА(СуммаОплаты),
    СУММА(СуммаДокументаБезНДС),
    СУММА(СуммаДокумента)
ПО
    ОБЩИЕ,
    Контрагент
АВТОУПОРЯДОЧИВАНИЕ
1 ДенисЧ
 
11.09.19
11:01
замени левое на полное, если я тебя правильно понял
2 HardBall
 
11.09.19
11:05
Классика. Условие отбора надо перенести в услови соединения
ГДЕ
    СчетНаОплатуПокупателю.Дата МЕЖДУ &НачалоПериодаСчетов И &КонецПериода
    И НЕ СчетНаОплатуПокупателю.ПометкаУдаления
3 catena
 
11.09.19
11:10
Условие на левую таблицу превращает левое соединение во внутреннее.
4 fdv_83
 
11.09.19
11:10
(1) Нет, здесь нужно именно левое соединение
5 fdv_83
 
11.09.19
11:11
(2) Не совсем понял, как это сделать
6 SuperMario
 
11.09.19
11:12
(2) +1

(0) почитай, когда срабатывает секция "Где".
Ты соединение выполнил, а потом на результат накладываешь условие. Соотв-но "Где " будет применяться ко всему запросу.
7 SuperMario
 
11.09.19
11:13
Я бы запрос к счетам вынес вместе с его условиями в ВТ или во вложенный запрос
8 HardBall
 
11.09.19
11:14
ИЗ
    РегистрБухгалтерии.Хозрасчетный.ОборотыДтКт(&НачалоПериода, &КонецПериода, , СчетДт.Код В ("50.01", "51", "55.03"), , СчетКт.Код В ("62.01", "62.02"), , ) КАК ХозрасчетныйОборотыДтКт
        ЛЕВОЕ СОЕДИНЕНИЕ Документ.СчетНаОплатуПокупателю КАК СчетНаОплатуПокупателю
        ПО ХозрасчетныйОборотыДтКт.СубконтоКт1 = СчетНаОплатуПокупателю.Контрагент
            И ХозрасчетныйОборотыДтКт.СубконтоКт2 = СчетНаОплатуПокупателю.ДоговорКонтрагента
И
    СчетНаОплатуПокупателю.Дата МЕЖДУ &НачалоПериодаСчетов И &КонецПериода
    И НЕ СчетНаОплатуПокупателю.ПометкаУдаления
9 fdv_83
 
11.09.19
11:25
(6) (8) Спасибо вам. Ошибку свою понял