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

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

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 _ Система компоновки данных _ Валовая прибыль (самописный) с отбором по датам (периоду)

Автор: Constantus 18.04.17, 8:10

Приветствую, форумчане!
"Управление торговлей 10.3", (Моби-С 5.5). "ABBYY Ukraine", 2003-2014 (2.3.20.1)

Имеется отчет на СКД:

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

СГРУППИРОВАТЬ ПО
    ВложенныйЗапрос.Организация,
    ВложенныйЗапрос.Номенклатура


Как правильно сделать, что добавить, чтобы можно было производить выборку отчета по периоду дат вложенного отчета по Регистру и 2-м документам??

Автор: Bernet 18.04.17, 8:34

Constantus @ Сегодня, 9:10 * ,
Советую использовать виртуальные таблицы регистров в запросах - так будет работать быстрее, т.е. вместо таблицы РегистрНакопления.ПродажиСебестоимость нужно брать РегистрНакопления.ПродажиСебестоимость.Обороты и в параметрах виртуальной таблицы используйте параметр отбора по дате.

 РегистрНакопления.ПродажиСебестоимость.Обороты(&НачалоПериода, &КонецПериода, , )

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

Автор: sava1 18.04.17, 9:04

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

{ГДЕ Период между &Дата1 и &Дата2}


{ГДЕ Ссылка.Дата между &Дата1 и &Дата2}


Дата1 и дата2 появятся в Параметрах СКД

Автор: Constantus 18.04.17, 12:03

Благодарю за ответ...
Единственное изменил: вместо "Реализации" поставил РН "Продажи"

Возникло 2 сопутствующих вопроса:

1. Использование РКО недостаточно, необходимо еще учесть и Платежные поручения исходящие. Как в этом большом запросе на объединение объединить РКО и ПП(и) и просуммировать их значения, чтобы был единая сумма по этим двум документам?

2. Да, в параметрах добавятся даты по периоду. Как правильно сделать, чтобы отчет выводился в случае отбора по датам и в случае отсутствия отбора, а то выходит сообщение, что требуется обозначить даты...

Автор: sava1 18.04.17, 12:13

Цитата(Constantus @ 18.04.17, 13:03) *
чтобы отчет выводился в случае отбора по датам и в случае отсутствия отбора,


условие по датам в ФИГУРНЫХ Скобках ?

Цитата(Constantus @ 18.04.17, 13:03) *
Как в этом большом запросе на объединение объединить РКО и ПП(и) и просуммировать их значения, чтобы был единая сумма по этим двум документам?


Вы сами и ответили - ОБЪЕДИНИТЬ.

Автор: Bernet 18.04.17, 13:23

sava1 @ Сегодня, 13:13 * ,
По поводу

Цитата
1. Использование РКО недостаточно, необходимо еще учесть и Платежные поручения исходящие.
добавте ещё одну секцию ОБЪЕДИНИТЬ с выборкой по платежкам исходящим, аналогично как вы выбирали данные с документов реализации и РКО. Учтите, что при объединении полей количество объединяемых полей в запросе должно быть одинаково, т.е. если вы с РКО выбрали 5 полей то и с платежек исходящих надо выбрать аналогичные 5 полей, если такого поля в документе нет, то вместо него можно подставить NULL или пустую ссылку.
По поводу
Цитата
2. Да, в параметрах добавятся даты по периоду. Как правильно сделать, чтобы отчет выводился в случае отбора по датам и в случае отсутствия отбора
можете добавить в модуле объекта отчета такой код:
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
    
    ПараметрНачалоПериода = КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти("НачалоПериода");
    Если ПараметрНачалоПериода <> Неопределено Тогда
        ПараметрНачалоПериода.Использование = Истина;
        ПараметрНачалоПериода.Значение = ?(ЗначениеЗаполнено(НачалоПериода), НачалоДня(НачалоПериода), Дата("01.01.0001 00:00:00"));
    КонецЕсли;
    
    ПараметрКонецПериода = КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти("КонецПериода");
    Если ПараметрКонецПериода <> Неопределено Тогда
        ПараметрКонецПериода.Использование = Истина;
        ПараметрКонецПериода.Значение = ?(ЗначениеЗаполнено(КонецПериода), КонецДня(КонецПериода), КонецДня(ТекущаяДата));
    КонецЕсли;    
    
КонецПроцедуры

но это если делали так как я писал, если как Sava1 то по идее это обычный отбор, если отбор не установлен то должно выбирать все без условия

Автор: Flexy 18.04.17, 13:33

ВЫБРАТЬ
        РеализацияТоваровУслугТовары.Ссылка.Организация,
        РеализацияТоваровУслугТовары.Номенклатура, // Номенклатура
        0,
        СУММА(РеализацияТоваровУслугТовары.Сумма),
        0
    ИЗ
        Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары
    
    СГРУППИРОВАТЬ ПО
        РеализацияТоваровУслугТовары.Ссылка.Организация,
        РеализацияТоваровУслугТовары.Номенклатура
    
    ОБЪЕДИНИТЬ // Объединение мух с котлетами
    
    ВЫБРАТЬ
        РасходныйКассовыйОрдерРасшифровкаПлатежа.Ссылка.Организация,
        РасходныйКассовыйОрдерРасшифровкаПлатежа.СтатьяДвиженияДенежныхСредств, // Статья ДДС
        0,
        0,
        СУММА(РасходныйКассовыйОрдерРасшифровкаПлатежа.СуммаПлатежа)
    ИЗ
        Документ.РасходныйКассовыйОрдер.РасшифровкаПлатежа КАК РасходныйКассовыйОрдерРасшифровкаПлатежа
    
    СГРУППИРОВАТЬ ПО
        РасходныйКассовыйОрдерРасшифровкаПлатежа.Ссылка.Организация,
        РасходныйКассовыйОрдерРасшифровкаПлатежа.СтатьяДвиженияДенежныхСредств

То, что поля разных типов в запросе, не смущает? Или так задумано? smile.gif

P.S. И что за сумма будет на выходе, если в этих документах "вдруг будут" разные валюты?
Зачем 30 раз делать СГРУППИРОВАТЬ ПО?

Автор: Constantus 18.04.17, 15:47

Flexy @ Сегодня, 16:33 * ,


За валюту спасибо smile.gif)) можно наличными... Что-то забыл учесть...

Да, так задумано... Это переделанный отчет по валовой прибыли с учетом определенных затрат по РКО...

В данном случае статьи расходов выполняют роль номенклатуры smile.gif))

Цитата(Flexy @ 18.04.17, 16:33) *
Зачем 30 раз делать СГРУППИРОВАТЬ ПО?



Да вот я тоже думал об этом, но иду по старым шаблонам, лишь бы работало smile.gif
Как можно изменить?

Автор: Flexy 18.04.17, 16:51

Цитата(Constantus @ 18.04.17, 15:47) *
Как можно изменить?

Группируйте и суммируйте один раз, в основном запросе, а не в каждом из вложенных.

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