Версия для печати темы (https://pro1c.org.ua/index.php?s=b1fe067a97a8814d167ad07b27cbeabb&showtopic=56502)

Нажмите сюда для просмотра этой темы в обычном формате

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 _ Программирование в 1С Предприятие 8.3 _ Отчет по всем движениям ТМЦ по складу

Автор: kpotik 21.01.20, 13:58

Добрый день.
1С:Предприятие 8.3 (8.3.15.1700)
"Управление торговым предприятием для Украины", редакция 1.2. (1.2.49.1)

Пытаюсь через консоль отчетов в клиенте вывести все движения ТМЦ по определенным складам за день.
Наваял такой запрос, но не понимаю, как мне вывести реквизиты документа (Дата, Подразделение, СкладОтправитель и СкладПолучатель) в одну строку с самим документом.
Сложность в том, что для перемещения, ПТУ, РТУ, РТО и ПТО отправитель и получатель хранятся в разных реквизитах.

Код

ВЫБРАТЬ РАЗЛИЧНЫЕ
    ПартииТоваровНаСкладах.Регистратор КАК Документ,
    ПартииТоваровНаСкладах.Регистратор.Дата КАК ДокументДата,
    ПартииТоваровНаСкладах.Регистратор.Подразделение КАК ДокументПодразделение,
    ПартииТоваровНаСкладах.Регистратор.СкладОтправитель КАК ДокументСкладОтправитель,
    ПартииТоваровНаСкладах.Регистратор.СкладПолучатель КАК ДокументСкладПолучатель
ПОМЕСТИТЬ тбРез
ИЗ
    РегистрНакопления.ПартииТоваровНаСкладах КАК ПартииТоваровНаСкладах
ГДЕ
    ТИПЗНАЧЕНИЯ(ПартииТоваровНаСкладах.Регистратор) = ТИП(Документ.ПеремещениеТоваров)
    И (ПартииТоваровНаСкладах.Регистратор.СкладОтправитель.Код = "000000323"
            ИЛИ ПартииТоваровНаСкладах.Регистратор.СкладОтправитель.Код = "000000409"
            ИЛИ ПартииТоваровНаСкладах.Регистратор.СкладОтправитель.Код = "000000416"
            ИЛИ ПартииТоваровНаСкладах.Регистратор.СкладПолучатель.Код = "000000323"
            ИЛИ ПартииТоваровНаСкладах.Регистратор.СкладПолучатель.Код = "000000409"
            ИЛИ ПартииТоваровНаСкладах.Регистратор.СкладПолучатель.Код = "000000416")
    И ПартииТоваровНаСкладах.Регистратор.СкладОтправитель.Код <> ПартииТоваровНаСкладах.Регистратор.СкладПолучатель.Код

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

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

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

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

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

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

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

ВЫБРАТЬ РАЗЛИЧНЫЕ
    ПартииТоваровНаСкладах.Регистратор,
    ПартииТоваровНаСкладах.Регистратор.Дата,
    ПартииТоваровНаСкладах.Регистратор.Подразделение,
    ПартииТоваровНаСкладах.Регистратор.ДокументПеремещения.СкладОтправитель,
    ПартииТоваровНаСкладах.Регистратор.Склад
ИЗ
    РегистрНакопления.ПартииТоваровНаСкладах КАК ПартииТоваровНаСкладах
ГДЕ
    ТИПЗНАЧЕНИЯ(ПартииТоваровНаСкладах.Регистратор) = ТИП(Документ.ПриходныйОрдерНаТовары)
    И (ПартииТоваровНаСкладах.Регистратор.Склад.Код = "000000323"
            ИЛИ ПартииТоваровНаСкладах.Регистратор.Склад.Код = "000000409"
            ИЛИ ПартииТоваровНаСкладах.Регистратор.Склад.Код = "000000416")
;

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


В итоге вывод получается таким:

А хотелось бы вывести так:


Подскажите, пожалуйста, возможно ли реализовать это через консоль отчетов (без использования Конфигуратора)? Как сделать поля Дата, Склад и т.д. реквизитами Документ?

Автор: denis84 21.01.20, 14:22

kpotik @ Сегодня, 13:58 * ,
Группировки поменять местами. Номенклатура в самый низ

Автор: fly 21.01.20, 14:32

kpotik @ Сегодня, 13:58 * ,
консоль не обїединит
даже если вы выразите как текст все
ПРЕДСТАВЛЕНИЕССЫЛКИ(ПартииТоваровНаСкладах.Регистратор) и т.д.
все равно

ПРЕДСТАВЛЕНИЕССЫЛКИ(ПартииТоваровНаСкладах.Регистратор) + ПРЕДСТАВЛЕНИЕ(ПартииТоваровНаСкладах.Регистратор.Дата)

выдаст ошибку
так как контентенация не предусмотрена в запросах

Автор: denis84 21.01.20, 16:29

Вот я на бросал у себя в демо - базе. Вы хотели типа, что то такого?

Автор: kpotik 21.01.20, 17:07

denis84 @ Сегодня, 16:29 * ,
Спасибо, но нет. Я хотел вывести поля Отправитель, Получатель как реквизиты Регистратора, учитывая то, что для Перемещения, например, это поля СкладОтправитель и СкладПолучатель, а для ПТУ, РТУ в них должны подставляться значения из полей Склад и Контрагент.
Идея в том, чтобы в одном отчете выводить все виды регистраторов движения товаров с универсальными реквизитами.

Автор: stark 22.01.20, 14:45

kpotik @ Вчера, 17:07 * ,
Как вариант:

ВЫБОР
        КОГДА ПартииТоваровНаСкладахОбороты.Регистратор ССЫЛКА Документ.ПеремещениеТоваров
            ТОГДА ПартииТоваровНаСкладахОбороты.Регистратор.СкладОтправитель
        КОГДА ПартииТоваровНаСкладахОбороты.Регистратор ССЫЛКА Документ.ПоступлениеТоваровУслуг
            ТОГДА ПартииТоваровНаСкладахОбороты.Регистратор.Контрагент
...
КОНЕЦ КАК ДокументСкладОтправитель

Автор: fly 22.01.20, 15:09

stark @ Сегодня, 14:45 * ,

Цитата(kpotik @ 21.01.20, 13:58) *
реквизиты документа (Дата, Подразделение, СкладОтправитель и СкладПолучатель) в одну строку с самим



тут имелось в Одно поле отчета

Автор: stark 22.01.20, 15:26

fly @ Сегодня, 15:09 * ,
Оно как раз так и будет в одном поле разные значения , в зависимости от типа регистратора.

Автор: Макс1С 22.01.20, 15:35

kpotik @ Вчера, 13:58 * ,
убрать вот это:

ПО
    Документ,
    Номенклатура,
    ДокументДата,
    ДокументПодразделение,
    ДокументСкладОтправитель,
    ДокументСкладПолучатель

Автор: ivisor 22.01.20, 16:21

Цитата(kpotik @ 21.01.20, 13:58) *
Добрый день.
1С:Предприятие 8.3 (8.3.15.1700)
"Управление торговым предприятием для Украины", редакция 1.2. (1.2.49.1)

Подскажите, пожалуйста, возможно ли реализовать это через консоль отчетов (без использования Конфигуратора)? Как сделать поля Дата, Склад и т.д. реквизитами Документ?


ВЫБРАТЬ РАЗЛИЧНЫЕ
    ПартииТоваровНаСкладах.Регистратор КАК Документ,
    ПартииТоваровНаСкладах.Регистратор.Дата КАК ДокументДата,
    ПартииТоваровНаСкладах.Регистратор.Подразделение КАК Подразделение,
    ПартииТоваровНаСкладах.Регистратор.Контрагент КАК Откуда,
    ПартииТоваровНаСкладах.Регистратор.СкладОрдер КАК Куда
ПОМЕСТИТЬ тбРез

ИЗ
    РегистрНакопления.ПартииТоваровНаСкладах КАК ПартииТоваровНаСкладах
ГДЕ
    ТИПЗНАЧЕНИЯ(ПартииТоваровНаСкладах.Регистратор) = ТИП(Документ.ПоступлениеТоваровУслуг)
    И ПартииТоваровНаСкладах.Регистратор.Дата МЕЖДУ &ДатаНач И &ДатаКон

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

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

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


kpotik @ Вчера, 13:58 * ,
Да и представление результата выберите в виде ДЕРЕВА!

kpotik @ Вчера, 13:58 * ,
Не могу редактировать сообщение почему то.
В конце по пробоват так и в принципе без дерева смотрибельно вышло:
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ РАЗЛИЧНЫЕ
    ПартииТоваровНаСкладах.Номенклатура КАК Номенклатура,
    тбРез.Документ КАК Документ,
    тбРез.ДокументДата КАК ДокументДата,
    тбРез.Подразделение КАК Подразделение,
    тбРез.Откуда КАК ДокументСкладОтправитель,
    тбРез.Куда КАК ДокументСкладПолучатель,
    ПартииТоваровНаСкладах.Регистратор,
    ПартииТоваровНаСкладах.Количество КАК Количество
ИЗ
    РегистрНакопления.ПартииТоваровНаСкладах КАК ПартииТоваровНаСкладах
        ЛЕВОЕ СОЕДИНЕНИЕ тбРез КАК тбРез
        ПО (тбРез.Документ = ПартииТоваровНаСкладах.Регистратор)
ГДЕ
    ПартииТоваровНаСкладах.Регистратор.Дата МЕЖДУ &ДатаНач И &ДатаКон
        
ИТОГИ
    СУММА(Количество)
ПО
    Номенклатура


Не знаю что именно и в каком порядке вам нужно увидеть. поэтому поиграйтесь в конце с порядком полей после ВЫБРАТЬ РАЗЛИЧНЫЕ и с количеством и порядком полей после ПО
Учитывайте что полная информация в колонках будет только на самом нижнем! уровне группировки.
Если после ПО надо включать все поля, тогда представляйте результат в виде дерева, иначе все вышестоящие группировки будут строками с пустыми колонками

Автор: kpotik 22.01.20, 18:42

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

Цитата
Учитывайте что полная информация в колонках будет только на самом нижнем! уровне группировки.

Я так понимаю, что от этого никак не избавиться.
Просто получается неудобно анализировать отчет. Его нельзя свернуть, просмотреть по верхнему уровню, где выведены документы и их реквизиты (менеджер, склад, контрагент ит.п.) и, если возникли вопросы - развернуть до номенклатуры.

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua