ВЫБРАТЬ
ВТ_ФильтрСубконто.Ссылка КАК Ссылка,
ВТ_ФильтрСубконто.СуммаБезНДС КАК СуммаБезНДС,
ВТ_ФильтрСубконто.СубконтоБУ КАК СубконтоБУ,
ВТ_ФильтрСубконто.Номенклатура КАК Номенклатура,
ВТ_ФильтрСубконто.Склад КАК Склад,
ВТ_ФильтрСубконто.ДоговорКонтрагентаРегистрационныйНомер КАК ДоговорКонтрагентаРегистрационныйНомер,
ВТ_ФильтрСубконто.СуммаВсего КАК СуммаВсего,
ВТ_ФильтрСубконто.СчетКт КАК СчетКт,
ВТ_ФильтрСубконто.НаименованиеБДПГН КАК НаименованиеБДПГН,
ИЗ
ВТ_ФильтрСубконто КАК ВТ_ФильтрСубконто
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СоответствиеБДПГНиНомГрупп КАК СоответствиеБДПГНиНомГрупп
по ВТ_ФильтрСубконто.НаименованиеБДПГН = СоответствиеБДПГНиНомГрупп.НаименованиеБДПГН
И СоответствиеБДПГНиНомГрупп.Фильтр = "Подразделение в договоре"
И НЕ ПОДСТРОКА(ВТ_ФильтрСубконто.ДоговорКонтрагентаРегистрационнныйНомер, 6, 3) В
(ВЫБРАТЬ СоответствиеБДПГНиНомГрупп.ЗначениеФильтра
ИЗ РегистрСведений.СоответствиеБДПГНиНомГрупп
ГДЕ СоответствиеБДПГНиНомГрупп.Фильтр = "Подразделение в договоре")
ГДЕ
СоответствиеБДПГНиНомГрупп.НаименованиеБДПГН ЕСТЬ NULL
ИТОГИ ПО
НаименованиеБДПГН,
СубконтоБУ
Предоставил последний пакет запроса.
Регистр сведений - СоответствиеБДПГНиНомГрупп содержит 3 поля - "НаименованиеБДПГН", "Фильтр", "ЗначениеФильтра".
В регистре есть 3 записи со значениями:
1) НаименованиеБДПГН - "Услуги электроэнергии", Фильтр - "Подразделение в договоре", "ЗначениеФильтра" = "997"
2) НаименованиеБДПГН - "Услуги электроэнергии", Фильтр - "Подразделение в договоре", "ЗначениеФильтра" = "998"
3) НаименованиеБДПГН - "Услуги электроэнергии", Фильтр - "Подразделение в договоре", "ЗначениеФильтра" = "999"
Запросом я пытаюсь получить строки, подразделение в договоре которых содержит подразделения, указанные в РС (по сути условием НЕ В() и проверкой на есть null в секции ГДЕ должен получить строки входящие в фильтр "Подразделение в договоре" и строки, на которые не накладывалось фильтров).
В результате получаю строки, на которые не накладывалось фильтров, но не получаю строки, которые должны были отфильтроваться.
При выборке строк только с условием В() запрос отрабатывает корректно (то есть при выборке исключительно фильтруемых строк):
ВЫБРАТЬ
ВТ_ФильтрСубконто.Ссылка КАК Ссылка,
ВТ_ФильтрСубконто.СуммаБезНДС КАК СуммаБезНДС,
ВТ_ФильтрСубконто.СубконтоБУ КАК СубконтоБУ,
ВТ_ФильтрСубконто.Номенклатура КАК Номенклатура,
ВТ_ФильтрСубконто.Склад КАК Склад,
ВТ_ФильтрСубконто.ДоговорКонтрагентаРегистрационныйНомер КАК ДоговорКонтрагентаРегистрационныйНомер,
ВТ_ФильтрСубконто.СуммаВсего КАК СуммаВсего,
ВТ_ФильтрСубконто.СчетКт КАК СчетКт,
ВТ_ФильтрСубконто.НаименованиеБДПГН КАК НаименованиеБДПГН,
ИЗ
ВТ_ФильтрСубконто КАК ВТ_ФильтрСубконто
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СоответствиеБДПГНиНомГрупп КАК СоответствиеБДПГНиНомГрупп
по ВТ_ФильтрСубконто.НаименованиеБДПГН = СоответствиеБДПГНиНомГрупп.НаименованиеБДПГН
И СоответствиеБДПГНиНомГрупп.Фильтр = "Подразделение в договоре"
И ПОДСТРОКА(ВТ_ФильтрСубконто.ДоговорКонтрагентаРегистрационнныйНомер, 6, 3) В
(ВЫБРАТЬ СоответствиеБДПГНиНомГрупп.ЗначениеФильтра
ИЗ РегистрСведений.СоответствиеБДПГНиНомГрупп
ГДЕ СоответствиеБДПГНиНомГрупп.Фильтр = "Подразделение в договоре")
ИТОГИ ПО
НаименованиеБДПГН,
СубконтоБУ
почему так отрабатывает НЕ В()?