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

Помогите с запросом по табличным частям (СКД)

Автор Конст_007, 01 сен 2015, 12:00

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

Конст_007

Всем добрый день!
Помогите пожалуйста, делаю отчет на СКД (УТ 11.1).
Нужен отчет по розничным продажам. Собрать только по регистрам не хватает данных,
поэтому делают по документу "Отчет о розничных продажах". Нужны итоговые значения с разных вкладок документа.
Т.е. чтобы считать итоги по нескольким табличным частям документа и выводить их в отчет
ОДНОЙ строкой по каждому документу. Группировка будет по Складу(магазину)

Пример прицепил во вложении для наглядности.
Никак не соображу как соединить в запросе несколько табличных частей к самому документу, причем по табличным частям нужны еще данные регистров сведений. Посчитать по каждой табличной части итоги.

Пробую просто без суммирования сделать связь так:

ВЫБРАТЬ
ОтчетОРозничныхПродажах.Номер,
ОтчетОРозничныхПродажах.Дата,
ОтчетОРозничныхПродажах.КассаККМ,
ОтчетОРозничныхПродажах.Склад,
ОтчетОРозничныхПродажах.Ссылка,
РасчетыПоЭквайрингу.ВидПлатежнойКарты,
РасчетыПоЭквайрингу.Сумма КАК СуммаЭквайринг,
РегистрПодарочныеСертификаты.Сумма КАК СуммаСертификатов,
ЦеныНоменклатурыСрезПоследних.Цена,
ЦеныНоменклатурыСрезПоследних.ВидЦены КАК ВидЦены
ИЗ

    Документ.ОтчетОРозничныхПродажах КАК ОтчетОРозничныхПродажах
ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ОтчетОРозничныхПродажах.Товары КАК ОтчетОРозничныхПродажахТовары
ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК СпрНоменклатура
ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних КАК ЦеныНоменклатурыСрезПоследних
ПО (ЦеныНоменклатурыСрезПоследних.Номенклатура = СпрНоменклатура.Ссылка)
ПО (СпрНоменклатура.Ссылка = ОтчетОРозничныхПродажахТовары.Номенклатура)
ПО (ОтчетОРозничныхПродажахТовары.Ссылка = ОтчетОРозничныхПродажах.Ссылка)
ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.ПодарочныеСертификаты КАК РегистрПодарочныеСертификаты
ПО (РегистрПодарочныеСертификаты.Регистратор = ОтчетОРозничныхПродажах.Ссылка)
ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.РасчетыПоЭквайрингу КАК РасчетыПоЭквайрингу
ПО (РасчетыПоЭквайрингу.Регистратор = ОтчетОРозничныхПродажах.Ссылка)


но каждая запись выходит по 4 раза:xfbnsdfb:

Мне бы пример какой ни будь зацепиться, пожалуйста...

vitasw

Странно, что оно хоть что-то выводит.
В качестве примера:
"ВЫБРАТЬ
| ОтчетОРозничныхПродажахТовары.Ссылка,
| ОтчетОРозничныхПродажахТовары.Характеристика,
| ОтчетОРозничныхПродажахТовары.Количество,
| ОтчетОРозничныхПродажахТовары.Сумма,
| ОтчетОРозничныхПродажахОплатаПлатежнымиКартами.Сумма КАК СуммаОплатыКарта,
| ОтчетОРозничныхПродажахНачислениеБонусныхБаллов.СуммаБонусныхБаллов
|ИЗ
| Документ.ОтчетОРозничныхПродажах.Товары КАК ОтчетОРозничныхПродажахТовары
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.ОтчетОРозничныхПродажах.ОплатаПлатежнымиКартами КАК ОтчетОРозничныхПродажахОплатаПлатежнымиКартами
| ПО ОтчетОРозничныхПродажахТовары.Ссылка = ОтчетОРозничныхПродажахОплатаПлатежнымиКартами.Ссылка
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.ОтчетОРозничныхПродажах.НачислениеБонусныхБаллов КАК ОтчетОРозничныхПродажахНачислениеБонусныхБаллов
| ПО ОтчетОРозничныхПродажахТовары.Ссылка = ОтчетОРозничныхПродажахНачислениеБонусныхБаллов.Ссылка"

Конст_007

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

