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

СКД по двум документам

Автор Артемий Юров, 28 янв 2023, 14:50

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

Артемий Юров

Всем добрый день!
Есть счет покупателю с табличной частью "Основание", где заполняются счета поставщику. При формировании отчета по счету покупателю отображается номенклатура из счета покупателя и кол-во, сумма по счету покупателя и основанию(счета поставщика). Как сделать так, что бы в отчет попадала только та номенклатура из основания (счет поставщику), которая указана в счете покупателю? Спасибо!
Скрин примера отчета.

Артемий Юров

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

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

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

СГРУППИРОВАТЬ ПО
СчетПокупателяТовары.Товары,
СчетПокупателяТовары.Ссылка,
СчетПокупателя.Контрагенты
;

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

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

Afinogen

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

СГРУППИРОВАТЬ ПО
    СчетПокупателяТовары.Товары,
    СчетПокупателяТовары.Ссылка,
    СчетПокупателя.Контрагенты
Здесь левое соединение не нужно, у вас оно  использовано только чтобы из шапки вытянуть "Контрагенты",

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

СГРУППИРОВАТЬ ПО
    СчетПокупателяТовары.Товары,
    СчетПокупателяТовары.Ссылка,
    СчетПокупателя.Ссылка.Контрагенты

Afinogen

вы в последнем пакете делаете ЛЕВОЕ СОЕДИНЕНИЕ
при таком соединении у вас данные из основной таблицы (Покупатели) будут дополняться данными из таблицы Поступление,  если вам надо видеть только точное совпадение
вам нужно делать не левое а ВНУТРЕННЕЕ СОЕДИНЕНИЕ

Артемий Юров

Afinogen, При ВНУТРЕННЕЕ СОЕДИНЕНИЕ таблица (Покупатели) будет заполняться в том числе номенклатурой из таблицы (Поставщики), даже если ее нет в таблице покупатели, правильно я понимаю?

Afinogen

Артемий Юров, неправильно
при внутреннем поступлении будет найцдено точное совпадение

вообще вопрос
какой тип  у значения СчетПокупателяТовары.Товары - это ссылка на справочник номенклатура или табличная часть?

при втором варианте вам нужно запрос строить изначально к этой таблице, то есть расширять

Afinogen

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

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

Артемий Юров

Afinogen, ну то есть как я понял, в случае ВНУТРЕННЕГО СОЕДИНЕНИЯ, если какая то номенклатура есть в счете покупателя, но нет в счете поставщика, то она тоже отсечется, а мне это не нужно, значит как я понимаю нужно все таки использовать ЛЕВОЕ СОЕДИНЕНИЕ, что бы условно номенклатура Доставка покупателю оставалась в таблице.
СчетПокупателяТовары.Товары - Ссылка на справочник номенклатура, если я правильно понимаю


Теги:

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

Рейтинг@Mail.ru

Поиск