Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Соединение 2х запросов

Соединение 2х запросов
Я
   prilforreal
 
02.06.21 - 15:24
Доброго времени суток!!! Спустя 2 года отдыха от 1С решил вернуться к 1С, времени прошло не мало, для восстановления скила нужно время, надеюсь на вашу помощь, товарищи!)

Пишу отчет в обычной форме, хочу соединить в макете 2 таблицы из 2х запросов, после чего сравнить данные и расчитать отклонения, в макете все должно выглядеть так:
https://postimg.cc/kRCd7cSF

Но если с одним запросом все просто получается, то как прикрутить туда второй я не могу вспомнить и разобраться, подскажите как быть!

Код:

Процедура КнопкаСформироватьНажатие(Кнопка)
    
    ТабДок = Новый ТабличныйДокумент;
    ТабДок.ТолькоПросмотр = Истина;
    Макет = ЭтотОбъект.ПолучитьМакет("Макет");
    
    Запрос = Новый Запрос;
    Запрос.Текст =

"ВЫБРАТЬ
|    ВыдачаТовараТабличнаяЧасть1.Товар КАК Товар,
|    ВыдачаТовараТабличнаяЧасть1.Ссылка КАК Ссылка,
|    СУММА(ВыдачаТовараТабличнаяЧасть1.Количество) КАК Количество,
|    СУММА(ВыдачаТовараТабличнаяЧасть1.Закупка) КАК Закупка,
|    СУММА(ВыдачаТовараТабличнаяЧасть1.Цена) КАК Цена,
|    СУММА(ВыдачаТовараТабличнаяЧасть1.Цена - ВыдачаТовараТабличнаяЧасть1.Закупка) КАК ПрибыльЕд,
|    СУММА((ВыдачаТовараТабличнаяЧасть1.Цена - ВыдачаТовараТабличнаяЧасть1.Закупка) * ВыдачаТовараТабличнаяЧасть1.Количество) КАК ПрибыльСум,
|    СУММА(ВыдачаТовараТабличнаяЧасть1.Количество * ВыдачаТовараТабличнаяЧасть1.Цена) КАК Сумма
|ИЗ
|    Документ.ВыдачаТовара.ТабличнаяЧасть1 КАК ВыдачаТовараТабличнаяЧасть1
|ГДЕ
|    ВыдачаТовараТабличнаяЧасть1.Ссылка.Проведен = ИСТИНА
|    И ВыдачаТовараТабличнаяЧасть1.Ссылка.Дата МЕЖДУ &НачПериода И &КонПериода
|    И ВыдачаТовараТабличнаяЧасть1.Ссылка.Склад.Наименование ПОДОБНО ""Основной Шахты""
|
|СГРУППИРОВАТЬ ПО
|    ВыдачаТовараТабличнаяЧасть1.Товар,
|    ВыдачаТовараТабличнаяЧасть1.Ссылка
|
|УПОРЯДОЧИТЬ ПО
|    Товар
|ИТОГИ ПО
|    Товар ИЕРАРХИЯ" ;

    
Запрос = Новый Запрос;
    Запрос.Текст =

