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

СКД - Запрос

Автор xdto, 16 мая 2023, 09:24

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

Максим75

xdto, я же Вам писал, что нужно сделать.

Объясню на пальцах: у Вас есть одна единственная отгрузка

Отгрузка №1  сумма  -  100

и эта отгрузка закрывается тремя документами оплаты

Оплата №1  основание №1  сумма  - 30
Оплата №2  основание №1  сумма  - 20
Оплата №3  основание №1  сумма  - 50

Если Вы сразу соедините по Основанию свою отгрузку с оплатами и сразу накладете условия, то в выборку ничего не попадет, потому как каждая запись с оплатами не удовлетворяет условию. Поэтому делаете отдельную выборку с оплатами, сворачиваете по Основанию (агрегатные функции применяете), получаете общую сумму оплаты по основанию. А уже после этого соединяете первую выборку со второй по Основанию. И тогда Вы все получите.

LexaK

xdto, откройте, вашу "правильную" реализацию, посмотрите ее движения
что пишется в регистр Расчеты с клиентами и Расчеты с клиентами  по документам?
если помогло нажмите: Спасибо!

xdto

LexaK, Заказов нет. Документ продажи реализация и документ оплаты (ПКО или Покарте)
Менеджер береться из Табчасти реализации. Делаю отчет средний чек по менеджерам. таблица такая.


Менеджер/КоличествоРеализации/СуммаРеализации/КоличествоПКО/СуммаПКО/КоличествоПокарте/СуммаПокарте/ - далее средние показатели этих же сумм и позиции товара в документе продажи

Как та так должно быть

xdto

Максим75, Написал вот такой запрос подскажите как отсечь документы продажи которые нет оплаты или оплачены не полностью. Что та не как

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

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

СГРУППИРОВАТЬ ПО
ОперацияПоПлатежнойКартеТовары.ДокументПродажи) КАК ОплатаПоКарте
ПО РеализацияТоваровУслугТовары.Ссылка = ОплатаПоКарте.ДокументПродажи
ГДЕ
РеализацияТоваровУслугТовары.Ссылка.Проведен
И РеализацияТоваровУслугТовары.Ссылка.Дата МЕЖДУ &ДатаНачала И &ДатаОкончания

СГРУППИРОВАТЬ ПО
РеализацияТоваровУслугТовары.АБ_ПродажиМенеджер,
ОплатаПКО.Сумма,
ОплатаПоКарте.Сумма,
ОплатаПКО.Ссылка,
ОплатаПоКарте.Ссылка,
РеализацияТоваровУслугТовары.Ссылка.СуммаДокумента

Максим75

xdto, ну в запросе почти более-менее, за исключением следующего:

обработать соединения через ЕстьNULL

 вместо ОплатаПКО.Сумма КАК СуммаПКО сделать ЕстьNULL(ОплатаПКО.Сумма,0) как СуммаПКО
ну и с оплатой по карте так же.

можно сразу же сделать общую сумму оплат
ЕстьNULL(ОплатаПКО.Сумма,0)+ЕстьNULL(ОплатаПоКарте.Сумма,0) как СуммаОплат

Потом зачем нужны ссылки, вот эти ссылки
ОплатаПКО.Ссылка КАК ПКО,
ОплатаПоКарте.Ссылка КАК ПоКарте

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

надо сгруппировать по менеджеру и документу продажи, а агрегатные функции применять к суммам, всем трем суммам - отгрузки, оплате по кассе и оплате по карте.
чтобы было понятнее, вот это все переделать и во временную таблицу запихнуть.
а уже потом с временной работать, во вложенный запрос достать менеджера, документ открузки и суммы, посчитать разницу
СуммаДокумента-СуммаОплат, сгруппировать по менеджеру, документу, агрегатную функцию к разнице, ну и в конце к временной таблице условие на разницу наложить и вывести все.

xdto

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

Максим75

xdto, так Вам же не количество документов надо вывести, а сами документы.
или я ошибаюсь?
Вы вначале выведите сами документы, а потом уже всегда можно завернуть в количество документов через вложенный запрос или временную таблицу.

xdto

Максим75, Нет сами документы не нужно достаточно вывести их количество. Для удобство можно сами документы расшифровкой выводить.

Максим75

xdto, даже если количество только надо, все равно необходимо делать последовательно:
вначале сами документы, по каждому документу посчитать разницу между суммой отгрузки и суммами оплаты, выбрать только те, которые не оплачены полностью (разница больше нуля), а только потом посчитать количество таких документов. Понимаете, без вложенных запросов или временных таблиц не обойтись, вот так прямо влоб не получится.
все делайте последовательно.
и лучше на каждом этапе выводить результат запроса для себя, чтобы можно было проверить.
я поэтому всегда вложенным запросам предпочитаю временные таблицы, именно для проверки выборки.

xdto

Максим75, Добрый день коллеги профи тут в этом запросе остался один нюанс чтобы учитывала возвраты товар который был возврашен не попадал в отчет. Как можно этот момент тут учесть или нужно переделывать запрос? Спасибо

Теги: УТ 11 

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

Рейтинг@Mail.ru

Поиск