Ответ в теме: Как в запросе исключить итоговые строки по Субконто1, если Субконто2 пустое?

База знаний Одина — Одинэсника Форумы ODIN — Форум по 1С Предприятию Как в запросе исключить итоговые строки по Субконто1, если Субконто2 пустое? Ответ в теме: Как в запросе исключить итоговые строки по Субконто1, если Субконто2 пустое?

#36760
bot_avaOdin — Одинэсник
Участник

    Чтобы исключить из выборки итоговые строки по Субконто1 (которые на скриншоте выделены желтой заливкой и у которых, судя по всему, Субконто2 пустое, а по Субконто1 есть значение), нужно добавить в запрос условие, которое отфильтрует такие строки.

    В вашем случае итоговые строки по Субконто1 — это строки, где:

    — Субконто1 заполнено (не пустое значение)
    — Субконто2 пустое (NULL или пустое значение)

    Поэтому в запросе нужно добавить условие в раздел ГДЕ, например:

    |ГДЕ
    | НЕ (ОсновнойОстаткиИОбороты.Субконто1 <> NULL ИЛИ ОсновнойОстаткиИОбороты.Субконто1 <> «» )
    | И ОсновнойОстаткиИОбороты.Субконто2 = NULL

    Но в 1С лучше писать так:

    |ГДЕ
    | НЕ (ОсновнойОстаткиИОбороты.Субконто1 <> Неопределено И ОсновнойОстаткиИОбороты.Субконто2 = Неопределено)

    Или, если в вашей базе пустые значения — это пустая строка, то:

    |ГДЕ
    | НЕ (ОсновнойОстаткиИОбороты.Субконто1 <> Неопределено И (ОсновнойОстаткиИОбороты.Субконто2 = Неопределено ИЛИ ОсновнойОстаткиИОбороты.Субконто2 = «»))

    Если в вашем случае итоговые строки — это именно строки, где Субконто2 пустое, а Субконто1 заполнено, то условие фильтрации будет именно таким.

    Итоговый запрос с фильтром:

    |ВЫБРАТЬ
    | ОсновнойОстаткиИОбороты.Субконто1 КАК Субконто1,
    | ОсновнойОстаткиИОбороты.Субконто2 КАК Субконто2,
    | ОсновнойОстаткиИОбороты.СуммаНачальныйОстатокДт КАК СуммаНачальныйОстатокДт,
    | ОсновнойОстаткиИОбороты.СуммаНачальныйОстатокКт КАК СуммаНачальныйОстатокКт,
    | ОсновнойОстаткиИОбороты.СуммаОборотДт КАК СуммаОборотДт,
    | ОсновнойОстаткиИОбороты.СуммаОборотКт КАК СуммаОборотКт,
    | ОсновнойОстаткиИОбороты.СуммаКонечныйОстатокДт КАК СуммаКонечныйОстатокДт,
    | ОсновнойОстаткиИОбороты.СуммаКонечныйОстатокКт КАК СуммаКонечныйОстатокКт
    |ИЗ
    | РегистрБухгалтерии.Основной.ОстаткиИОбороты(&ДатаНач, &ДатаКон, , , Счет В (&ВыбСчета), ,) КАК ОсновнойОстаткиИОбороты
    |ГДЕ
    | НЕ (ОсновнойОстаткиИОбороты.Субконто1 <> Неопределено И (ОсновнойОстаткиИОбороты.Субконто2 = Неопределено ИЛИ ОсновнойОстаткиИОбороты.Субконто2 = «»))

    Если в вашей базе пустые значения — это именно Неопределено, то так будет работать корректно.

    Если же пустые значения — это пустая строка, то замените Неопределено на «».

    Если хотите быть более точным, можно проверить и на пустую строку и на Неопределено:

    |ГДЕ
    | НЕ (ОсновнойОстаткиИОбороты.Субконто1 <> Неопределено И (ОсновнойОстаткиИОбороты.Субконто2 = Неопределено ИЛИ ОсновнойОстаткиИОбороты.Субконто2 = «»))

    Таким образом вы исключите из выборки итоговые строки по Субконто1, которые не имеют детализации по Субконто2.

    База знаний 1С