8.х Задвоение в запросе

Тема в разделе "Отчеты и обработки для "1С:Предприятие 8"", создана пользователем Yeahkaterina, 4 окт 2011.

  1. TopicStarter Overlay
    Yeahkaterina
    Offline

    Yeahkaterina

    Регистрация:
    4 окт 2011
    Сообщения:
    1
    Симпатии:
    0
    Баллы:
    1
    Здравствуйте! Подскажите пожалуйста, как правильно реализовать запрос. Запрос такой:

    Код:
    "ВЫБРАТЬ
    ХозрасчетныйОстаткиИОбороты.Субконто1 КАК КонтрагентРег,
    ВложенныйЗапрос.Контрагент КАК КонтрагентДок,
    ХозрасчетныйОстаткиИОбороты.СуммаОборотДт КАК СуммаОборотДт,
    ХозрасчетныйОстаткиИОбороты.СуммаОборотКт КАК СуммаОборотКт,
    ЕСТЬNULL(ХозрасчетныйОстаткиИОбороты.СуммаОборот, 0) КАК СуммаОбРег,
    ВложенныйЗапрос.Дебет КАК Дебет,
    ВложенныйЗапрос.Кредит КАК Кредит,
    ВложенныйЗапрос.Суммавдок КАК СуммаОбДок,
    ВложенныйЗапрос.ДоговорВидДоговора,
    ВложенныйЗапрос.АктВзаим
    ИЗ
    РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(&НачПериода, &КонПериода, , , Счет В ИЕРАРХИИ (&Счет), , Организация = &Организация) КАК ХозрасчетныйОстаткиИОбороты
    ПОЛНОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
    СУММА(ЕСТЬNULL(АктСверкиВзаиморасчетовПоДаннымОрганизации.Дебет - АктСверкиВзаиморасчетовПоДаннымОрганизации.Кредит, 0)) КАК Суммавдок,
    АктСверкиВзаиморасчетовПоДаннымОрганизации.Ссылка.Контрагент КАК Контрагент,
    АктСверкиВзаиморасчетовПоДаннымОрганизации.Договор.ВидДоговора КАК ДоговорВидДоговора,
    СУММА(АктСверкиВзаиморасчетовПоДаннымОрганизации.Дебет) КАК Дебет,
    СУММА(АктСверкиВзаиморасчетовПоДаннымОрганизации.Кредит) КАК Кредит,
    АктСверкиВзаиморасчетовПоДаннымОрганизации.Ссылка КАК АктВзаим
    ИЗ
    Документ.АктСверкиВзаиморасчетов.ПоДаннымОрганизации КАК АктСверкиВзаиморасчетовПоДаннымОрганизации
    ГДЕ
    АктСверкиВзаиморасчетовПоДаннымОрганизации.Дата МЕЖДУ &НачПериода И &КонПериода
    И АктСверкиВзаиморасчетовПоДаннымОрганизации.Договор.ВидДоговора = &ВидДоговора
    И АктСверкиВзаиморасчетовПоДаннымОрганизации.Ссылка.Организация = &Организация
    
    СГРУППИРОВАТЬ ПО
    АктСверкиВзаиморасчетовПоДаннымОрганизации.Ссылка.Контрагент,
    АктСверкиВзаиморасчетовПоДаннымОрганизации.Договор.ВидДоговора,
    АктСверкиВзаиморасчетовПоДаннымОрганизации.Ссылка) КАК ВложенныйЗапрос
    ПО ХозрасчетныйОстаткиИОбороты.Субконто1 = ВложенныйЗапрос.Контрагент
    </span>
    УПОРЯДОЧИТЬ ПО
    КонтрагентРег,
    КонтрагентДок"
    </FONT></FONT></pre>

    Дело в том, что необходимо выбрать еще счет из ХозрасчетныйОстаткиИОбороты. Но если в запросе указать еще счет :

    Код:
    "ВЫБРАТЬ
    ХозрасчетныйОстаткиИОбороты.Субконто1 КАК КонтрагентРег,
    ВложенныйЗапрос.Контрагент КАК КонтрагентДок,
    ХозрасчетныйОстаткиИОбороты.СуммаОборотДт КАК СуммаОборотДт,
    ХозрасчетныйОстаткиИОбороты.СуммаОборотКт КАК СуммаОборотКт,
    ЕСТЬNULL(ХозрасчетныйОстаткиИОбороты.СуммаОборот, 0) КАК СуммаОбРег,
    ВложенныйЗапрос.Дебет КАК Дебет,
    ВложенныйЗапрос.Кредит КАК Кредит,
    ВложенныйЗапрос.Суммавдок КАК СуммаОбДок,
    ВложенныйЗапрос.ДоговорВидДоговора,
    ВложенныйЗапрос.АктВзаим,
    [b]ХозрасчетныйОстаткиИОбороты.Счет[/b]
    .
    .
    ."
    
    Тогда контрагенты задваиваются и обороты показываются неправильные. Подскажите пожалуйста как поступить
  2. comol
    Offline

    comol Опытный в 1С

    Регистрация:
    8 сен 2011
    Сообщения:
    153
    Симпатии:
    0
    Баллы:
    26
    По-моему про то что нужно выбрать счет в явном виде, левое соединение или объединение уже где-то писал...
  3. uza
    Offline

    uza 1С, VBA (EXCEL), VB (.NET + WEB)

    Регистрация:
    10 июл 2007
    Сообщения:
    1.845
    Симпатии:
    1
    Баллы:
    29
    Прекращайте писать вложенные запросы - это сильно путает код.
    Выбрать
    .....
    ПОМЕСТИТЬ Запрос1
    ИЗ ...
    ГДЕ ...
    ;
    ВЫБРАТЬ
    ...,
    Запрос1.ЧЕТАТАМ...
    ИЗ ... ЛЕВОЕ/ПРАВОЕ/ПОЛНОЕ СОЕДИНЕНИЕ Запрос1 ПО...

    1 - отлаживать запросы можно будет по кускам.
    2 - проще читать потом
    3 - проще в "голове крутить" получаемые результаты.

Поделиться этой страницей