Имя: Пароль:
1C
 
Нужна помощь при написании запроса.
0 memogolik
 
07.04.15
11:39
Смысл запроса таков:
Нужно выбрать минимальное количество документов РТиУ (ссылки), чтобы по заданной номенклатуре общее количество в "штучках" по выбранным документам было меньше или равно заданной.

Пытался вот так:
ВЫБРАТЬ
    РеализацияТоваровУслугТовары.Номенклатура КАК Номенклатура,
    РеализацияТоваровУслугТовары.Ссылка КАК Ссылка,
    СУММА(РеализацияТоваровУслугТовары.Количество * РеализацияТоваровУслугТовары.Коэффициент) КАК Количество
ИЗ
    Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары
ГДЕ
    РеализацияТоваровУслугТовары.Ссылка.ДоговорКонтрагента = &ДоговорКонтрагента
    И РеализацияТоваровУслугТовары.Номенклатура = &Номенклатура

СГРУППИРОВАТЬ ПО
    РеализацияТоваровУслугТовары.Номенклатура,
    РеализацияТоваровУслугТовары.Ссылка

ИМЕЮЩИЕ
    СУММА(РеализацияТоваровУслугТовары.Количество * РеализацияТоваровУслугТовары.Коэффициент) <= 240001

УПОРЯДОЧИТЬ ПО
    РеализацияТоваровУслугТовары.Ссылка.Дата УБЫВ

Но условие на "Имеющие" почему то вообще не срабатывает.
Заранее спасибо за помощь.
1 vicof
 
07.04.15
11:54
Если не срабатывает, значит сумма количеств меньше 240001
2 SeraFim
 
07.04.15
11:59
Правильно задачу сформулируй.
>> по заданной номенклатуре общее количество в "штучках" по выбранным документам было меньше или равно заданной.

общее количество суммарно по всем документам или же только в рамках каждого документа?
3 Dmitrii
 
гуру
07.04.15
11:59
(0) >  условие на "Имеющие" не срабатывает.

Что значит "не срабатывает"?
В результате запроса есть поля с Количество > 240001 ?
4 memogolik
 
07.04.15
12:04
5 memogolik
 
07.04.15
12:05
Он как будто не замечает этого условия и выводит все.
6 SeraFim
 
07.04.15
12:06
(5) судя по всему, тебе надо таки посчитать среди всех документов.
У тебя стоит группировка по ссылке! Вот и условие срабатывает только в рамках группировок
7 memogolik
 
07.04.15
12:07
(6) но мне нужно хранить ссылки на документы....
8 Sashokk
 
07.04.15
12:08
Судя по этому https://www.dropbox.com/s/k5fg24ikqoq828l/Запрос1.png?dl=0 всё у вас срабатывает.
9 Nuobu
 
07.04.15
12:10
10 SeraFim
 
07.04.15
12:10
(7) или крестик снимите, или трусы наденьте
11 memogolik
 
07.04.15
12:12
(9) спасибо за ссылки, очень похоже
12 Nuobu
 
07.04.15
12:15
(11) ВЫБРАТЬ
    РеализацияТоваровУслугТовары.Номенклатура КАК Номенклатура,
    РеализацияТоваровУслугТовары.Ссылка КАК Ссылка,
    СУММА(РеализацияТоваровУслугТовары.Количество * РеализацияТоваровУслугТовары.Коэффициент) КАК Количество,
    РеализацияТоваровУслугТовары.Ссылка.Дата
ПОМЕСТИТЬ ВТДокументы
ИЗ
    Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары
ГДЕ
    РеализацияТоваровУслугТовары.Ссылка.ДоговорКонтрагента = &ДоговорКонтрагента
    И РеализацияТоваровУслугТовары.Номенклатура = &Номенклатура

СГРУППИРОВАТЬ ПО
    РеализацияТоваровУслугТовары.Номенклатура,
    РеализацияТоваровУслугТовары.Ссылка,
    РеализацияТоваровУслугТовары.Ссылка.Дата
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ВТДокументы.Номенклатура,
    ВТДокументы.Ссылка,
    СУММА(ВТДокументыДополнительная.Количество) КАК Количество