СГРУППИРОВАТЬ ПО
ОтчетОРозничныхПродажах.Номер,
ОтчетОРозничныхПродажах.Дата,
ОтчетОРозничныхПродажах.КассаККМ,
ОтчетОРозничныхПродажах.Ссылка,
ОтчетОРозничныхПродажах.Склад


В Итоге получается замножение записей.
Т.е. 3 позиции Товаров, 2 позиции по платежным картам и 2 позиции по сертификатам дают умножение на 4 для итогов по товарам и
умножение на 6 для итогов по платежным картам и сертификатам.
Может подход изначально неверный и надо делать отдельные наборы данных в СКД на каждую табличную часть документа и потом их соединять?

1Cnastroika

Цитата: Конст_007 от 02 сен 2015, 06:54

Может подход изначально неверный и надо делать отдельные наборы данных в СКД на каждую табличную часть документа и потом их соединять?
Так и есть. Нужно сделать временные таблицы: Ссылка - СуммаТоваров, Ссылка - СуммаПоКартам, Ссылка - СуммаСертификаты, затем их соединить по ссылке с ДокументСсылка, Номер, Дата.

vitasw

Цитата: Конст_007 от 02 сен 2015, 06:54Т.е. 3 позиции Товаров, 2 позиции по платежным картам и 2 позиции по сертификатам дают умножение на 4 для итогов по товарам и
умножение на 6 для итогов по платежным картам и сертификатам.

Не верю! Исходя из последнего текста запроса такого не может быть.

Конст_007

Цитата: 1Cnastroika от 02 сен 2015, 08:35
Цитата: Конст_007 от 02 сен 2015, 06:54

Может подход изначально неверный и надо делать отдельные наборы данных в СКД на каждую табличную часть документа и потом их соединять?
Так и есть. Нужно сделать временные таблицы: Ссылка - СуммаТоваров, Ссылка - СуммаПоКартам, Ссылка - СуммаСертификаты, затем их соединить по ссылке с ДокументСсылка, Номер, Дата.

Спасибо! Несколькими наборами данных получилось сделать! Отчет получился практически такой как нужен.
Сделал 4 набора данных, соединил наборы по ссылке на документ, в ресурсах просуммировал полученные итоги и получились общие итоги.
Огромное спасибо!

Предыдущий запрос действительно выдавал у меня итоги, перемноженные на количество элементов в других табличных частях, могу даже отчет прикрепить, хрень полная

vitasw

Цитата: Конст_007 от 02 сен 2015, 10:26
Предыдущий запрос действительно выдавал у меня итоги, перемноженные на количество элементов в других табличных частях, могу даже отчет прикрепить, хрень полная
Да, прикрепите. И текст запроса и скрин результата

Конст_007

Цитата: vitasw от 02 сен 2015, 10:30
Цитата: Конст_007 от 02 сен 2015, 10:26
Предыдущий запрос действительно выдавал у меня итоги, перемноженные на количество элементов в других табличных частях, могу даже отчет прикрепить, хрень полная
Да, прикрепите. И текст запроса и скрин результата

Прикрепляю отчет о продаже (рис. 1) - Там еще на вкладке "Оплата платежными картами" 4 позиции на общую сумму 15000 и на вкладке оплата сертификатами 2 позиции на общую сумму 6000
Товаров всего продали на 35682.60

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

СГРУППИРОВАТЬ ПО
ОтчетОРозничныхПродажах.Номер,
ОтчетОРозничныхПродажах.Дата,
ОтчетОРозничныхПродажах.КассаККМ,
ОтчетОРозничныхПродажах.Ссылка,
ОтчетОРозничныхПродажах.Склад


Рисунок 2 - получаемый отчет, последняя позиция в отчете №ТД00-000005 это и есть "Отчет о продаже" с первой картинки.
Итоговая сумма по сертификатам например 168000 = 6000 * 4 (кол.позиций по вкладке платежные карты) * 7(кол.позиций по вкладке товары)
По остальным аналогично, я проверял )))
Чудеса в общем...

vitasw

Н-да. согласен, получается хрень, вечно я забываю об нюансах множественного левого соединения. В общем, можно сделать все в одном запросе, но текст запроса усложняется. По сравнению с пересечением наборов - не конкурент.

Теги:

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

Рейтинг@Mail.ru

Поиск