Имя: Пароль:
1C
 
Пустой запрос при подстановке параметра из текущего документа
,
0 Очень Любознательная
 
21.11.19
17:38
Здравствуйте. Возник такой вопрос.
Есть в УТ 11 документ "Заказ клиента", есть собственный регистр накопления с измерением "Соглашение" (тип - соглашение, стандартный в УТ).
Случайно ошиблась в запросе, параллельно возник вопрос. Вот есть такой запрос в обработке проведения заказа клиента:
Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ
                   |    ЗаказКлиентаТовары.Номенклатура КАК Товар,
                   |    ЕСТЬNULL(УсловияДоговоровОстатки.КоличествоОстаток, 0) КАК Остаток,
                   |    ЕСТЬNULL(ЗаказКлиентаТовары.Количество, 0) КАК КоличествоТовара
                   |ИЗ
                   |    Документ.ЗаказКлиента.Товары КАК ЗаказКлиентаТовары
                   |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.УсловияДоговоров.Остатки КАК УсловияДоговоровОстатки
                   |        ПО ЗаказКлиентаТовары.Номенклатура = УсловияДоговоровОстатки.Товар
                   |            И ЗаказКлиентаТовары.Ссылка.Соглашение = УсловияДоговоровОстатки.Соглашение
                   |ГДЕ
                   |    УсловияДоговоровОстатки.Соглашение = &Соглашение
                   |    И ЗаказКлиентаТовары.Ссылка = &Ссылка";
    Запрос.УстановитьПараметр("Соглашение", Соглашение);
    Запрос.УстановитьПараметр("Ссылка", Ссылка);
    Результат = Запрос.Выполнить().Выбрать();
    Пока Результат.Следующий() Цикл
        Нехватка = (Результат.Остаток - Результат.КоличествоТовара) * (-1);
        Если Нехватка > 0 Тогда
            Сообщить("Проведение невозможно. По договору не хватает " + Нехватка + " единиц товара " + Результат.Товар);
            Отказ = Истина;
        КонецЕсли;
    КонецЦикла;

Если убрать параметр "соглашение", то он работает верно. Если не убирать, то пустой результат. Почему так? Соглашение - это именно то соглашение, которое у меня в документе, по моей логике, на результат должны параметры наложиться, и состав результирующих записей не изменится. В чём я не права?
1 sqr4
 
21.11.19
17:39
(0) ты не права в том, что не используешь отладку, а пишешь на форум...
2 Очень Любознательная
 
21.11.19
17:40
(1) В отладке я вижу пустой запрос при выгрузке результата в таблицу.
Если я чего-то не знаю, подскажите, пожалуйста, против отладки я ничего не имею.
3 sqr4
 
21.11.19
17:41
надо смотреть параметр который туда передается
4 unenu
 
21.11.19
17:42
Случайность и параллелизм вещи очень похожие.
5 sqr4
 
21.11.19
17:43
Причем если есть связь по этому полю, зачем еще и в "где" его засовывать
6 unenu
 
21.11.19
17:44
(5) на всякий случай же
7 Ёпрст
 
21.11.19
17:45
(0) нет остатка по этому соглашению
перенеси условие УсловияДоговоровОстатки.Соглашение = &Соглашение  в место соединения таблиц
8 sqr4
 
21.11.19
17:45
ну и очевидно, что остатков нет в " УсловияДоговоровОстатки.Соглашение " сейчас Null, поэтому и пустой результат.
9 Ёпрст
 
21.11.19
17:46
или , вообще его выкини
10 hhhh
 
21.11.19
17:47
(2) попробуй сначала отменить проведение документа заказ. И почему у тебя остаток на текущую дату, а не на дату заказа?
11 sqr4
 
21.11.19
17:53
(7) Как раз надо оставить связь и убрать условие
12 shuhard
 
21.11.19
17:53
(0) по сути права, где на правую таблицу идентично внутренней связи
по факу условие бесполезное, оно не в связи не в виртуальной таблице