|
Простое условие в запросе на сравнение двух полей, выборка пустая, значения есть |
☑ |
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
|
Уверен.
|
|
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший