Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
29 сен 2021, 03:59

СКД Вложенный запрос с отбором до начала периода

Автор Иван Сулим, 26 июл 2017, 13:58

0 Пользователей и 1 гость просматривают эту тему.

Иван Сулим

Добрый день, впервые обращаюсь за помощью на форум, поэтому прошу немного терпения.
Задача: Составить отчёт в разрезе Магазинов из регистра продаж используя только регистратор "Чек". В качестве ресурсов получить сумму(продаж-возвратов), количество чеков продаж и количество чеков возвратов. Продублировать в отчёте полученные ресурсы, но с отбором до начала выбранного периода.
Проблема: Как в одном наборе данных сделать вложенный запрос с периодом, где дата окончания периода = НачалоПериода для остальных запросов?
Что сделано: ниже мой запрос, который вроде нормально отрабатывает, но только по выбранному периоду:
ВЫБРАТЬ
СУММА(Продажи.СтоимостьОборот - ЕСТЬNULL(Возврат.СтоимостьОборот, 0)) КАК Сумма,
КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Продажи.ДокументПродажи) КАК колвоПродажи,
КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Возврат.ДокументПродажи) КАК колвоВозвраты,
Продажи.Магазин
ИЗ
(ВЫБРАТЬ
ПродажиОбороты.Магазин КАК Магазин,
СУММА(ПродажиОбороты.СтоимостьОборот) КАК СтоимостьОборот,
ПродажиОбороты.ДокументПродажи КАК ДокументПродажи
ИЗ
РегистрНакопления.Продажи.Обороты(, , , ) КАК ПродажиОбороты
ГДЕ
ПродажиОбороты.ДокументПродажи.ВидОперации = ЗНАЧЕНИЕ(Перечисление.ВидыОперацийЧекККМ.Продажа)

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

СГРУППИРОВАТЬ ПО
ПродажиОбороты.Магазин,
ПродажиОбороты.ДокументПродажи) КАК Возврат
ПО Продажи.Магазин = Возврат.Магазин

СГРУППИРОВАТЬ ПО
Продажи.Магазин

Иван Сулим

Вобщем всем спасибо)
сам разобрался. К условию задачи еще добавился отбор, чтобы в выбранном периоде выбирались только те записи, которые никогда не встречались до периода по полю владелецкарты:
ВЫБРАТЬ РАЗЛИЧНЫЕ
ЧекККМ.ВладелецДисконтнойКарты
ПОМЕСТИТЬ СписокВладельцев
ИЗ
Документ.ЧекККМ КАК ЧекККМ
ГДЕ
ЧекККМ.Дата < &ДатаНачала
;

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

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

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

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

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

СГРУППИРОВАТЬ ПО
ПродажиОбороты.Магазин
;

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

СГРУППИРОВАТЬ ПО
ПродажиОбороты.Магазин
;

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

СГРУППИРОВАТЬ ПО
Продажи.Магазин,
СуммаПродажПоНовым.СтоимостьОборот,
СуммаПродажПоСтарым.СтоимостьОборот

ИМЕЮЩИЕ
КОЛИЧЕСТВО(ПродажиПоНовымКлиентам.ДокументПродажи) + КОЛИЧЕСТВО(ВозвратыПоНовымКлиентам.ДокументПродажи1) + КОЛИЧЕСТВО(ПродажиПоСтарымКлиентам.ДокументПродажи) + КОЛИЧЕСТВО(ВозвратыПоСтарымКлиентам.ДокументПродажи) > 0

Теги:

Похожие темы (5)

Рейтинг@Mail.ru Rambler's Top100

Поиск