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

Запрос на СКД связь двух таблиц

Автор RenePiter, 27 ноя 2018, 13:42

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

RenePiter

Добрый день.
Первый раз пишу отчет по СКД, в связи с переходом на 3.0.
Конфа БП 3.0.
На СКД пишу отчет по возвратам, обратный выкуп(ПоступлениеТиУ). У каждого Контрагента есть подчиненный справочник АдресДоставки.
Как сформировать отчет на СКД по обратному выкупу, чтобы для каждой позиции Номенклатуры был весь список АдресовДоставки.

Пример: Есть поступление от Контрагента А, адрес доставки АА, товар "Книга" 5 шт и "Журнал" 10 шт
У контрагента есть еще адреса доставки ББ и ВВ.
На выходе должна получится таблица
Книга Контрагент А АА 5
Книга Контрагент А ББ 0
Книга Контрагент А ВВ 0
Журнал Контрагент А АА 10
Журнал Контрагент А ББ 0
Журнал Контрагент А ВВ 0
Спасибо

oleg-x

Сделай сортировку. Либо в самом запросе, либо в самом СКД на вкладке Настройки, есть вкладка сортировка.
Или через группировки, что более читаемо будет, если не для экспорта в таблицу.
Помог, нажми спасибо. Не помог, нажми спасибо :-)
Если у Вас есть проблема, то её уже кто то решил @Yandex, @Google

RenePiter

Цитата: oleg-x от 27 ноя 2018, 13:58
Сделай сортировку. Либо в самом запросе, либо в самом СКД на вкладке Настройки, есть вкладка сортировка.
Или через группировки, что более читаемо будет, если не для экспорта в таблицу.
у меня нулевые не получается получить

oleg-x

Ясно, а что тогда выводить, если по всем позициям нулевые продажи?
Ном1 0
Ном2 0
Ном3 0
Ном4 0

так что ли?

Добавлено: 27 ноя 2018, 14:43


Если да, то тогда сделай основную таблицу с адресами и номенклатуру и к ней присоединяй левым соединением продажи.
Сделай запрос номенклатуре и сделай поле с типом строка "".
Сделай запрос к адресам и сделай после с типом строка "".
Сделай связь между этими таблицами по этому полю. Получится основная таблица со всеми адресами и номенклатурой.
И уже к ней присоединяй продажи (через связь по адресу и номенклатуре), там где нет продаж, будет NULL
Помог, нажми спасибо. Не помог, нажми спасибо :-)
Если у Вас есть проблема, то её уже кто то решил @Yandex, @Google

RenePiter

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

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

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ РАЗЛИЧНЫЕ
АдресаДоставки.Ссылка КАК Ссылка,
АдресаДоставки.Владелец КАК Владелец,
АдресаДоставки.Адрес КАК Адрес,
NULL КАК СтрокаСв
ПОМЕСТИТЬ ТЗАдреса
ИЗ
ТЗПродажи КАК ТЗПродажи
ЛЕВОЕ СОЕДИНЕНИЕ Справочник.АдресаДоставки КАК АдресаДоставки
ПО ТЗПродажи.Контрагент = АдресаДоставки.Владелец
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ТЗПродажи.Номенклатура КАК Номенклатура,
NULL КАК СтрокаСв
ПОМЕСТИТЬ ТЗНоменклатура
ИЗ
ТЗПродажи КАК ТЗПродажи
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ТЗНоменклатура.Номенклатура КАК Номенклатура,
ТЗАдреса.Адрес КАК Адрес,
ТЗАдреса.Ссылка КАК Ссылка
ИЗ
ТЗАдреса КАК ТЗАдреса
ЛЕВОЕ СОЕДИНЕНИЕ ТЗНоменклатура КАК ТЗНоменклатура
ПО (ТЗНоменклатура.СтрокаСв = ТЗАдреса.СтрокаСв)

УПОРЯДОЧИТЬ ПО
Номенклатура,
Адрес

первый запрос - все поступления с адресами и номенклатурой
второй - адреса доставки
третий - номенклатура которая продавалась   
четвертый - объединение - результат - 2 строки.... хотя номенклатуры больще 10

в пятом я бы уже связывал четвертый и первый

в чем ошибка?

oleg-x

Цитата: RenePiter от 27 ноя 2018, 15:10
первый запрос - все поступления с адресами и номенклатурой
второй - адреса доставки
третий - номенклатура которая продавалась   
четвертый - объединение - результат - 2 строки.... хотя номенклатуры больще 10

в пятом я бы уже связывал четвертый и первый

в чем ошибка?
Ошибка в том что нужно получить адреса и номенклатуру в одной таблице.
Делаешь через вложенные запросы. Примерно такая структура должна быть:
1)ВложенныйЗапросНоменклатураАдреса
1.а)ВложенныЗапросАдреса
1.б)ВложенныйЗапросНоменклатураКотораяПродавалась
Связать две таблицы левым соединением через добавленное поле с пустой строкой. Тогда на каждый адрес будет номенклатура
2)Продажи(лучше тоже вложенный запрос)
Сделать левым соединением две таблицы 1 и 2. Таблица 1 основная.
Помог, нажми спасибо. Не помог, нажми спасибо :-)
Если у Вас есть проблема, то её уже кто то решил @Yandex, @Google

RenePiter

Спасибо за направление. Сейчас буду пробовать

Теги: скд 

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

Рейтинг@Mail.ru

Поиск