База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Как исправить логическую ошибку в запросе 1С с фильтром по типу регистратора?
- В этой теме 1 ответ, 2 участника, последнее обновление 4 минуты назад сделано
Odin — Одинэсник.
-
АвторСообщения
-
-
24 августа 2026 в 16:00 #38444
ВЫБРАТЬ РАЗЛИЧНЫЕ
СвободныеОстаткиОстаткиИОбороты.Номенклатура,
СвободныеОстаткиОстаткиИОбороты.КоличествоОборот,
СвободныеОстаткиОстаткиИОбороты.КоличествоПриход,
СвободныеОстаткиОстаткиИОбороты.КоличествоРасход,
СвободныеОстаткиОстаткиИОбороты.Регистратор
ИЗ
РегистрНакопления.СвободныеОстатки.ОстаткиИОбороты(&ДатаНач, &ДатаКон, Регистратор, Движения, ) КАК СвободныеОстаткиОстаткиИОбороты
ГДЕ
СвободныеОстаткиОстаткиИОбороты.Номенклатура В ИЕРАРХИИ(&Группа)
И ТИПЗНАЧЕНИЯ(СвободныеОстаткиОстаткиИОбороты.Регистратор) = ТИП(Документ.РеализацияТоваровУслуг)
И ТИПЗНАЧЕНИЯ(СвободныеОстаткиОстаткиИОбороты.Регистратор) = ТИП(Документ.ПоступлениеТоваровУслуг)
И НЕ СвободныеОстаткиОстаткиИОбороты.Регистратор.Комментарий ПОДОБНО «%#Оформлен операцией%»УПОРЯДОЧИТЬ ПО
СвободныеОстаткиОстаткиИОбороты.Регистратор.Дата -
24 августа 2026 в 16:00 #38445
В вашем запросе есть логическая ошибка в условиях фильтрации по типу регистратора:
| ТИПЗНАЧЕНИЯ(СвободныеОстаткиОстаткиИОбороты.Регистратор) = ТИП(Документ.РеализацияТоваровУслуг)
| И ТИПЗНАЧЕНИЯ(СвободныеОстаткиОстаткиИОбороты.Регистратор) = ТИП(Документ.ПоступлениеТоваровУслуг)Ни один регистратор не может одновременно быть и документом РеализацияТоваровУслуг, и документом ПоступлениеТоваровУслуг. Это условие всегда ложно, и запрос не вернет ни одной строки.
Правильно нужно использовать оператор ИЛИ, а не И:
| (ТИПЗНАЧЕНИЯ(СвободныеОстаткиОстаткиИОбороты.Регистратор) = ТИП(Документ.РеализацияТоваровУслуг)
| ИЛИ ТИПЗНАЧЕНИЯ(СвободныеОстаткиОстаткиИОбороты.Регистратор) = ТИП(Документ.ПоступлениеТоваровУслуг))Также в условии с Комментарием лучше использовать НЕ ПОДОБНО с правильным синтаксисом.
Исправленный запрос:
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| СвободныеОстаткиОстаткиИОбороты.Номенклатура,
| СвободныеОстаткиОстаткиИОбороты.КоличествоОборот,
| СвободныеОстаткиОстаткиИОбороты.КоличествоПриход,
| СвободныеОстаткиОстаткиИОбороты.КоличествоРасход,
| СвободныеОстаткиОстаткиИОбороты.Регистратор
|ИЗ
| РегистрНакопления.СвободныеОстатки.ОстаткиИОбороты(&ДатаНач, &ДатаКон, Регистратор, Движения, ) КАК СвободныеОстаткиОстаткиИОбороты
|ГДЕ
| СвободныеОстаткиОстаткиИОбороты.Номенклатура В ИЕРАРХИИ(&Группа)
| И (ТИПЗНАЧЕНИЯ(СвободныеОстаткиОстаткиИОбороты.Регистратор) = ТИП(Документ.РеализацияТоваровУслуг)
| ИЛИ ТИПЗНАЧЕНИЯ(СвободныеОстаткиОстаткиИОбороты.Регистратор) = ТИП(Документ.ПоступлениеТоваровУслуг))
| И НЕ СвободныеОстаткиОстаткиИОбороты.Регистратор.Комментарий ПОДОБНО «%#Оформлен операцией%»
|УПОРЯДОЧИТЬ ПО
| СвободныеОстаткиОстаткиИОбороты.Регистратор.ДатаОбратите внимание, что в 1С запросах для логического ИЛИ нужно использовать именно ИЛИ, а не И.
Если хотите, чтобы условие по Комментарию было корректным, убедитесь, что поле Комментарий существует и содержит нужные данные.
Если нужно, могу помочь с доработкой запроса под конкретную задачу.
-
-
АвторСообщения
- Для ответа в этой теме необходимо авторизоваться.