Имя: Пароль:
1C
1С v8
запросы ... количество строк в результате
0 lamme
 
18.01.18
17:18
Есть заказ клиента - Товар = 10шт
есть 2 заказа поставщику этого товара на 5 и 4 шт.
Надо в результате запроса - чтобы было 3 строки

- товар -  5 - заказано 5
- товар -  4 - заказано 4
- товар -  1 - заказано 0

при соединении 2 таблиц получается просто
- товар -  10 - заказано 5
- товар -  10 - заказано 4
1 lamme
 
18.01.18
17:18
ВЫБРАТЬ
    ЗаказКлиентаТовары.Номенклатура,
    ЗаказКлиентаТовары.Ссылка.Номер КАК НомерЗаказаКлиента,
    ЗаказКлиентаТовары.Ссылка.Дата КАК ДатаЗаказаКлиента,
    ЗаказКлиентаТовары.Ссылка.Контрагент,
    ЗаказКлиентаТовары.Ссылка.Партнер,
    ЗаказКлиентаТовары.Ссылка.СуммаДокумента КАК СуммаЗаказаКлиента,
    СостояниеЗаказаКлиента.СуммаДолга,
    ЗаказКлиентаТовары.Ссылка.Валюта,
    ЗаказКлиентаТовары.Количество КАК КоличествоВЗаказкеКлиента,
    ЕСТЬNULL(Заказы.КоличествоОстаток, 0) КАК КоличествлОстатокЗаказа,
    ЗаказКлиентаТовары.КодСтроки,
    ЗаказыПоставщику.Количество КАК КоличествоЗаказаноУПоставщика,
    ЗаказыПоставщику.Ссылка.Номер КАК НомерЗаказаПоставщику,
    ЗаказыПоставщику.Ссылка.Дата КАК ДатаЗаказаПоставщику,
    ЗаказКлиентаТовары.Ссылка КАК ЗаказКлиентаСсылка,
    ЗаказыПоставщику.Ссылка КАК ЗаказПоставщикуСсылка
    
ИЗ
    Документ.ЗаказКлиента.Товары КАК ЗаказКлиентаТовары
        ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
            ЗаказыКлиентовОстатки.Номенклатура КАК Номенклатура,
            ЗаказыКлиентовОстатки.ЗаказаноОстаток КАК КоличествоОстаток,
            ЗаказыКлиентовОстатки.ЗаказКлиента КАК ЗаказКлиента,
            ЗаказыКлиентовОстатки.КодСтроки КАК КодСтроки,
            ЗаказыКлиентовОстатки.Характеристика КАК Характеристика
        ИЗ
            РегистрНакопления.ЗаказыКлиентов.Остатки(, ) КАК ЗаказыКлиентовОстатки) КАК Заказы
        ПО ЗаказКлиентаТовары.Номенклатура = Заказы.Номенклатура
            И ЗаказКлиентаТовары.Ссылка = Заказы.ЗаказКлиента
            И ЗаказКлиентаТовары.КодСтроки = Заказы.КодСтроки
            И ЗаказКлиентаТовары.Характеристика = Заказы.Характеристика
        ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
            СостоянияЗаказовКлиентов.Заказ КАК Заказ,
            СостоянияЗаказовКлиентов.СуммаДолга КАК СуммаДолга
        ИЗ
            РегистрСведений.СостоянияЗаказовКлиентов КАК СостоянияЗаказовКлиентов) КАК СостояниеЗаказаКлиента
        ПО ЗаказКлиентаТовары.Ссылка = СостояниеЗаказаКлиента.Заказ
        ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
            ЗаказПоставщикуТовары.Номенклатура КАК Номенклатура,
            ЗаказПоставщикуТовары.Количество КАК Количество,
            ЗаказПоставщикуТовары.Ссылка.Сделка КАК Сделка,
            ЗаказПоставщикуТовары.КодСтроки КАК КодСтроки,
            ЗаказПоставщикуТовары.Назначение.Заказ КАК НазначениеЗаказ,
            ЗаказПоставщикуТовары.Ссылка КАК Ссылка
        ИЗ
            Документ.ЗаказПоставщику.Товары КАК ЗаказПоставщикуТовары
        ГДЕ
            ЗаказПоставщикуТовары.Ссылка.Проведен = ИСТИНА) КАК ЗаказыПоставщику
        ПО ЗаказКлиентаТовары.Ссылка = ЗаказыПоставщику.НазначениеЗаказ
            И ЗаказКлиентаТовары.Номенклатура = ЗаказыПоставщику.Номенклатура
ГДЕ
    ЗаказКлиентаТовары.Номенклатура.ТипНоменклатуры = &ТипНоменклатуры
    И ЕСТЬNULL(Заказы.КоличествоОстаток, 0) <> 0
    И ЗаказКлиентаТовары.Ссылка = &Ссылка

УПОРЯДОЧИТЬ ПО
    ЗаказКлиентаСсылка
2 lamme
 
18.01.18
17:19
нужен факт того - в виде строки - что товара недозаказан
3 3achem
 
18.01.18
17:20
(0) Забыл написать сколько это будет стоить?
4 Ненавижу 1С
 
гуру
18.01.18
17:25
а если будет перезаказ?
5 Ненавижу 1С
 
гуру
18.01.18
17:25
ФИФО  в запросе короче курите
6 Вафель
 
18.01.18
17:26
(5) лучше не стоит так делать
7 vicof
 
18.01.18
17:28
А отчет обеспечение заказов использовать не?
8 azernot
 
18.01.18
17:29
(0) Данную задачу эффективнее решать не в рамках запроса. Запросом получаем данные о заказах клиентов, остатках, заказах поставщикам и т.п. и потом уже осуществлять распределение по своей методике.
9 lamme
 
18.01.18
17:30
(8)
тогда скд отваливается
не хооооочется
10 azernot
 
18.01.18
17:31
(9) В СКД можно передать уже конечный результат распределения и использовать все вкусности СКД.
11 lamme
 
18.01.18
17:32
(7)
тоже идея.
пойдет

пошел посмотрю как сделали..
12 Fragster
 
гуру
18.01.18
17:33
две таблички и однократный параллельный проход и проще для понимания и быстрее
13 Fragster
 
гуру
18.01.18
17:33
не в запросе
Проблемы невозможно решaть нa том же уровне компетентности, нa котором они возникaют. Альберт Эйнштейн