"ВЫБРАТЬ
|    ВыдачаТовараТабличнаяЧасть1.Товар КАК ТоварРост,
|    ВыдачаТовараТабличнаяЧасть1.Ссылка КАК СсылкаРост,
|    СУММА(ВыдачаТовараТабличнаяЧасть1.Количество) КАК КоличествоРост,
|    СУММА(ВыдачаТовараТабличнаяЧасть1.Закупка) КАК ЗакупкаРост,
|    СУММА(ВыдачаТовараТабличнаяЧасть1.Цена) КАК ЦенаРост,
|    СУММА(ВыдачаТовараТабличнаяЧасть1.Цена - ВыдачаТовараТабличнаяЧасть1.Закупка) КАК ПрибыльЕдРост,
|    СУММА((ВыдачаТовараТабличнаяЧасть1.Цена - ВыдачаТовараТабличнаяЧасть1.Закупка) * ВыдачаТовараТабличнаяЧасть1.Количество) КАК ПрибыльСумРост,
|    СУММА(ВыдачаТовараТабличнаяЧасть1.Количество * ВыдачаТовараТабличнаяЧасть1.Цена) КАК СуммаРост
|ИЗ
|    Документ.ВыдачаТовара.ТабличнаяЧасть1 КАК ВыдачаТовараТабличнаяЧасть1
|ГДЕ
|    ВыдачаТовараТабличнаяЧасть1.Ссылка.Проведен = ИСТИНА
|    И ВыдачаТовараТабличнаяЧасть1.Ссылка.Дата МЕЖДУ &НачПериода И &КонПериода
|    И ВыдачаТовараТабличнаяЧасть1.Ссылка.Склад.Наименование ПОДОБНО ""Основной Ростов""
|
|СГРУППИРОВАТЬ ПО
|    ВыдачаТовараТабличнаяЧасть1.Товар,
|    ВыдачаТовараТабличнаяЧасть1.Ссылка
|
|УПОРЯДОЧИТЬ ПО
|    ТоварРост
|ИТОГИ ПО
|    ТоварРост ИЕРАРХИЯ" ;
    
    
    
    Запрос.УстановитьПараметр("КонПериода", КонецДня(КонПериода));
    Запрос.УстановитьПараметр("НачПериода", НачПериода);
    
    РезультатЗапроса = Запрос.Выполнить();

    ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");
    ОбластьЗаголовок.Параметры.Нач = НачПериода;
    ОбластьЗаголовок.Параметры.Кон = КонПериода;
    ОбластьПодвал = Макет.ПолучитьОбласть("Подвал");
    ОбластьШапкаТаблицы = Макет.ПолучитьОбласть("ШапкаТаблицы");
    ОбластьДетальныхЗаписей = Макет.ПолучитьОбласть("Детали");
    
    ТабДок.Очистить();
    ТабДок.Вывести(ОбластьЗаголовок);
    ТабДок.Вывести(ОбластьШапкаТаблицы);
    ТабДок.НачатьАвтогруппировкуСтрок();
    
    ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
    ИтогПрибыльСум=0;
    ИтогПрибыльСумРост=0;

    
    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
        ИтогПрибыльСум=ВыборкаДетальныеЗаписи.Цена-ВыборкаДетальныеЗаписи.Закупка;
        ИтогПрибыльСум=ВыборкаДетальныеЗаписи.ЦенаРост-ВыборкаДетальныеЗаписи.ЗакупкаРост;

        
        ОбластьДетальныхЗаписей.Параметры.Заполнить(ВыборкаДетальныеЗаписи);
        ТабДок.Вывести(ОбластьДетальныхЗаписей, ВыборкаДетальныеЗаписи.Уровень());
    КонецЦикла;

    ТабДок.ЗакончитьАвтогруппировкуСтрок();
    ОбластьПодвал.Параметры.ИтогПрибыльСум=ИтогПрибыльСум;
    ОбластьПодвал.Параметры.ИтогПрибыльСумРост=ИтогПрибыльСумРост;

    ТабДок.Вывести(ОбластьПодвал);
    ТабДок.Показать("ОтклоненияВыдачаТоваров");
    КонецПроцедуры
 
 Партнерская программа EFSOL Oblako
   mikecool
 
1 - 02.06.21 - 15:27
Объединить
   kumena
 
2 - 02.06.21 - 15:29
Ну как там, в других языках?
   prilforreal
 
3 - 02.06.21 - 15:37
(2)  kumena Высокие весьма требования там
   prilforreal
 
4 - 02.06.21 - 15:44
(1) Объединил таким образом, в ответ ругается на синтаксис
{ВнешнийОтчет.ОтклоненияВыдачаТоваров.Форма.ФормаОтчета.Форма(68)}: Ошибка при вызове метода контекста (Выполнить)
    РезультатЗапроса = Запрос.Выполнить();
по причине:
{(26, 1)}: Синтаксическая ошибка "ОБЪЕДИНИТЬ"
<<?>>ОБЪЕДИНИТЬ






