Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
12 дек 2024, 10:37

1С 8.3. Как правильно вывести записи регистра накопления по условию ИЛИ?

Автор gulnyr, 21 июн 2023, 08:38

0 Пользователей и 1 гость просматривают эту тему.

gulnyr

Код:
ВЫБРАТЬ
ЗаказыПокупателейОстатки.Заказ.Номер,
    ЗаказыПокупателейОстатки.Номенклатура,
    ЗаказыПокупателейОстатки.ЗаказаноОстаток,
    ОстаткиТоваровКомпанииОстатки.КоличествоОстаток,
    ОстаткиТоваровКомпанииОстатки.РезервОстаток КАК РезервОстаток
ИЗ
    РегистрНакопления.ЗаказыПокупателей.Остатки КАК ЗаказыПокупателейОстатки
    ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ОстаткиТоваровКомпании.Остатки КАК ОстаткиТоваровКомпанииОстатки
    ПО ЗаказыПокупателейОстатки.Номенклатура = ОстаткиТоваровКомпанииОстатки.Номенклатура
ГДЕ
    ЗаказыПокупателейОстатки.ЗаказаноОстаток<=ОстаткиТоваровКомпанииОстатки.КоличествоОстаток

Для примера в регистре есть такие записи:

Номер  Заказ  Остаток 
111          1          0           
111          3          1           
222          4          4           
222          1          2           
333          4          3           
333          2          2           

Выводим номера документов: 111 (т.к. остатки меньше заказов) и 333 (в одном из них остаток меньше количества заказа).

Как правильно вывести только те записи регистра, которые подходят по условиям?

Максим75

gulnyr, так в условии поставить строго меньше, а не равно.
но тут есть нюанс - надо вначале NULL обработать при соединении, а уже потом сравнивать, поэтому через вложенный запрос сделать. вначале соединить, а потом уже по результатам вложенного запроса отобрать те записи, у которых остаток меньше заказа.

Afinogen

ГДЕ
    ЗаказыПокупателейОстатки.ЗаказаноОстаток<ЕСТЬNULL(ОстаткиТоваровКомпанииОстатки.КоличествоОстаток,0)

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск