Имя: Пароль:
1C
 
Проблема с запросом по резервам УНФ
↓ (Волшебник 11.07.2025 10:47)
0 Qzenko
 
11.07.25
09:48
Добрый день
Хочу запросом получить актуальные резервы
Запрос.Текст =
        "ВЫБРАТЬ РАЗЛИЧНЫЕ
        |    РезервыТоваровОрганизаций.ЗаказПокупателя КАК Заказ,
        |    ЗаказПокупателяТест.Дата КАК ДатаОтгрузки,
        |    ЗаказПокупателяТест.Контрагент КАК Контрагент,
        |    РезервыТоваровОрганизаций.Количество КАК Резерв
        |ИЗ
        |    РегистрНакопления.РезервыТоваровОрганизаций КАК РезервыТоваровОрганизаций
        |        ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ЗаказПокупателя КАК ЗаказПокупателяТест
        |        ПО РезервыТоваровОрганизаций.ЗаказПокупателя = ЗаказПокупателяТест.Ссылка
        |ГДЕ
        |    РезервыТоваровОрганизаций.Номенклатура = &Номенклатура
        |    И ЗаказПокупателяТест.Ссылка <> &ЗаказПокупателяСсылка
        |    И ЗаказПокупателяТест.ПометкаУдаления = ЛОЖЬ
        |    И РезервыТоваровОрганизаций.Количество <> 0
        |    И РезервыТоваровОрганизаций.Организация.Наименование = &Организация
        |    И ЗаказПокупателяТест.Проведен = ИСТИНА";

Но по итогу получаю историю по всем резервам, даже тем, которые уже давным давно были расходованы расходными)
Подскажите пожалуйста, как мне это поправить?
1 maxab72
 
11.07.25
09:51
(0) откройте для себя виртуальные таблицы остатков по регистрам.
2 craxx
 
11.07.25
09:51
(0) Запрос к основной таблице регистра? Серьезно?
3 Qzenko
 
11.07.25
09:53
(2) Да, серьёзней некуда. Думаете сюда зашёл шутки шутить?)
И всё же вопрос остаётся открытым: а как правильно?
4 Dzenn
 
гуру
11.07.25
09:58
(3) — ответ в (1)
5 Chameleon1980
 
11.07.25
09:58
(3) в (1) ответ серьезный Вы наш
6 Qzenko
 
11.07.25
10:14
Что-то по типу такого?
        Запрос = Новый Запрос;
        Запрос.Текст =
        "ВЫБРАТЬ РАЗЛИЧНЫЕ
        |    РезервыТоваровОрганизацийОстатки.ЗаказПокупателя КАК Заказ,
        |    ЗаказПокупателяТест.Дата КАК ДатаОтгрузки,
        |    ЗаказПокупателяТест.Контрагент КАК Контрагент,
        |    РезервыТоваровОрганизацийОстатки.КоличествоОстаток КАК Резерв
        |ИЗ
        |    РегистрНакопления.РезервыТоваровОрганизаций.Остатки(&Период, Номенклатура = &Номенклатура) КАК РезервыТоваровОрганизацийОстатки
        |        ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ЗаказПокупателя КАК ЗаказПокупателяТест
        |        ПО РезервыТоваровОрганизацийОстатки.ЗаказПокупателя = ЗаказПокупателяТест.Ссылка
        |ГДЕ
        |    ЗаказПокупателяТест.Ссылка <> &ЗаказПокупателяСсылка
        |    И ЗаказПокупателяТест.ПометкаУдаления = ЛОЖЬ
        |    И РезервыТоваровОрганизацийОстатки.КоличествоОстаток <> 0
        |    И ЗаказПокупателяТест.Проведен = ИСТИНА";

        Запрос.УстановитьПараметр("Номенклатура", Номенклатура);
        Запрос.УстановитьПараметр("ЗаказПокупателяСсылка", ЗаказПокупателяСсылка);
        Запрос.УстановитьПараметр("Период", ТекущаяДата());

Увы, не работает - знаю что мой косяк. Но не могу понять в принципе как резервы работают, так как в интернете информацию по ним от меня кто-то прячет
7 Волшебник
 
11.07.25
10:17
(6) Добавьте Запрос.Выполнить();
8 maxab72
 
11.07.25
10:21
(6) зачем Внутреннее соединение, если вы можете данные сразу извлечь из РезервыТоваровОрганизацийОстатки.ЗаказПокупателя ?
9 Qzenko
 
11.07.25
10:21
10 Qzenko
 
11.07.25
10:24
(8) кстати да, Вы правы. Создавал этот запрос вчера, в +31 С погоду - видимо напекло)))))
11 Волшебник
 
11.07.25
10:26
(9) Ты тут шутки пришёл шутить что ле?
12 Qzenko
 
11.07.25
10:29
(11) Ни в коем случае. На мой серьёзный вопрос в (7) вы ответили шуткой, причём панч был очень жирный. Поэтому ответил соответствующе, не более
1 : 1
13 craxx
 
11.07.25
10:31
(6) а) документ может быть не текущей датой
б) одной и той же датой может быть несколько документов.
Это на подумать, архитектурный момент, так сказать
14 Волшебник
 
11.07.25
10:38
Вот правильный запрос:
ВЫБРАТЬ 
    Резервы.ЗаказПокупателя КАК Заказ,
    Резервы.ЗаказПокупателя.Дата КАК ДатаЗаказа,
    Резервы.ЗаказПокупателя.Контрагент КАК Контрагент,
    Резервы.КоличествоОстаток КАК Зарезервировано
ИЗ РегистрНакопления.РезервыТоваровОрганизаций.Остатки(&Период, Номенклатура = &Номенклатура) КАК Резервы


в коде:
Запрос.УстановитьПараметр("Период", КонецДня(ТекущаяДата())+1);
Запрос.УстановитьПараметр("Номенклатура", Номенклатура);

тзРезервы = Запрос.Выполнить().Выгрузить();
15 Qzenko
 
11.07.25
10:43
(14) В таком случае вообще ничего не выводит, даже если есть актуальный резерв(
16 Волшебник
 
11.07.25
10:44
(15) Значит Вы врёте
17 Qzenko
 
11.07.25
10:46
(16) хотелось бы. Просто как сказал человек из (13) "а) документ может быть не текущей датой
б) одной и той же датой может быть несколько документов.
Это на подумать, архитектурный момент, так сказать"
18 Волшебник
 
модератор
11.07.25
10:48
Правила:
13. Чётко формулировать свою проблему, причём как просьбу помочь. Соблюдать классическую (аристотелеву) логику в рассуждениях.
14. Избегать тратить время профессионалов на незначительные задачи/ошибки.
19 Qzenko
 
11.07.25
10:50
(18) Ладно, я понял: Вас задела моя фотокарточка собственного производства
Что ж поделать, пойду дальше сам тыкать
20 Волшебник
 
11.07.25
11:02
(19) Давай, валяй
21 Злопчинский
 
11.07.25
13:30
я мало что понимаю в 8-ой структуре данных,
но мне кажется если Проведен = Истина, то ПометкаУдаления не может быть ИСТИНА и условие на =Ложь - лишнее..?
Поясните, плиз.

И ЗаказПокупателяТест.ПометкаУдаления = ЛОЖЬ
И ЗаказПокупателяТест.Проведен = ИСТИНА";
22 Волшебник
 
11.07.25
14:01
(21) Так и есть.
Компьютеры — прекрасное средство для решения проблем, которых до их появления не было.