"ВЫБРАТЬ
|    ВыдачаТовараТабличнаяЧасть1.Товар КАК Товар,
|    ВыдачаТовараТабличнаяЧасть1.Ссылка КАК Ссылка,
|    СУММА(ВыдачаТовараТабличнаяЧасть1.Количество) КАК Количество,
|    СУММА(ВыдачаТовараТабличнаяЧасть1.Закупка) КАК Закупка,
|    СУММА(ВыдачаТовараТабличнаяЧасть1.Цена) КАК Цена,
|    СУММА(ВыдачаТовараТабличнаяЧасть1.Цена - ВыдачаТовараТабличнаяЧасть1.Закупка) КАК ПрибыльЕд,
|    СУММА((ВыдачаТовараТабличнаяЧасть1.Цена - ВыдачаТовараТабличнаяЧасть1.Закупка) * ВыдачаТовараТабличнаяЧасть1.Количество) КАК ПрибыльСум,
|    СУММА(ВыдачаТовараТабличнаяЧасть1.Количество * ВыдачаТовараТабличнаяЧасть1.Цена) КАК Сумма
|ИЗ
|    Документ.ВыдачаТовара.ТабличнаяЧасть1 КАК ВыдачаТовараТабличнаяЧасть1
|ГДЕ
|    ВыдачаТовараТабличнаяЧасть1.Ссылка.Проведен = ИСТИНА
|    И ВыдачаТовараТабличнаяЧасть1.Ссылка.Дата МЕЖДУ &НачПериода И &КонПериода
|    И ВыдачаТовараТабличнаяЧасть1.Ссылка.Склад.Наименование ПОДОБНО ""Основной Шахты""
|
|СГРУППИРОВАТЬ ПО
|    ВыдачаТовараТабличнаяЧасть1.Товар,
|    ВыдачаТовараТабличнаяЧасть1.Ссылка
|
|УПОРЯДОЧИТЬ ПО
|    Товар
|ИТОГИ ПО
|    Товар ИЕРАРХИЯ 
|
|ОБЪЕДИНИТЬ
|
|ВЫБРАТЬ
|    ВыдачаТовараТабличнаяЧасть1.Товар КАК ТоварРост,
|    ВыдачаТовараТабличнаяЧасть1.Ссылка КАК СсылкаРост,
|    СУММА(ВыдачаТовараТабличнаяЧасть1.Количество) КАК КоличествоРост,
|    СУММА(ВыдачаТовараТабличнаяЧасть1.Закупка) КАК ЗакупкаРост,
|    СУММА(ВыдачаТовараТабличнаяЧасть1.Цена) КАК ЦенаРост,
|    СУММА(ВыдачаТовараТабличнаяЧасть1.Цена - ВыдачаТовараТабличнаяЧасть1.Закупка) КАК ПрибыльЕдРост,
|    СУММА((ВыдачаТовараТабличнаяЧасть1.Цена - ВыдачаТовараТабличнаяЧасть1.Закупка) * ВыдачаТовараТабличнаяЧасть1.Количество) КАК ПрибыльСумРост,
|    СУММА(ВыдачаТовараТабличнаяЧасть1.Количество * ВыдачаТовараТабличнаяЧасть1.Цена) КАК СуммаРост
|ИЗ
|    Документ.ВыдачаТовара.ТабличнаяЧасть1 КАК ВыдачаТовараТабличнаяЧасть1
|ГДЕ
|    ВыдачаТовараТабличнаяЧасть1.Ссылка.Проведен = ИСТИНА
|    И ВыдачаТовараТабличнаяЧасть1.Ссылка.Дата МЕЖДУ &НачПериода И &КонПериода
|    И ВыдачаТовараТабличнаяЧасть1.Ссылка.Склад.Наименование ПОДОБНО ""Основной Ростов""
|
|СГРУППИРОВАТЬ ПО
|    ВыдачаТовараТабличнаяЧасть1.Товар,
|    ВыдачаТовараТабличнаяЧасть1.Ссылка
|
|УПОРЯДОЧИТЬ ПО
|    ТоварРост
|ИТОГИ ПО
|    ТоварРост ИЕРАРХИЯ" ;
   palpetrovich
 
5 - 02.06.21 - 16:15
(4) итоги, если они нужны - в конце только
ну и алиасы, кроме как в первом запросе,  типа " КАК ТоварРост" - вообще не нужны как-бы :)
   Chameleon1980
 
6 - 02.06.21 - 18:18
автору же разницу нужно. зачем объединить?
оба запроса в вт с разными алиасами и потом соединить и посчитать разницу
   prilforreal
 
7 - 03.06.21 - 08:13
(6) Так и хочу сделать, не получается правильно объединить, синтаксис хромает
   prilforreal
 
8 - 03.06.21 - 11:09
Получилось нормально сделать объединение, но заполняется только одна половина таблицы, помогите понять в чем дело

https://postimg.cc/dkYk71LR - фото выгрузки таблицы


Процедура КнопкаСформироватьНажатие(Кнопка)
    
    ТабДок = Новый ТабличныйДокумент;
    ТабДок.ТолькоПросмотр = Истина;
    Макет = ЭтотОбъект.ПолучитьМакет("Макет");
    
    Запрос = Новый Запрос;
    Запрос.Текст = 

"ВЫБРАТЬ
|    ВыдачаТовараТабличнаяЧасть1.Товар КАК Товар,
|    ВыдачаТовараТабличнаяЧасть1.Ссылка КАК Ссылка,
|    СУММА(ВыдачаТовараТабличнаяЧасть1.Количество) КАК Количество,
|    СУММА(ВыдачаТовараТабличнаяЧасть1.Закупка) КАК Закупка,
|    СУММА(ВыдачаТовараТабличнаяЧасть1.Цена) КАК Цена,
|    СУММА(ВыдачаТовараТабличнаяЧасть1.Цена - ВыдачаТовараТабличнаяЧасть1.Закупка) КАК ПрибыльЕд,
|    СУММА((ВыдачаТовараТабличнаяЧасть1.Цена - ВыдачаТовараТабличнаяЧасть1.Закупка) * ВыдачаТовараТабличнаяЧасть1.Количество) КАК ПрибыльСум,
|    СУММА(ВыдачаТовараТабличнаяЧасть1.Количество * ВыдачаТовараТабличнаяЧасть1.Цена) КАК Сумма
|ИЗ
|    Документ.ВыдачаТовара.ТабличнаяЧасть1 КАК ВыдачаТовараТабличнаяЧасть1
|ГДЕ
|    ВыдачаТовараТабличнаяЧасть1.Ссылка.Проведен = ИСТИНА
|    И ВыдачаТовараТабличнаяЧасть1.Ссылка.Дата МЕЖДУ &НачПериода И &КонПериода
|    И ВыдачаТовараТабличнаяЧасть1.Ссылка.Склад.Наименование ПОДОБНО ""Основной Шахты""
|
|СГРУППИРОВАТЬ ПО
|    ВыдачаТовараТабличнаяЧасть1.Товар,
|    ВыдачаТовараТабличнаяЧасть1.Ссылка
|
|УПОРЯДОЧИТЬ ПО
|    Товар
|ИТОГИ ПО
|    Товар ИЕРАРХИЯ
|;
|
////////////////////////////////////////////////////////////////////////////////

|ВЫБРАТЬ
|    ВыдачаТовараТабличнаяЧасть1.Товар КАК ТоварРост,
|    ВыдачаТовараТабличнаяЧасть1.Ссылка.Ссылка КАК СсылкаРост,
|    СУММА(ВыдачаТовараТабличнаяЧасть1.Количество) КАК КоличествоРост,
|    СУММА(ВыдачаТовараТабличнаяЧасть1.Закупка) КАК ЗакупкаРост,
|    СУММА(ВыдачаТовараТабличнаяЧасть1.Цена) КАК ЦенаРост,
|    СУММА(ВыдачаТовараТабличнаяЧасть1.Цена - ВыдачаТовараТабличнаяЧасть1.Закупка) КАК ПрибыльЕдРост,
|    СУММА((ВыдачаТовараТабличнаяЧасть1.Цена - ВыдачаТовараТабличнаяЧасть1.Закупка) * ВыдачаТовараТабличнаяЧасть1.Количество) КАК ПрибыльСумРост,
|    СУММА(ВыдачаТовараТабличнаяЧасть1.Количество * ВыдачаТовараТабличнаяЧасть1.Цена) КАК СуммаРост
|ИЗ
|    Документ.ВыдачаТовара.ТабличнаяЧасть1 КАК ВыдачаТовараТабличнаяЧасть1
|ГДЕ
|    ВыдачаТовараТабличнаяЧасть1.Ссылка.Дата МЕЖДУ &НачПериода И &КонПериода
|    И ВыдачаТовараТабличнаяЧасть1.Ссылка.Склад.Наименование ПОДОБНО ""Основной Ростов""
|    И ВыдачаТовараТабличнаяЧасть1.Ссылка.Проведен = ИСТИНА
|
|СГРУППИРОВАТЬ ПО
|    ВыдачаТовараТабличнаяЧасть1.Товар,
|    ВыдачаТовараТабличнаяЧасть1.Ссылка.Ссылка
|
|УПОРЯДОЧИТЬ ПО
|    ТоварРост
|ИТОГИ ПО
|    ТоварРост ИЕРАРХИЯ" ;

    
    
    
    
    Запрос.УстановитьПараметр("КонПериода", КонецДня(КонПериода));
    Запрос.УстановитьПараметр("НачПериода", НачПериода);
    
    РезультатЗапроса = Запрос.Выполнить();

    ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");
    ОбластьЗаголовок.Параметры.Нач = НачПериода;
    ОбластьЗаголовок.Параметры.Кон = КонПериода;
    ОбластьПодвал = Макет.ПолучитьОбласть("Подвал");
    ОбластьШапкаТаблицы = Макет.ПолучитьОбласть("ШапкаТаблицы");
    ОбластьДетальныхЗаписей = Макет.ПолучитьОбласть("Детали");
    
    ТабДок.Очистить();
    ТабДок.Вывести(ОбластьЗаголовок);
    ТабДок.Вывести(ОбластьШапкаТаблицы);
    ТабДок.НачатьАвтогруппировкуСтрок();
    
    ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
    //ИтогПрибыльСум=0;

    //ИтогПрибыльСумРост=0;

    
    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
        
        //ИтогПрибыльСум=ВыборкаДетальныеЗаписи.Цена-ВыборкаДетальныеЗаписи.Закупка;

        //ИтогПрибыльСумРост=ВыборкаДетальныеЗаписи.ЦенаРост-ВыборкаДетальныеЗаписи.ЗакупкаРост;    

        ОбластьДетальныхЗаписей.Параметры.Заполнить(ВыборкаДетальныеЗаписи);
        ТабДок.Вывести(ОбластьДетальныхЗаписей, ВыборкаДетальныеЗаписи.Уровень());
        
    КонецЦикла;

    ТабДок.ЗакончитьАвтогруппировкуСтрок();
    //ОбластьПодвал.Параметры.ИтогПрибыльСум=ИтогПрибыльСум;

    //ОбластьПодвал.Параметры.ИтогПрибыльСумРост=ИтогПрибыльСумРост;

    ТабДок.Вывести(ОбластьПодвал);
    ТабДок.Показать("ОтклоненияВыдачаТоваров");

    КонецПроцедуры
   prilforreal
 
9 - 03.06.21 - 11:16
В идеале нужно по очереди выгружать строки чтобы соответствовали строки товаров в одном и втором столбце
   Zmich
 
10 - 03.06.21 - 11:34
(8). Используй вложенные запросы. Вкратце, примерно так:
Запрос.Текст = "
|ВЫБРАТЬ
|  ВложенныйЗапрос.Товар КАК Товар,
|  СУММА(ВложенныйЗапрос.Количество) КАК Количество,
|  СУММА(ВложенныйЗапрос.КоличествоРост) КАК КоличествоРост
|ИЗ
|  (ВЫБРАТЬ
|    ВыдачаТовараТабличнаяЧасть1.Товар КАК Товар,
|    ВыдачаТовараТабличнаяЧасть1.Количество КАК Количество,
|    0 КАК КоличествоРост
|  ИЗ
|    Документ.ВыдачаТовара.ТабличнаяЧасть1 КАК ВыдачаТовараТабличнаяЧасть1
// добавляешь по аналогии все остальные параметры, ресурсы; добавляешь условия

|    
|  ОБЪЕДИНИТЬ ВСЕ
|
|  ВЫБРАТЬ
|    ВыдачаТовараТабличнаяЧасть2.Ссылка КАК Ссылка,
|    0 КАК Количество,
|    ВыдачаТовараТабличнаяЧасть2.Количество КАК КоличествоРост
|  ИЗ
|    Документ.ВыдачаТовара.ТабличнаяЧасть1 КАК ВыдачаТовараТабличнаяЧасть2
// ...

|  ) КАК ВложенныйЗапрос
|СГРУППИРОВАТЬ ПО
|  ВложенныйЗапрос.Товар";
   prilforreal
 
11 - 03.06.21 - 13:16
Все равно никак не пойму, почему левая таблица не заполняется, у них же все параметры разные
   prilforreal
 
12 - 15.06.21 - 13:39
В общем все получилось, вот текст запроса)

