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

Объединить в запросе несколько ТЧ документов одного типа

Автор Andra, 16 июл 2024, 07:39

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

Andra

Максим75, да вопрос стоимости и счетов не принципиален, не выходит объединить в одну таблицу именно данные по количеству должным образом

Максим75

Andra, серьезно?
ну хоть сам запрос покажите.
что же там объединять то?

Andra

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

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

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ПеремещениеТоваровТовары.Ссылка.ДокументОснование КАК ПеремещениеСсылка,
ПеремещениеТоваровТовары.Номенклатура КАК НоменклатураПеремещение,
СУММА(ПеремещениеТоваровТовары.Количество) КАК КоличествоПоставлено
ПОМЕСТИТЬ вт_Перемещение
ИЗ
вт_Требование КАК вт_Требование
ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ПеремещениеТоваров.Товары КАК ПеремещениеТоваровТовары
ПО вт_Требование.ТребованиеСсылка = ПеремещениеТоваровТовары.Ссылка.ДокументОснование

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

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
вт_Требование.ТребованиеСсылка КАК ТребованиеСсылка,
вт_Требование.НоменклатураТребование КАК НоменклатураТребование,
СУММА(вт_Требование.КоличествоЗаказано) КАК КоличествоЗаказано,
СУММА(0) КАК КоличествоПоставлено
ИЗ
вт_Требование КАК вт_Требование

СГРУППИРОВАТЬ ПО
вт_Требование.ТребованиеСсылка,
вт_Требование.НоменклатураТребование

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
вт_Перемещение.ПеремещениеСсылка,
вт_Перемещение.НоменклатураПеремещение,
СУММА(0),
СУММА(вт_Перемещение.КоличествоПоставлено)
ИЗ
вт_Перемещение КАК вт_Перемещение

СГРУППИРОВАТЬ ПО
вт_Перемещение.ПеремещениеСсылка,
вт_Перемещение.НоменклатураПеремещение

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

СГРУППИРОВАТЬ ПО
ТребованиеВКладовуюТовары.Ссылка,
ТребованиеВКладовуюТовары.Номенклатура

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
ПеремещениеТоваровТовары.Ссылка.ДокументОснование,
ПеремещениеТоваровТовары.Номенклатура,
0,
ПеремещениеТоваровТовары.Количество
ИЗ
Документ.ПеремещениеТоваров.Товары КАК ПеремещениеТоваровТовары
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
вт_Требование.ТребованиеСсылка КАК ТребованиеСсылка,
вт_Требование.НоменклатураТребование КАК НоменклатураТребование,
СУММА(вт_Требование.КоличествоЗаказано) КАК КоличествоЗаказано,
СУММА(вт_Требование.КоличествоПоставлено) КАК КоличествоПоставлено
ИЗ
вт_Требование КАК вт_Требование

СГРУППИРОВАТЬ ПО
вт_Требование.ТребованиеСсылка,
вт_Требование.НоменклатураТребование
В первом случае выводит по сути что нужно, но ни дальнейшими временными таблицами, ни новым пакетов запросов не удается объединить все в одну таблицу, выводит сначала данные по требованию сверху, следом уже по перемещению

Максим75

Andra, да у Вас вообще коряво запрос по второй таблице написан.
просто выберите товары из документа Перемещение с условием, что ПеремещениеТоваровТовары.Ссылка.ДокументОснование = &ТребованиеСсылка

зачем какие-то соединения там, где они вообще не нужны?

ну а второй вешает естественно, Вы то выбираете ВСЕ документы Перемещения (за весь период, а их может быть ой как много) да еще и не группируете по товару, ну короче говоря очень плохой запрос.

LexaK

Максим75,
тогда попробуйте по данным документов строить запрос
(это пример/схема)
Выбрать
Требование.Ссылка.Дата как Период,
Требование.Ссылка как Документ,
Требование.Номенклатура как Товар,
Требование.Количество как Заказано,
0 как Отпущено
Из
Документ.ТребованиеВКладовую.Товары как Требование
где
Требование.Ссылка.Дата Между &Дата1 и &Дата2
и Требование.Ссылка.Проведен //или Не ПометкаУдаленя

Объединить все

Выбрать
Перемещение.Ссылка.Дата как Период,
Перемещение.Ссылка как Документ,
Перемещение.Номенклатура как Товар,
0 как Заказано,
Перемещение.Количество как Отпущено
Из
Документ.ПеремещениеТоваров.Товары как Перемещение
где
Перемещение.Ссылка.Дата Между &Дата1 и &Дата2
и Перемещение.Ссылка.Проведен


   
в настройках СКД сделайте группировку по номенклатуре
с сортировкой по Периоду
получится примерноо такая таблица/результат

Номенклатура, Период, ДОкумент, Заказано, Отпущено
Товар1
        01.02 Треб1   100      0
01.02 Перем2    0     10
03.02 Перем4    0     40
03.02 Перем1    0     35
        21.02 Треб2   200      0
22.02 Перем7    0     70
23.02 Перем8    0     90
ИТОГИ: 300 280
если помогло нажмите: Спасибо!

Andra

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

СГРУППИРОВАТЬ ПО
    ТребованиеВКладовуюТовары.Ссылка,
    ТребованиеВКладовуюТовары.Номенклатура

ОБЪЕДИНИТЬ ВСЕ

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

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

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    вт_Требование.ТребованиеСсылка КАК ТребованиеСсылка,
    вт_Требование.НоменклатураТребование КАК НоменклатураТребование,
    СУММА(вт_Требование.КоличествоЗаказано) КАК КоличествоЗаказано,
    СУММА(вт_Требование.КоличествоПоставлено) КАК КоличествоПоставлено
ИЗ
    вт_Требование КАК вт_Требование

СГРУППИРОВАТЬ ПО
    вт_Требование.ТребованиеСсылка,
    вт_Требование.НоменклатураТребование

Максим75

Andra, да что же тут не ясного то?
Вам я уже писал как делать, вон  LexaK тоже написал.
Вот прямо берете и выбираете все документы, только в условии ставите отбор по дате (чтобы дата была между начальной и конечной датой) и чтобы док был обязательно проведен.

Andra

LexaK, в идеале я итоговый вид отчета так представляю, но если делать запрос как описано выше, то берет просто данные из всех перемещений за период вообще, а не из тех, у которых один ДокументОснование

LexaK

Andra, а вы не писали что документе Перемещение есть реквизит документОснование!
а что в нем? ТребованиеВКладовую?
если помогло нажмите: Спасибо!

Andra

LexaK, писал в третьем сообщении, может пропустили. Там составной тип данных, где несколько документов перечислены, но с отбором именно по Требованиям проблем нет, просто накладываю условие ТИПЗНАЧЕНИЯ(ПеремещениеТоваровТовары.Ссылка.ДокументОснование) = ТИП(Документ.ТребованиеВКладовую)

Теги:

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

Рейтинг@Mail.ru

Поиск