Имя: Пароль:
1C
 
Простое условие в запросе на сравнение двух полей, выборка пустая, значения есть
0 toran
 
27.01.15
11:09
Доброго дня.
Простое условие в запросе на сравнение двух полей, выборка пустая, значения есть.
Текст запроса.
ВЫБРАТЬ
    РеализацияТоваровУслугТовары.Номенклатура,
    РеализацияТоваровУслугТовары.Количество,
    РеализацияТоваровУслугТовары.Ссылка.Проведен,
    ТоварыНаСкладахОстатки.КоличествоОстаток
ИЗ
    Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки(&МоментВремени, ) КАК ТоварыНаСкладахОстатки
        ПО РеализацияТоваровУслугТовары.Номенклатура = ТоварыНаСкладахОстатки.Номенклатура
ГДЕ
    РеализацияТоваровУслугТовары.Ссылка = &Ссылка
    И ТоварыНаСкладахОстатки.КоличествоОстаток < РеализацияТоваровУслугТовары.Количество

Затык на
ТоварыНаСкладахОстатки.КоличествоОстаток < РеализацияТоваровУслугТовары.Количество
Пустая выборка.

Если сравнение наоборот, то записи выбираются.
ТоварыНаСкладахОстатки.КоличествоОстаток есть значения null

Спасибо.
1 Рэйв
 
27.01.15
11:11
сделай
ПО
РеализацияТоваровУслугТовары.Номенклатура = ТоварыНаСкладахОстатки.Номенклатура
И ТоварыНаСкладахОстатки.КоличествоОстаток < РеализацияТоваровУслугТовары.Количество
2 Godofsin
 
27.01.15
11:12
Чо это? Проверка при проведении задним числом?
3 ktvladimir
 
27.01.15
11:15
и проверку на null иначе это внутреннее соединение
4 toran
 
27.01.15
11:16
(1) Сделай. Теперь лишний товар попадает.
(2)Да. Надо выбрать товар которого нет на момент проведения документа.
5 ktvladimir
 
27.01.15
11:19
И ЕстьNULL(ТоварыНаСкладахОстатки.КоличествоОстаток,0) < РеализацияТоваровУслугТовары.Количество
6 ktvladimir
 
27.01.15
11:23
а также поменять
ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки(&МоментВремени, )
на
ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки(&МоментВремени, Номенклатура в (Выбрать Товары.Номенклатура ИЗ Документ.РеализацияТоваровУслуг.Товары КАК Товары
ГДЕ
Товары.Ссылка = &Ссылка))

Так как в данном случае остатки это подзапрос. сперва он выберет остатки по ВСЕМ позициям и только потом будет ограничение, что не оптимально. Также мне кажется нужно ограничение по складу
7 toran
 
27.01.15
11:28
(5)Вроде получилось.
(6)Складов нет. А в подзапрос мне бы еще дату дока запихать вместо &МоментВремени.
8 ktvladimir
 
27.01.15
11:40
почему дату? Вы не допускаете возможность ситуации двух документов с одной датой?. лучше границу по моменту времени
не зная поведения записей регистров я бы воткнул что то типа Новый Граница(&МоментВремени, ВидГраницы.Исключая), чтоб гарантировать что в остатках не будет движений самого документа))
9 toran
 
27.01.15
12:03
(8)Один день - один документ, так в конфигурации заложено.
10 ktvladimir
 
27.01.15
12:05
(9) а вы уверены что при перепроведении в момент проверки в РН отсутствуют записи сделанные этим документом? )
11 toran
 
27.01.15
12:29
Уверен.
Кaк может человек ожидaть, что его мольбaм о снисхождении ответит тот, кто превыше, когдa сaм он откaзывaет в милосердии тем, кто ниже его? Петр Трубецкой