ИЗ
    ВТДокументы КАК ВТДокументы
        ЛЕВОЕ СОЕДИНЕНИЕ ВТДокументы КАК ВТДокументыДополнительная
        ПО ВТДокументы.Дата <= ВТДокументыДополнительная.Дата
            И ВТДокументы.Номенклатура <= ВТДокументыДополнительная.Номенклатура

СГРУППИРОВАТЬ ПО
    ВТДокументы.Ссылка,
    ВТДокументы.Номенклатура

ИМЕЮЩИЕ
    СУММА(ВТДокументыДополнительная.Количество) <= 240001
13 Nuobu
 
07.04.15
12:15
(12)
ВТДокументы.Номенклатура <= ВТДокументыДополнительная.Номенклатура


ВТДокументы.Номенклатура = ВТДокументыДополнительная.Номенклатура
14 Dmitrii
 
гуру
07.04.15
12:17
(4) (5) Я не увидел ни одной строки, где Количество > 240001. Везде <=.
Так что поздравляю! Ваш запрос работает правильно.
15 memogolik
 
07.04.15
12:18
(12) Спасибо!
16 memogolik
 
07.04.15
15:27
Вот итог, если кому может пригодится:
ВЫБРАТЬ
    РеализацияТоваровУслугТовары.Номенклатура КАК Номенклатура,
    РеализацияТоваровУслугТовары.Ссылка КАК Ссылка,
    СУММА(РеализацияТоваровУслугТовары.Количество * РеализацияТоваровУслугТовары.Коэффициент) КАК Количество,
    РеализацияТоваровУслугТовары.Ссылка.Дата
ПОМЕСТИТЬ ВТДокументы
ИЗ
    Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары
ГДЕ
    РеализацияТоваровУслугТовары.Ссылка.ДоговорКонтрагента = &ДоговорКонтрагента
    И РеализацияТоваровУслугТовары.Номенклатура = &Номенклатура

СГРУППИРОВАТЬ ПО
    РеализацияТоваровУслугТовары.Номенклатура,
    РеализацияТоваровУслугТовары.Ссылка,
    РеализацияТоваровУслугТовары.Ссылка.Дата
;

////////////////////////////////////////////////////////////////////////////////

ВЫБРАТЬ
    ВТДокументы.Номенклатура,
    &Пар1,
    ВТДокументы.Ссылка,
    ВТДокументы.Количество,
    СУММА(ВТДокументыДополнительная.Количество) КАК Количество
    ПОМЕСТИТЬ ВРЕМ
ИЗ
    
    ВТДокументы КАК ВТДокументы
        ЛЕВОЕ СОЕДИНЕНИЕ ВТДокументы КАК ВТДокументыДополнительная
        ПО ВТДокументы.Дата <= ВТДокументыДополнительная.Дата
            И ВТДокументы.Номенклатура = ВТДокументыДополнительная.Номенклатура

СГРУППИРОВАТЬ ПО
    ВТДокументы.Ссылка,
    ВТДокументы.Номенклатура,
    ВТДокументы.Количество
;
ВЫБРАТЬ
*
ИЗ
(
ВЫБРАТЬ
Т1.Номенклатура ,
Т1.Ссылка,
Т1.Пар1,
Т1.Количество,
МИНИМУМ(Т2.Количество) КАК Мин
ИЗ
ВРЕМ КАК Т1
ЛЕВОЕ СОЕДИНЕНИЕ ВРЕМ Т2
ПО
Т1.Номенклатура = Т2.Номенклатура
И Т1.Пар1<= Т2.Количество

СГРУППИРОВАТЬ ПО
    Т1.Ссылка,
    Т1.Номенклатура,
    Т1.Пар1,
    Т1.Количество
   )ВЛОЖ
ГДЕ Влож.Количество<=Влож.Мин
УПОРЯДОЧИТЬ ПО
    Влож.Ссылка.Дата Убыв
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший