Имя: Пароль:
1C
1С v8
Отбор связанных документов по дате СКД
Ø (Новиков 09.10.2023 15:07)
0 bfss-732
 
09.10.23
10:27
Всем привет!
Есть Заказ Клиента и Реализация, они связанны.
Есть условие для отчета:
В случае, если последняя отгрузка не попадает в диапазон заданных дат, то в отчет этот заказ не выводится.
Как это реализовать?
Пример:
Заказ Клиента №1 05.04.2023
Реализация №1 09.04.2023
Реализация №2 20.04.2023
Реализация №3 11.05.2023
Если в отчете выбран апрель 2023, то заказ в отчет не должен попасть.
Если в отчете выбран апрель - июнь 2023, то должны попасть заказ со всеми реализациями.
Если в отчете выбран июнь 2023, то заказ в отчет не должен попасть.
1 Новиков
 
09.10.23
11:05
Ну а проблема то в чем?

Тебе нужен запрос, основная таблица Реализация, на нее отбор по датам. В левом соединении клеишь твои заказы.
2 Donkey_hot
 
09.10.23
11:08
(0) Не видно проблемы. Собираете временную табличку: заказ (группировка), максимальная дата отгрузки. Далее связываете ее с основной выборкой и накладываете условие по макс. дате.
3 bfss-732
 
09.10.23
11:19
ВЫБРАТЬ
    ЗаказКл.Ссылка КАК Заказ,
    РеализТУг.Ссылка КАК Реализация
ИЗ
    Документ.РеализацияТоваровУслуг КАК РеализТУг
        ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаказКлиента КАК ЗаказКл
        ПО (РеализТУг.ЗаказКлиента = ЗаказКл.Ссылка)
ГДЕ
    ЗаказКл.Ссылка = &Ссылка
    И РеализТУг.Проведен
    И РеализТУг.Дата <= &ДатаКонца
    И РеализТУг.Дата >= &ДатаНачала
    
СГРУППИРОВАТЬ ПО
    ЗаказКл.Ссылка,
    РеализТУг.Ссылка

Все равно тянет строчки, а должно быть пусто в результате запроса
4 bfss-732
 
09.10.23
11:20
(1) не так просто как кажется)
5 Donkey_hot
 
09.10.23
11:45
(3) Ну так Вы не сделали временную табличку с макс.датой, потому и тянет.
6 bfss-732
 
09.10.23
12:19
Надо было именно в запросе все колхозить. Максимальная, минимальная не прокатывает, решил по другому:
ВЫБРАТЬ
    ЗаказКл.Ссылка КАК Заказ,
    КОЛИЧЕСТВО(РАЗЛИЧНЫЕ РеализацияТУ.Ссылка) КАК КоличестоВсего
ПОМЕСТИТЬ ВременнаяТаблица
ИЗ
    Документ.РеализацияТоваровУслуг КАК РеализацияТУ
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ЗаказКлиента КАК ЗаказКл
        ПО (РеализацияТУ.ЗаказКлиента = ЗаказКл.Ссылка)
ГДЕ
    РеализацияТУ.Проведен
    И ЗаказКл.Ссылка = &Ссылка

СГРУППИРОВАТЬ ПО
    ЗаказКл.Ссылка
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ЗаказКл.Ссылка КАК Заказ,
    РеализТУ.Ссылка КАК Реализация,
    КОЛИЧЕСТВО(РАЗЛИЧНЫЕ РеализТУ.Ссылка) КАК КоличествоОтборПоДате
ПОМЕСТИТЬ ВТ
ИЗ
    Документ.РеализацияТоваровУслуг КАК РеализТУ
        ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаказКлиента КАК ЗаказКл
        ПО РеализТУ.ЗаказКлиента = ЗаказКл.Ссылка
ГДЕ
    ЗаказКл.Ссылка = &Ссылка
    И РеализТУ.Проведен
    И РеализТУ.Дата <= &ДатаКонца
    И РеализТУ.Дата >= &ДатаНачала

СГРУППИРОВАТЬ ПО
    ЗаказКл.Ссылка,
    РеализТУ.Ссылка
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ВТ.Заказ КАК Заказ,
    СУММА(ВТ.КоличествоОтборПоДате) КАК КоличествоОтборПоДате
ПОМЕСТИТЬ ВременнаяТаблица1
ИЗ
    ВТ КАК ВТ

СГРУППИРОВАТЬ ПО
    ВТ.Заказ
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ВЫБОР
        КОГДА ВременнаяТаблица.КоличестоВсего <= ВременнаяТаблица1.КоличествоОтборПоДате
            ТОГДА ВременнаяТаблица1.Заказ
    КОНЕЦ КАК Заказ
ИЗ
    ВременнаяТаблица КАК ВременнаяТаблица,
    ВременнаяТаблица1 КАК ВременнаяТаблица1
7 bfss-732
 
09.10.23
12:20
Вопрос закрыт
Закон Брукера: Даже маленькая практика стоит большой теории.