8.х Отчет Остатки по складу в ценах продаж для БУ (не СКД)

Тема в разделе "Отчеты и обработки для "1С:Предприятие 8"", создана пользователем KatrineKA, 3 апр 2014.

  1. TopicStarter Overlay
    KatrineKA
    Offline

    KatrineKA Опытный в 1С

    Регистрация:
    5 окт 2010
    Сообщения:
    214
    Симпатии:
    0
    Баллы:
    26
    Необходим отчет остатки по складу в ценах продаж в БУ.
    Отборы: Номенклатура, Склад, ТипЦен.
    ГРуппировка по Родителю, с расшифровкой по регистраторам.
    Ограничение на тип регистраторов, т.е. не по всем подряд докам, но при этом должны выходить остатки по которым не было движения.
    С запросом уже намучилась, поэтому хочу поэтапно расписать как делала, что б найти ошибку.
    Прошу советов и подсказок :)
  2. alexburn
    Offline

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    14.782
    Симпатии:
    509
    Баллы:
    204
    Что уже сделали и что не получается ?
  3. TopicStarter Overlay
    KatrineKA
    Offline

    KatrineKA Опытный в 1С

    Регистрация:
    5 окт 2010
    Сообщения:
    214
    Симпатии:
    0
    Баллы:
    26
    т.к. стоит ограничение по регистратору, в таблицу попадают только данные с движением, а нужно и остатки без движения:
    Код:
    ВЫБРАТЬ
        ХозрасчетныйОстаткиИОбороты.Субконто1.Родитель КАК Родитель,
        ХозрасчетныйОстаткиИОбороты.Субконто1 КАК Номенклатура,
        ВложенныйЗапрос.КоличествоНачальныйОстаток КАК КоличествоНачальныйОстаток,
        ХозрасчетныйОстаткиИОбороты.КоличествоОборотДт КАК КоличествоПриход,
        ХозрасчетныйОстаткиИОбороты.КоличествоОборотКт КАК КоличествоРасход,
        ВложенныйЗапрос.КоличествоКонечныйОстаток КАК КоличествоКонечныйОстаток
    ИЗ
        РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(&НачалоПериода, &КонецПериода, Регистратор, , , , Субконто1 В ИЕРАРХИИ (&Субконто1)) КАК ХозрасчетныйОстаткиИОбороты
            ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
                ХозрасчетныйОстаткиИОбороты.Субконто1.Родитель КАК Родитель,
                ХозрасчетныйОстаткиИОбороты.Субконто1 КАК Номенклатура,
                ХозрасчетныйОстаткиИОбороты.КоличествоНачальныйОстаток КАК КоличествоНачальныйОстаток,
                ХозрасчетныйОстаткиИОбороты.КоличествоКонечныйОстаток КАК КоличествоКонечныйОстаток
            ИЗ
                РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(&НачалоПериода, &КонецПериода, , , , , Субконто1 В ИЕРАРХИИ (&Субконто1)) КАК ХозрасчетныйОстаткиИОбороты
            ГДЕ
                (ХозрасчетныйОстаткиИОбороты.Субконто2 = &Субконто2
                        ИЛИ &ВсеСклады)
          
            СГРУППИРОВАТЬ ПО
                ХозрасчетныйОстаткиИОбороты.Субконто1,
                ХозрасчетныйОстаткиИОбороты.Субконто1.Родитель,
                ХозрасчетныйОстаткиИОбороты.КоличествоНачальныйОстаток,
                ХозрасчетныйОстаткиИОбороты.КоличествоКонечныйОстаток) КАК ВложенныйЗапрос
            ПО ХозрасчетныйОстаткиИОбороты.Субконто1 = ВложенныйЗапрос.Номенклатура
    ГДЕ
        (ХозрасчетныйОстаткиИОбороты.Субконто2 = &Субконто2
                ИЛИ &ВсеСклады)
        И (ХозрасчетныйОстаткиИОбороты.Регистратор ССЫЛКА Документ.ПоступлениеТоваровУслуг
                ИЛИ ХозрасчетныйОстаткиИОбороты.Регистратор ССЫЛКА Документ.ОприходованиеТоваров
                ИЛИ ХозрасчетныйОстаткиИОбороты.Регистратор ССЫЛКА Документ.РеализацияТоваровУслуг
                ИЛИ ХозрасчетныйОстаткиИОбороты.Регистратор ССЫЛКА Документ.ОтчетОРозничныхПродажах)
    
    СГРУППИРОВАТЬ ПО
        ХозрасчетныйОстаткиИОбороты.Субконто1,
        ХозрасчетныйОстаткиИОбороты.Субконто1.Родитель,
        ВложенныйЗапрос.КоличествоНачальныйОстаток,
        ХозрасчетныйОстаткиИОбороты.КоличествоОборотДт,
        ХозрасчетныйОстаткиИОбороты.КоличествоОборотКт,
        ВложенныйЗапрос.КоличествоКонечныйОстаток
    
    УПОРЯДОЧИТЬ ПО
        Номенклатура
    АВТОУПОРЯДОЧИВАНИЕ
    --- Объединение сообщений, 3 апр 2014 ---
    это часть запроса, пока без Цен номенклатуры
  4. alexburn
    Offline

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    14.782
    Симпатии:
    509
    Баллы:
    204
    Почему ВНУТРЕНЕЕ соединение ?
  5. TopicStarter Overlay
    KatrineKA
    Offline

    KatrineKA Опытный в 1С

    Регистрация:
    5 окт 2010
    Сообщения:
    214
    Симпатии:
    0
    Баллы:
    26
    а какое? соединяю все по номенклатуре...
  6. alexburn
    Offline

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    14.782
    Симпатии:
    509
    Баллы:
    204
    Разберитесь чем отличается ВНУТРЕННЕЕ от, допустим, ЛЕВОЕ. Но это так, на будущее. Проблемы могут быть не только в соединении, так же от виртуальных таблиц, из которых хотите выбирать.
  7. TopicStarter Overlay
    KatrineKA
    Offline

    KatrineKA Опытный в 1С

    Регистрация:
    5 окт 2010
    Сообщения:
    214
    Симпатии:
    0
    Баллы:
    26
    допустим разобралась. И вот как я это понимаю:
    В таблице по остаткам есть номенклатура в которой не было движения за выбранный период. Этой номенклатуры не будет во второй таблице где есть движение. Левое соединения этих таблиц выдаст не всю номенклатуру из этих таблиц.
  8. alexburn
    Offline

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    14.782
    Симпатии:
    509
    Баллы:
    204
    Причем, можно сделать проще, выборка из справочника номенклатуры с левым соединением к РН остатки и обороты.
  9. TopicStarter Overlay
    KatrineKA
    Offline

    KatrineKA Опытный в 1С

    Регистрация:
    5 окт 2010
    Сообщения:
    214
    Симпатии:
    0
    Баллы:
    26
    ой, мне же нужно к таблице с остатками присоединить табл с движением. И еще счет в параметрах Счет В ИЕРАРХИИ (&Счет)
  10. TopicStarter Overlay
    KatrineKA
    Offline

    KatrineKA Опытный в 1С

    Регистрация:
    5 окт 2010
    Сообщения:
    214
    Симпатии:
    0
    Баллы:
    26
    пока вот так. Теперь не понятно как это все правильно сгруппировать...

    Код:
    ВЫБРАТЬ
        ХозрасчетныйОстаткиИОбороты.Субконто1.Родитель КАК Родитель,
        ХозрасчетныйОстаткиИОбороты.Субконто1 КАК Номенклатура,
        ХозрасчетныйОстаткиИОбороты.КоличествоНачальныйОстаток КАК КоличествоНачальныйОстаток,
        ЕСТЬNULL(ВложенныйЗапрос.КоличествоПриход, 0) КАК КоличествоПриход,
        ЕСТЬNULL(ВложенныйЗапрос.КоличествоРасход, 0) КАК КоличествоРАсход,
        ХозрасчетныйОстаткиИОбороты.КоличествоКонечныйОстаток КАК КоличествоКонечныйОстаток
    ИЗ
        РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(&НачалоПериода, &КонецПериода, , , Счет В ИЕРАРХИИ (&Счет), , Субконто1 В ИЕРАРХИИ (&Субконто1)) КАК ХозрасчетныйОстаткиИОбороты
            ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
                ХозрасчетныйОстаткиИОбороты.Субконто1.Родитель КАК Родитель,
                ХозрасчетныйОстаткиИОбороты.Субконто1 КАК Номенклатура,
                ХозрасчетныйОстаткиИОбороты.КоличествоОборотДт КАК КоличествоПриход,
                ХозрасчетныйОстаткиИОбороты.КоличествоОборотКт КАК КоличествоРасход
            ИЗ
                РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(&НачалоПериода, &КонецПериода, Регистратор, , Счет В ИЕРАРХИИ (&Счет), , Субконто1 В ИЕРАРХИИ (&Субконто1)) КАК ХозрасчетныйОстаткиИОбороты
            ГДЕ
                (ХозрасчетныйОстаткиИОбороты.Субконто2 = &Субконто2
                        ИЛИ &ВсеСклады)
                И (ХозрасчетныйОстаткиИОбороты.Регистратор ССЫЛКА Документ.ПоступлениеТоваровУслуг
                        ИЛИ ХозрасчетныйОстаткиИОбороты.Регистратор ССЫЛКА Документ.ОприходованиеТоваров
                        ИЛИ ХозрасчетныйОстаткиИОбороты.Регистратор ССЫЛКА Документ.РеализацияТоваровУслуг
                        ИЛИ ХозрасчетныйОстаткиИОбороты.Регистратор ССЫЛКА Документ.ОтчетОРозничныхПродажах)
           
            СГРУППИРОВАТЬ ПО
                ХозрасчетныйОстаткиИОбороты.Субконто1,
                ХозрасчетныйОстаткиИОбороты.Субконто1.Родитель,
                ХозрасчетныйОстаткиИОбороты.КоличествоОборотДт,
                ХозрасчетныйОстаткиИОбороты.КоличествоОборотКт) КАК ВложенныйЗапрос
            ПО ХозрасчетныйОстаткиИОбороты.Субконто1 = ВложенныйЗапрос.Номенклатура
    ГДЕ
        (ХозрасчетныйОстаткиИОбороты.Субконто2 = &Субконто2
                ИЛИ &ВсеСклады)
    
    СГРУППИРОВАТЬ ПО
        ХозрасчетныйОстаткиИОбороты.Субконто1,
        ХозрасчетныйОстаткиИОбороты.Субконто1.Родитель,
        ХозрасчетныйОстаткиИОбороты.КоличествоНачальныйОстаток,
        ХозрасчетныйОстаткиИОбороты.КоличествоКонечныйОстаток,
        ЕСТЬNULL(ВложенныйЗапрос.КоличествоПриход, 0),
        ЕСТЬNULL(ВложенныйЗапрос.КоличествоРасход, 0)
    
  11. TopicStarter Overlay
    KatrineKA
    Offline

    KatrineKA Опытный в 1С

    Регистрация:
    5 окт 2010
    Сообщения:
    214
    Симпатии:
    0
    Баллы:
    26
    всё, готово. Пока работает правильно.
    Код:
    ВЫБРАТЬ
        ХозрасчетныйОстаткиИОбороты.Субконто1.Родитель КАК Родитель,
        ХозрасчетныйОстаткиИОбороты.Субконто1 КАК Номенклатура,
        СУММА(ХозрасчетныйОстаткиИОбороты.КоличествоНачальныйОстаток) КАК КоличествоНачальныйОстаток,
        СУММА(ХозрасчетныйОстаткиИОбороты.КоличествоКонечныйОстаток) КАК КоличествоКонечныйОстаток
    ПОМЕСТИТЬ Остатки
    ИЗ
        РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(&НачалоПериода, &КонецПериода, , , Счет В ИЕРАРХИИ (&Счет), , Субконто1 В (&Субконто1)) КАК ХозрасчетныйОстаткиИОбороты
    ГДЕ
        (ХозрасчетныйОстаткиИОбороты.Субконто2 = &Субконто2
                ИЛИ &ВсеСклады)
    
    СГРУППИРОВАТЬ ПО
        ХозрасчетныйОстаткиИОбороты.Субконто1,
        ХозрасчетныйОстаткиИОбороты.Субконто1.Родитель
    ;
    
    ////////////////////////////////////////////////////////////////////////////////
    ВЫБРАТЬ
        ХозрасчетныйОстаткиИОбороты.Субконто1.Родитель КАК Родитель,
        ХозрасчетныйОстаткиИОбороты.Субконто1 КАК Номенклатура,
        СУММА(ХозрасчетныйОстаткиИОбороты.КоличествоОборотДт) КАК КоличествоПриход,
        СУММА(ХозрасчетныйОстаткиИОбороты.КоличествоОборотКт) КАК КоличествоРасход
    ПОМЕСТИТЬ Обороты
    ИЗ
        РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(&НачалоПериода, &КонецПериода, Регистратор, , Счет В ИЕРАРХИИ (&Счет), , Субконто1 В (&Субконто1)) КАК ХозрасчетныйОстаткиИОбороты
    ГДЕ
        (ХозрасчетныйОстаткиИОбороты.Субконто2 = &Субконто2
                ИЛИ &ВсеСклады)
        И (ХозрасчетныйОстаткиИОбороты.Регистратор ССЫЛКА Документ.ПоступлениеТоваровУслуг
                ИЛИ ХозрасчетныйОстаткиИОбороты.Регистратор ССЫЛКА Документ.ОприходованиеТоваров
                ИЛИ ХозрасчетныйОстаткиИОбороты.Регистратор ССЫЛКА Документ.РеализацияТоваровУслуг
                ИЛИ ХозрасчетныйОстаткиИОбороты.Регистратор ССЫЛКА Документ.ОтчетОРозничныхПродажах)
    
    СГРУППИРОВАТЬ ПО
        ХозрасчетныйОстаткиИОбороты.Субконто1,
        ХозрасчетныйОстаткиИОбороты.Субконто1.Родитель
    ;
    
    ////////////////////////////////////////////////////////////////////////////////
    ВЫБРАТЬ
        Остатки.Родитель,
        Остатки.Номенклатура,
        СУММА(Остатки.КоличествоНачальныйОстаток) КАК КоличествоНачальныйОстаток,
        СУММА(Остатки.КоличествоКонечныйОстаток) КАК КоличествоКонечныйОстаток,
        СУММА(Обороты.КоличествоПриход) КАК КоличествоПриход,
        СУММА(Обороты.КоличествоРасход) КАК КоличествоРасход
    ПОМЕСТИТЬ ОстаткиИОбороты
    ИЗ
        Остатки КАК Остатки
            ЛЕВОЕ СОЕДИНЕНИЕ Обороты КАК Обороты
            ПО Остатки.Номенклатура = Обороты.Номенклатура
    
    СГРУППИРОВАТЬ ПО
        Остатки.Номенклатура,
        Остатки.Родитель
    ;
    
    ////////////////////////////////////////////////////////////////////////////////
    ВЫБРАТЬ
        ЦеныНоменклатурыСрезПоследних.Номенклатура,
        ЦеныНоменклатурыСрезПоследних.ТипЦен,
        ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Цена, 0) КАК Цена
    ПОМЕСТИТЬ Цены
    ИЗ
        РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&КонецПериода, ТипЦен = &ТипЦен) КАК ЦеныНоменклатурыСрезПоследних
    ;
    
    ////////////////////////////////////////////////////////////////////////////////
    ВЫБРАТЬ
        ОстаткиИОбороты.Родитель КАК Родитель,
        ОстаткиИОбороты.Номенклатура КАК Номенклатура,
        ОстаткиИОбороты.КоличествоНачальныйОстаток КАК КоличествоНачальныйОстаток,
        ОстаткиИОбороты.КоличествоНачальныйОстаток * Цены.Цена КАК СуммаНачальныйОстаток,
        ЕСТЬNULL(ОстаткиИОбороты.КоличествоПриход, 0) КАК КоличествоПриход,
        ЕСТЬNULL(ОстаткиИОбороты.КоличествоПриход, 0) * Цены.Цена КАК СуммаПриход,
        ЕСТЬNULL(ОстаткиИОбороты.КоличествоРасход, 0) КАК КоличествоРасход,
        ЕСТЬNULL(ОстаткиИОбороты.КоличествоРасход, 0) * Цены.Цена КАК СуммаРасход,
        ОстаткиИОбороты.КоличествоКонечныйОстаток КАК КоличествоКонечныйОстаток,
        ОстаткиИОбороты.КоличествоКонечныйОстаток * Цены.Цена КАК СуммаКонечныйОстаток,
        Цены.ТипЦен,
        Цены.Цена
    ИЗ
        ОстаткиИОбороты КАК ОстаткиИОбороты
            ЛЕВОЕ СОЕДИНЕНИЕ Цены КАК Цены
            ПО ОстаткиИОбороты.Номенклатура = Цены.Номенклатура
    ГДЕ
        (НЕ Цены.ТипЦен ЕСТЬ NULL )
    
    СГРУППИРОВАТЬ ПО
        Цены.ТипЦен,
        ОстаткиИОбороты.Родитель,
        ОстаткиИОбороты.Номенклатура,
        ОстаткиИОбороты.КоличествоНачальныйОстаток,
        ОстаткиИОбороты.КоличествоКонечныйОстаток,
        Цены.Цена,
        ЕСТЬNULL(ОстаткиИОбороты.КоличествоПриход, 0),
        ЕСТЬNULL(ОстаткиИОбороты.КоличествоРасход, 0),
        ЕСТЬNULL(ОстаткиИОбороты.КоличествоПриход, 0) * Цены.Цена,
        ЕСТЬNULL(ОстаткиИОбороты.КоличествоРасход, 0) * Цены.Цена
    
    УПОРЯДОЧИТЬ ПО
        Номенклатура
    ИТОГИ
        СУММА(КоличествоНачальныйОстаток),
        СУММА(СуммаНачальныйОстаток),
        СУММА(КоличествоПриход),
        СУММА(СуммаПриход),
        СУММА(КоличествоРасход),
        СУММА(СуммаРасход),
        СУММА(КоличествоКонечныйОстаток),
        СУММА(СуммаКонечныйОстаток)
    ПО
        Родитель
    АВТОУПОРЯДОЧИВАНИЕ

Поделиться этой страницей