Макет = ЭтотОбъект.ПолучитьМакет("Макет");
    Запрос = Новый Запрос("ВЫБРАТЬ
                          |    ИтоговаяВыдача.ЗакупкаРостов КАК ЗакупкаРостов,
                          |    ИтоговаяВыдача.ЦенаРостов КАК ЦенаРостов,
                          |    ИтоговаяВыдача.СкладРостов КАК СкладРостов,
                          |    ИтоговаяВыдача.СуммаРостов КАК СуммаРостов,
                          |    ИтоговаяВыдача.СуммаЗакупкиРостов КАК СуммаЗакупкиРостов,
                          |    ИтоговаяВыдача.ПрибыльРостов КАК ПрибыльРостов,
                          |    ИтоговаяВыдача.ПрибыльЗаЕдиницуРостов КАК ПрибыльЗаЕдиницуРостов,
                          |    ИтоговаяВыдача.ЗакупкаШахты КАК ЗакупкаШахты,
                          |    ИтоговаяВыдача.ЦенаШахты КАК ЦенаШахты,
                          |    ИтоговаяВыдача.СкладШахты КАК СкладШахты,
                          |    ИтоговаяВыдача.СуммаШахты КАК СуммаШахты,
                          |    ИтоговаяВыдача.СуммаЗакупкиШахты КАК СуммаЗакупкиШахты,
                          |    ИтоговаяВыдача.ПрибыльШахты КАК ПрибыльШахты,
                          |    ИтоговаяВыдача.ПрибыльЗаЕдиницуШахты КАК ПрибыльЗаЕдиницуШахты,
                          |    ИтоговаяВыдача.Отклонение КАК Отклонение,
                          |    ИтоговаяВыдача.ПроцентОтклонения КАК ПроцентОтклонения,
                          |    Товары.Ссылка КАК Товар,
                          |    ИтоговаяВыдача.КоличествоШахты КАК КоличествоШахты,
                          |    ИтоговаяВыдача.КоличествоРостов КАК КоличествоРостов,
                          |    ИтоговаяВыдача.ПроцентОтклоненияЕд КАК ПроцентОтклоненияЕд,
                          |    ИтоговаяВыдача.ОтклонениеЕд КАК ОтклонениеЕд
                          |ИЗ
                          |    (ВЫБРАТЬ
                          |        ВыдачаРостов.ЗакупкаРостов КАК ЗакупкаРостов,
                          |        ВыдачаРостов.ЦенаРостов КАК ЦенаРостов,
                          |        ВыдачаРостов.СкладРостов КАК СкладРостов,
                          |        ВыдачаРостов.СуммаРостов КАК СуммаРостов,
                          |        ВыдачаРостов.СуммаЗакупкиРостов КАК СуммаЗакупкиРостов,
                          |        ВыдачаРостов.ПрибыльРостов КАК ПрибыльРостов,
                          |        ВыдачаРостов.ПрибыльЗаЕдиницуРостов КАК ПрибыльЗаЕдиницуРостов,
                          |        ВыдачаШахты.ЗакупкаШахты КАК ЗакупкаШахты,
                          |        ВыдачаШахты.ЦенаШахты КАК ЦенаШахты,
                          |        ВыдачаШахты.СкладШахты КАК СкладШахты,
                          |        ВыдачаШахты.СуммаШахты КАК СуммаШахты,
                          |        ВыдачаШахты.СуммаЗакупкиШахты КАК СуммаЗакупкиШахты,
                          |        ВыдачаШахты.ПрибыльШахты КАК ПрибыльШахты,
                          |        ВыдачаШахты.ПрибыльЗаЕдиницуШахты КАК ПрибыльЗаЕдиницуШахты,
                          |        ВЫБОР
                          |            КОГДА ВыдачаШахты.ТоварШахты ЕСТЬ NULL
                          |                ТОГДА ВыдачаРостов.ТоварРостов
                          |            ИНАЧЕ ВыдачаШахты.ТоварШахты
                          |        КОНЕЦ КАК Товар,
                          |        ВыдачаШахты.ПрибыльШахты - ВыдачаРостов.ПрибыльРостов КАК Отклонение,
                          |        (ВыдачаШахты.ПрибыльШахты - ВыдачаРостов.ПрибыльРостов) / ВыдачаРостов.ПрибыльРостов * 100 КАК ПроцентОтклонения,
                          |        ВыдачаШахты.КоличествоШахты КАК КоличествоШахты,
                          |        ВыдачаРостов.КоличествоРостов КАК КоличествоРостов,
                          |        ВыдачаШахты.ПрибыльЗаЕдиницуШахты - ВыдачаРостов.ПрибыльЗаЕдиницуРостов КАК ОтклонениеЕд,
                          |        (ВыдачаШахты.ПрибыльЗаЕдиницуШахты - ВыдачаРостов.ПрибыльЗаЕдиницуРостов) / ВыдачаРостов.ПрибыльЗаЕдиницуРостов * 100 КАК ПроцентОтклоненияЕд
                          |    ИЗ
                          |        (ВЫБРАТЬ
                          |            ВыдачаТовараТабличнаяЧасть1.Товар КАК ТоварШахты,
                          |            СУММА(ВыдачаТовараТабличнаяЧасть1.Количество) КАК КоличествоШахты,
                          |            СРЕДНЕЕ(ВыдачаТовараТабличнаяЧасть1.Закупка) КАК ЗакупкаШахты,
                          |            СРЕДНЕЕ(ВыдачаТовараТабличнаяЧасть1.Цена) КАК ЦенаШахты,
                          |            ВыдачаТовараТабличнаяЧасть1.Ссылка.Склад КАК СкладШахты,
                          |            СУММА(ВыдачаТовараТабличнаяЧасть1.Цена * ВыдачаТовараТабличнаяЧасть1.Количество) КАК СуммаШахты,
                          |            СУММА(ВыдачаТовараТабличнаяЧасть1.Закупка * ВыдачаТовараТабличнаяЧасть1.Количество) КАК СуммаЗакупкиШахты,
                          |            СУММА(ВыдачаТовараТабличнаяЧасть1.Цена * ВыдачаТовараТабличнаяЧасть1.Количество - ВыдачаТовараТабличнаяЧасть1.Закупка * ВыдачаТовараТабличнаяЧасть1.Количество) КАК ПрибыльШахты,
                          |            СУММА((ВыдачаТовараТабличнаяЧасть1.Цена * ВыдачаТовараТабличнаяЧасть1.Количество - ВыдачаТовараТабличнаяЧасть1.Закупка * ВыдачаТовараТабличнаяЧасть1.Количество) / ВыдачаТовараТабличнаяЧасть1.Количество) КАК ПрибыльЗаЕдиницуШахты
                          |        ИЗ
                          |            Документ.ВыдачаТовара.ТабличнаяЧасть1 КАК ВыдачаТовараТабличнаяЧасть1
                          |        ГДЕ
                          |            ВыдачаТовараТабличнаяЧасть1.Ссылка.Дата МЕЖДУ &НачПериода И &КонПериода
                          |            И ВыдачаТовараТабличнаяЧасть1.Ссылка.Проведен = ИСТИНА
                          |            И ВыдачаТовараТабличнаяЧасть1.Ссылка.Склад.Код = ""00001""
                          |            И НЕ ВыдачаТовараТабличнаяЧасть1.Товар В ИЕРАРХИИ (&Отстойник)
                          |        
                          |        СГРУППИРОВАТЬ ПО
                          |            ВыдачаТовараТабличнаяЧасть1.Товар,
                          |            ВыдачаТовараТабличнаяЧасть1.Ссылка.Склад) КАК ВыдачаШахты
                          |            ПОЛНОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
                          |                ВыдачаТовараТабличнаяЧасть1.Товар КАК ТоварРостов,
                          |                СУММА(ВыдачаТовараТабличнаяЧасть1.Количество) КАК КоличествоРостов,
                          |                СРЕДНЕЕ(ВыдачаТовараТабличнаяЧасть1.Закупка) КАК ЗакупкаРостов,
                          |                СРЕДНЕЕ(ВыдачаТовараТабличнаяЧасть1.Цена) КАК ЦенаРостов,
                          |                ВыдачаТовараТабличнаяЧасть1.Ссылка.Склад КАК СкладРостов,
                          |                СУММА(ВыдачаТовараТабличнаяЧасть1.Цена * ВыдачаТовараТабличнаяЧасть1.Количество) КАК СуммаРостов,
                          |                СУММА(ВыдачаТовараТабличнаяЧасть1.Закупка * ВыдачаТовараТабличнаяЧасть1.Количество) КАК СуммаЗакупкиРостов,
                          |                СУММА(ВыдачаТовараТабличнаяЧасть1.Цена * ВыдачаТовараТабличнаяЧасть1.Количество - ВыдачаТовараТабличнаяЧасть1.Закупка * ВыдачаТовараТабличнаяЧасть1.Количество) КАК ПрибыльРостов,
                          |                СУММА((ВыдачаТовараТабличнаяЧасть1.Цена * ВыдачаТовараТабличнаяЧасть1.Количество - ВыдачаТовараТабличнаяЧасть1.Закупка * ВыдачаТовараТабличнаяЧасть1.Количество) / ВыдачаТовараТабличнаяЧасть1.Количество) КАК ПрибыльЗаЕдиницуРостов
                          |            ИЗ
                          |                Документ.ВыдачаТовара.ТабличнаяЧасть1 КАК ВыдачаТовараТабличнаяЧасть1
                          |            ГДЕ
                          |                ВыдачаТовараТабличнаяЧасть1.Ссылка.Дата МЕЖДУ &НачПериода И &КонПериода
                          |                И ВыдачаТовараТабличнаяЧасть1.Ссылка.Проведен = ИСТИНА
                          |                И ВыдачаТовараТабличнаяЧасть1.Ссылка.Склад.Код = ""00008""
                          |                И НЕ ВыдачаТовараТабличнаяЧасть1.Товар В ИЕРАРХИИ (&Отстойник)
                          |            
                          |            СГРУППИРОВАТЬ ПО
                          |                ВыдачаТовараТабличнаяЧасть1.Товар,
                          |                ВыдачаТовараТабличнаяЧасть1.Ссылка.Склад) КАК ВыдачаРостов
                          |            ПО ВыдачаШахты.ТоварШахты = ВыдачаРостов.ТоварРостов) КАК ИтоговаяВыдача
                          |        ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Товары КАК Товары
                          |        ПО ИтоговаяВыдача.Товар = Товары.Ссылка
                          |"
                          +?(Товар=0,"УПОРЯДОЧИТЬ ПО Товар",?(Товар=1,"УПОРЯДОЧИТЬ ПО Отклонение УБЫВ",?(Товар=2,"УПОРЯДОЧИТЬ ПО Отклонение",?(Товар=3,"УПОРЯДОЧИТЬ ПО ОтклонениеЕд УБЫВ",?(Товар=4,"УПОРЯДОЧИТЬ ПО ОтклонениеЕд","")))))+
                          "
                          |ИТОГИ
                          |    СРЕДНЕЕ(ЗакупкаРостов),
                          |    СУММА(СуммаРостов) / СУММА(КоличествоРостов) КАК ЦенаРостов,
                          |    СУММА(СуммаРостов),
                          |    СУММА(СуммаЗакупкиРостов),
                          |    СУММА(ПрибыльРостов),
                          |    СУММА(ПрибыльРостов) / СУММА(КоличествоРостов) КАК ПрибыльЗаЕдиницуРостов,
                          |    СРЕДНЕЕ(ЗакупкаШахты),
                          |    СУММА(СуммаШахты) / СУММА(КоличествоШахты) КАК ЦенаШахты,
                          |    СУММА(СуммаШахты),
                          |    СУММА(СуммаЗакупкиШахты),
                          |    СУММА(ПрибыльШахты),
                          |    СУММА(ПрибыльШахты) / СУММА(КоличествоШахты) КАК ПрибыльЗаЕдиницуШахты,
                          |    СУММА(ПрибыльШахты) - СУММА(ПрибыльРостов) КАК Отклонение,
                          |    ВЫБОР
                          |        КОГДА СУММА(ПрибыльРостов) = 0
                          |            ТОГДА 0
                          |        ИНАЧЕ (СУММА(ПрибыльШахты) - СУММА(ПрибыльРостов)) / СУММА(ПрибыльРостов) * 100
                          |    КОНЕЦ КАК ПроцентОтклонения,
                          |    СУММА(КоличествоШахты),
                          |    СУММА(КоличествоРостов),
                          |    СУММА(ПрибыльШахты) / СУММА(КоличествоШахты) - СУММА(ПрибыльРостов) / СУММА(КоличествоРостов) КАК ОтклонениеЕд,
                          |    ВЫБОР
                          |        КОГДА СУММА(КоличествоШахты) = 0
                          |            ТОГДА 0
                          |        ИНАЧЕ ВЫБОР
                          |             КОГДА СУММА(КоличествоРостов) = 0
                          |                 ТОГДА 0
                          |                ИНАЧЕ (СУММА(ПрибыльШахты) / СУММА(КоличествоШахты) - СУММА(ПрибыльРостов) / СУММА(КоличествоРостов)) / (СУММА(ПрибыльРостов) / СУММА(КоличествоРостов)) * 100
                          |             КОНЕЦ
                          |    КОНЕЦ КАК ПроцентОтклоненияЕд
                          |ПО
                          |    Товар ИЕРАРХИЯ
                          |АВТОУПОРЯДОЧИВАНИЕ");
   polosov
 
13 - 15.06.21 - 13:42
(3) Это что, в 1С идут самые больные и немощные?
   Mikeware
 
14 - 15.06.21 - 14:02
(13) ну типа того. "тупой ленивый жадный франч"©, "закон соболя-БЖ", и т.п.
   Said_We
 
15 - 15.06.21 - 16:07
(0) Зачем два запроса?
Хотя бы так....

" И (ВыдачаТовараТабличнаяЧасть1.Ссылка.Склад.Наименование ПОДОБНО ""Основной Ростов""
     ИЛИ ВыдачаТовараТабличнаяЧасть1.Ссылка.Склад.Наименование ПОДОБНО ""Основной Шахты"")

А вообще условие "...Наименование ПОДОБНО ..." - не хорошее. Наименование склада поменяли и усё.
   Said_We
 
16 - 15.06.21 - 16:25
(10) Зачем тут вложенный запрос, если запрос всего один. Поле для группировки это признак склада = либо Ростов, либо Шахты.

Список тем форума
 
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.